@ibernoh/arkanjs
Version:
Backend API generator with RBAC, CLI scaffolding, and built-in structure. Just install and run.
45 lines (40 loc) • 1.48 kB
JavaScript
const { UserModel } = require("./userModel");
const { RoleModel } = require("./roleModel");
const { PermissionModel } = require("./permissionModel");
const { RoleUserModel } = require("./roleUserModel");
const { RolePermissionModel } = require("./rolePermissionModel");
// User - Role (Many-to-Many)
UserModel.belongsToMany(RoleModel, {
through: RoleUserModel,
foreignKey: "user_id",
otherKey: "role_id",
as: "roles"
});
RoleModel.belongsToMany(UserModel, {
through: RoleUserModel,
foreignKey: "role_id",
otherKey: "user_id",
as: "users"
});
// Role - Permission (Many-to-Many)
RoleModel.belongsToMany(PermissionModel, {
through: RolePermissionModel,
foreignKey: "role_id",
otherKey: "permission_id",
as: "permissions"
});
PermissionModel.belongsToMany(RoleModel, {
through: RolePermissionModel,
foreignKey: "permission_id",
otherKey: "role_id",
as: "roles"
});
// Explicit join table associations
RoleUserModel.belongsTo(UserModel, { foreignKey: "user_id" });
UserModel.hasMany(RoleUserModel, { foreignKey: "user_id" });
RoleUserModel.belongsTo(RoleModel, { foreignKey: "role_id" });
RoleModel.hasMany(RoleUserModel, { foreignKey: "role_id" });
RolePermissionModel.belongsTo(RoleModel, { foreignKey: "role_id" });
RoleModel.hasMany(RolePermissionModel, { foreignKey: "role_id" });
RolePermissionModel.belongsTo(PermissionModel, { foreignKey: "permission_id" });
PermissionModel.hasMany(RolePermissionModel, { foreignKey: "permission_id" });