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(); }