El modelo Idioma representa los idiomas conocidos por un usuario en Matchify, indicando el nombre del idioma y el nivel de dominio. Este modelo está asociado al modelo User a través de usuarioId.

import { DataTypes } from 'sequelize';
import sequelize from '../config/database.js';
import Usuario from './User.js';

const Idioma = sequelize.define('Idioma', {
    nombre: {
        type: DataTypes.STRING,
        allowNull: false,
    },
    nivelDominio: {
        type: DataTypes.ENUM('básico', 'intermedio', 'avanzado', 'experto'),
        allowNull: false,
    },
    usuarioId: {
        type: DataTypes.INTEGER,
        references: {
            model: Usuario,
            key: 'id',
        },
        onUpdate: 'CASCADE',
        onDelete: 'CASCADE',
    },
}, {
    tableName: 'idiomas',
    timestamps: true,
});

Idioma.belongsTo(Usuario, { foreignKey: 'usuarioId', as: 'usuario' });

export default Idioma;

Explicación de cada propiedad

  1. nombre: Nombre del idioma. Campo obligatorio.
  2. nivelDominio: Nivel de dominio del idioma, con opciones básico, intermedio, avanzado, y experto. Campo obligatorio.
  3. usuarioId: Referencia al usuario que habla el idioma, asociando el idioma con el modelo User.

Configuración del modelo

Asociación con User

Idioma.belongsTo(Usuario, { foreignKey: 'usuarioId', as: 'usuario' });

Establece que cada Idioma pertenece a un Usuario, utilizando usuarioId como clave foránea para vincular cada idioma con el usuario correspondiente.

Este modelo permite gestionar los idiomas y el nivel de dominio para cada usuario en Matchify.