El modelo CandidatoOferta gestiona la relación entre los candidatos y las ofertas de empleo en Matchify, permitiendo almacenar el estado de la aplicación de cada candidato a una oferta específica.
import { DataTypes } from 'sequelize';
import sequelize from '../config/database.js';
import OfertaEmpleo from './OfertaEmpleo.js';
import User from './User.js';
const CandidatoOferta = sequelize.define('CandidatoOferta', {
estado: {
type: DataTypes.ENUM('pendiente', 'en proceso', 'aceptada', 'rechazada'),
allowNull: false,
},
usuarioId: {
type: DataTypes.INTEGER,
allowNull: false,
references: {
model: User,
key: 'id',
},
onUpdate: 'CASCADE',
onDelete: 'CASCADE',
},
ofertaEmpleoId: {
type: DataTypes.INTEGER,
allowNull: false,
references: {
model: OfertaEmpleo,
key: 'id',
},
onUpdate: 'CASCADE',
onDelete: 'CASCADE',
},
}, {
timestamps: true,
tableName: 'candidato_oferta',
});
CandidatoOferta.belongsTo(User, { foreignKey: 'usuarioId', as: 'candidato' });
CandidatoOferta.belongsTo(OfertaEmpleo, { foreignKey: 'ofertaEmpleoId', as: 'ofertaEmpleo' });
export default CandidatoOferta;
estado: Estado de la aplicación del candidato, con opciones pendiente, en proceso, aceptada y rechazada. Campo obligatorio.usuarioId: Referencia al usuario que aplica a la oferta, estableciendo una relación con el modelo User.ofertaEmpleoId: Referencia a la oferta de empleo a la que el usuario aplica, estableciendo una relación con el modelo OfertaEmpleo.tableName: 'candidato_oferta': Define el nombre de la tabla en la base de datos como candidato_oferta.timestamps: true: Activa los campos createdAt y updatedAt para gestionar las fechas de creación y actualización.CandidatoOferta.belongsTo(User, { foreignKey: 'usuarioId', as: 'candidato' });
CandidatoOferta.belongsTo(OfertaEmpleo, { foreignKey: 'ofertaEmpleoId', as: 'ofertaEmpleo' });
Establece que cada CandidatoOferta pertenece tanto a un Usuario (como candidato) como a una OfertaEmpleo, permitiendo rastrear el progreso de la aplicación de cada candidato a ofertas específicas en Matchify.
Este modelo facilita la administración de aplicaciones de candidatos a ofertas laborales, permitiendo actualizar y seguir el estado de cada aplicación en la plataforma.