76 lines
1.8 KiB
TypeScript
76 lines
1.8 KiB
TypeScript
import { BaseModel } from './base.model';
|
|
|
|
export class Role extends BaseModel {
|
|
static tableName = 'roles';
|
|
|
|
id: string;
|
|
name: string;
|
|
guardName: string;
|
|
description?: string;
|
|
createdAt: Date;
|
|
updatedAt: Date;
|
|
|
|
static get jsonSchema() {
|
|
return {
|
|
type: 'object',
|
|
required: ['name'],
|
|
properties: {
|
|
id: { type: 'string' },
|
|
name: { type: 'string' },
|
|
guardName: { type: 'string' },
|
|
description: { type: 'string' },
|
|
},
|
|
};
|
|
}
|
|
|
|
static get relationMappings() {
|
|
const { RolePermission } = require('./role-permission.model');
|
|
const { Permission } = require('./permission.model');
|
|
const { User } = require('./user.model');
|
|
const { RoleRule } = require('./role-rule.model');
|
|
|
|
return {
|
|
rolePermissions: {
|
|
relation: BaseModel.HasManyRelation,
|
|
modelClass: RolePermission,
|
|
join: {
|
|
from: 'roles.id',
|
|
to: 'role_permissions.roleId',
|
|
},
|
|
},
|
|
permissions: {
|
|
relation: BaseModel.ManyToManyRelation,
|
|
modelClass: Permission,
|
|
join: {
|
|
from: 'roles.id',
|
|
through: {
|
|
from: 'role_permissions.roleId',
|
|
to: 'role_permissions.permissionId',
|
|
},
|
|
to: 'permissions.id',
|
|
},
|
|
},
|
|
users: {
|
|
relation: BaseModel.ManyToManyRelation,
|
|
modelClass: User,
|
|
join: {
|
|
from: 'roles.id',
|
|
through: {
|
|
from: 'user_roles.roleId',
|
|
to: 'user_roles.userId',
|
|
},
|
|
to: 'users.id',
|
|
},
|
|
},
|
|
roleRules: {
|
|
relation: BaseModel.HasManyRelation,
|
|
modelClass: RoleRule,
|
|
join: {
|
|
from: 'roles.id',
|
|
to: 'role_rules.roleId',
|
|
},
|
|
},
|
|
};
|
|
}
|
|
}
|