El modelo Skill representa una habilidad que puede tener un usuario en Matchify. Está relacionado con el modelo User a través de usuarioId, y cada habilidad tiene atributos como nombre, nivelDominio, y una descripcion.
import { DataTypes } from 'sequelize';
import sequelize from '../config/database.js'; // Ajusta la ruta según la ubicación de database.js
import Usuario from './User.js'; // Asegúrate de que la ruta sea correcta
const Skill = sequelize.define('Skill', {
nombre: {
type: DataTypes.STRING,
allowNull: false,
},
nivelDominio: {
type: DataTypes.ENUM('básico', 'intermedio', 'avanzado', 'experto'),
allowNull: false,
},
descripcion: {
type: DataTypes.TEXT,
allowNull: true,
},
usuarioId: {
type: DataTypes.INTEGER,
references: {
model: Usuario,
key: 'id',
},
onUpdate: 'CASCADE',
onDelete: 'CASCADE',
},
}, {
tableName: 'Skills',
timestamps: true,
});
// Definir la asociación con Usuario
Skill.belongsTo(Usuario, { foreignKey: 'usuarioId', as: 'usuario' });
export default Skill;
nombre:
type: DataTypes.STRING: Define el nombre de la habilidad como una cadena de texto.allowNull: false: Este campo es obligatorio.nivelDominio:
type: DataTypes.ENUM('básico', 'intermedio', 'avanzado', 'experto'): Define el nivel de dominio como uno de los valores específicos: básico, intermedio, avanzado, o experto.allowNull: false: Este campo es obligatorio.descripcion:
type: DataTypes.TEXT: Define una descripción más larga sobre la habilidad, si es necesario.allowNull: true: Este campo es opcional.usuarioId:
type: DataTypes.INTEGER: Representa la referencia al usuario que posee la habilidad.references: { model: Usuario, key: 'id' }: Define una relación con el modelo User, usando id como clave.onUpdate: 'CASCADE' y onDelete: 'CASCADE': Configura una relación en la que los cambios o eliminaciones en User se reflejan en Skill.tableName: 'Skills': Define el nombre de la tabla en la base de datos como Skills.timestamps: true: Activa las marcas de tiempo automáticas para createdAt y updatedAt.UserSkill.belongsTo(Usuario, { foreignKey: 'usuarioId', as: 'usuario' });
Define que cada Skill pertenece a un Usuario, utilizando usuarioId como clave foránea y permitiendo el acceso al usuario correspondiente.
Este modelo permite gestionar las habilidades de los usuarios y sus niveles de dominio en Matchify.