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;
nombre: Nombre del idioma. Campo obligatorio.nivelDominio: Nivel de dominio del idioma, con opciones básico, intermedio, avanzado, y experto. Campo obligatorio.usuarioId: Referencia al usuario que habla el idioma, asociando el idioma con el modelo User.tableName: 'idiomas': Define el nombre de la tabla en la base de datos como idiomas.timestamps: true: Habilita los campos createdAt y updatedAt para gestionar fechas de creación y actualización.UserIdioma.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.