El modelo PerfilUsuario representa el perfil extendido de un usuario en Matchify, permitiendo almacenar información adicional como el resumen profesional, ubicación y fecha de última actualización. Este modelo está asociado con el modelo User a través de usuarioId.
import { DataTypes } from 'sequelize';
import sequelize from '../config/database.js';
import User from './User.js';
const PerfilUsuario = sequelize.define('PerfilUsuario', {
resumenProfesional: {
type: DataTypes.TEXT,
allowNull: true,
},
ubicacion: {
type: DataTypes.STRING,
allowNull: true,
},
fechaUltimaActualizacion: {
type: DataTypes.DATE,
allowNull: true,
},
usuarioId: {
type: DataTypes.INTEGER,
references: {
model: User,
key: 'id',
},
onUpdate: 'CASCADE',
onDelete: 'CASCADE',
},
}, {
tableName: 'perfil_usuarios',
timestamps: true,
});
PerfilUsuario.belongsTo(User, { foreignKey: 'usuarioId', as: 'usuario' });
export default PerfilUsuario;
resumenProfesional:
type: DataTypes.TEXT: Campo para una descripción profesional detallada.allowNull: true: Campo opcional.ubicacion:
type: DataTypes.STRING: Almacena la ubicación del usuario.allowNull: true: Campo opcional.fechaUltimaActualizacion:
type: DataTypes.DATE: Guarda la fecha de última actualización del perfil.allowNull: true: Campo opcional.usuarioId:
type: DataTypes.INTEGER: Referencia al usuario propietario del perfil.references: { model: User, key: 'id' }: Establece una relación con User usando su clave id.onUpdate: 'CASCADE' y onDelete: 'CASCADE': Actualiza o elimina el perfil en cascada cuando el usuario asociado cambia o se elimina.tableName: 'perfil_usuarios': Define el nombre de la tabla en la base de datos como perfil_usuarios.timestamps: true: Activa la creación de createdAt y updatedAt.UserPerfilUsuario.belongsTo(User, { foreignKey: 'usuarioId', as: 'usuario' });
Establece la relación de pertenencia entre PerfilUsuario y User, donde usuarioId actúa como clave foránea para vincular el perfil al usuario correspondiente.
Este modelo permite administrar información de perfil adicional de los usuarios en Matchify.