44 lines
1.4 KiB
JavaScript
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();
|
|
}
|