Files
lcbp3.np-dms.work/backend/src/db/sequelize.js
2025-09-21 20:29:15 +07:00

44 lines
1.4 KiB
JavaScript

import { Sequelize } from 'sequelize';
import { config } from '../config.js';
export const sequelize = new Sequelize(
config.DB.NAME,
config.DB.USER,
config.DB.PASS,
{
host: config.DB.HOST,
port: config.DB.PORT,
dialect: 'mariadb',
logging: false,
dialectOptions: { timezone: 'Z' },
define: {
freezeTableName: true,
underscored: false,
timestamps: false,
},
pool: { max: 10, min: 0, idle: 10000 },
}
);
import UserModel from './models/User.js';
import RoleModel from './models/Role.js';
import PermissionModel from './models/Permission.js';
import UserRoleModel from './models/UserRole.js';
import RolePermissionModel from './models/RolePermission.js';
export const User = UserModel(sequelize);
export const Role = RoleModel(sequelize);
export const Permission = PermissionModel(sequelize);
export const UserRole = UserRoleModel(sequelize);
export const RolePermission = RolePermissionModel(sequelize);
User.belongsToMany(Role, { through: UserRole, foreignKey: 'user_id', otherKey: 'role_id' });
Role.belongsToMany(User, { through: UserRole, foreignKey: 'role_id', otherKey: 'user_id' });
Role.belongsToMany(Permission, { through: RolePermission, foreignKey: 'role_id', otherKey: 'permission_id' });
Permission.belongsToMany(Role, { through: RolePermission, foreignKey: 'permission_id', otherKey: 'role_id' });
export async function dbReady() {
await sequelize.authenticate();
}