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;

Explicación de cada propiedad

  1. nombre:
  2. nivelDominio:
  3. descripcion:
  4. usuarioId:

Configuración del modelo

Asociación con User

Skill.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.