El modelo EmpresaUsuario representa la relación entre una empresa y un usuario en Matchify, asociando también un rol específico para cada usuario dentro de la empresa.

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

const EmpresaUsuario = sequelize.define('EmpresaUsuario', {
    empresaId: {
        type: DataTypes.INTEGER,
        references: {
            model: Empresa,
            key: 'id',
        },
        onUpdate: 'CASCADE',
        onDelete: 'CASCADE',
    },
    usuarioId: {
        type: DataTypes.INTEGER,
        references: {
            model: User,
            key: 'id',
        },
        onUpdate: 'CASCADE',
        onDelete: 'CASCADE',
    },
    rolId: {
        type: DataTypes.INTEGER,
        references: {
            model: Rol,
            key: 'id',
        },
        onUpdate: 'CASCADE',
        onDelete: 'CASCADE',
    },
}, {
    tableName: 'empresa_usuario',
});

EmpresaUsuario.belongsTo(Empresa, { foreignKey: 'empresaId', as: 'empresa' });
EmpresaUsuario.belongsTo(User, { foreignKey: 'usuarioId', as: 'usuario' });
EmpresaUsuario.belongsTo(Rol, { foreignKey: 'rolId', as: 'rol' });

export default EmpresaUsuario;

Explicación de cada propiedad

  1. empresaId: Identificador de la empresa, estableciendo una relación con el modelo Empresa.
  2. usuarioId: Identificador del usuario asociado a la empresa, estableciendo una relación con el modelo User.
  3. rolId: Identificador del rol del usuario dentro de la empresa, estableciendo una relación con el modelo Rol.

Configuración del modelo

Asociaciones

EmpresaUsuario.belongsTo(Empresa, { foreignKey: 'empresaId', as: 'empresa' });
EmpresaUsuario.belongsTo(User, { foreignKey: 'usuarioId', as: 'usuario' });
EmpresaUsuario.belongsTo(Rol, { foreignKey: 'rolId', as: 'rol' });

Cada EmpresaUsuario está relacionado con:

Este modelo permite gestionar las relaciones entre usuarios y empresas en Matchify, proporcionando roles específicos dentro de cada empresa.