import { DataTypes, Model, InferAttributes, InferCreationAttributes, CreationOptional, } from 'sequelize'; import { sequelize } from './index'; import Role from './roles'; import Permission from './permissions'; import { RolePermissionInterface } from '../shared/interfaces/rolePermission.interface'; class RolePermission extends Model, InferCreationAttributes> implements RolePermissionInterface { declare id: CreationOptional; declare role_id: number; declare permission_id: number; } RolePermission.init( { id: { type: DataTypes.INTEGER.UNSIGNED, autoIncrement: true, primaryKey: true, unique: true, }, role_id: { type: DataTypes.INTEGER.UNSIGNED, allowNull: false, references: { model: Role, key: 'id', }, onDelete: 'CASCADE', }, permission_id: { type: DataTypes.INTEGER.UNSIGNED, allowNull: false, references: { model: Permission, key: 'id', }, onDelete: 'CASCADE', }, }, { sequelize, tableName: 'role_permission', underscored: true, freezeTableName: true, timestamps: true, createdAt: 'created_at', updatedAt: 'updated_at', } ); RolePermission.belongsTo(Role, { foreignKey: 'role_id' }); RolePermission.belongsTo(Permission, { foreignKey: 'permission_id' }); export default RolePermission