El modelo ExperienciaLaboral representa la experiencia laboral de un usuario en Matchify. Incluye información como el título del puesto, nombre de la empresa, ubicación, fechas de inicio y fin, y una descripción del puesto.

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

const ExperienciaLaboral = sequelize.define('ExperienciaLaboral', {
    id: {
        type: DataTypes.INTEGER,
        autoIncrement: true,
        primaryKey: true,
        allowNull: false,
    },
    usuarioId: {
        type: DataTypes.INTEGER,
        allowNull: false,
        references: {
            model: User,
            key: 'id',
        },
    },
    tituloPuesto: {
        type: DataTypes.STRING,
        allowNull: false,
    },
    empresa: {
        type: DataTypes.STRING,
        allowNull: false,
    },
    ubicacion: {
        type: DataTypes.STRING,
        allowNull: true,
    },
    fechaInicio: {
        type: DataTypes.DATEONLY,
        allowNull: true,
    },
    fechaFin: {
        type: DataTypes.DATEONLY,
        allowNull: true,
    },
    descripcion: {
        type: DataTypes.TEXT,
        allowNull: true,
    }
}, {
    timestamps: true,
    tableName: 'experiencia_laboral',
});

ExperienciaLaboral.belongsTo(User, { foreignKey: 'usuarioId', as: 'usuario' });

export default ExperienciaLaboral;

Explicación de cada propiedad

  1. id: Identificador único de la experiencia laboral, con auto-incremento.
  2. usuarioId: Referencia al usuario que posee la experiencia laboral, asociando el registro con el modelo User.
  3. tituloPuesto: Título del puesto de trabajo. Campo obligatorio.
  4. empresa: Nombre de la empresa donde se trabajó. Campo obligatorio.
  5. ubicacion: Ubicación del puesto de trabajo, opcional.
  6. fechaInicio y fechaFin: Fechas de inicio y fin del trabajo. Opcionales.
  7. descripcion: Descripción del puesto o responsabilidades. Campo opcional.

Configuración del modelo

Asociación con User

ExperienciaLaboral.belongsTo(User, { foreignKey: 'usuarioId', as: 'usuario' });

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

Este modelo permite gestionar y almacenar el historial laboral de los usuarios en Matchify.