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 { RoleObjectPermission } = require('./role-object-permission.model'); const { RoleFieldPermission } = require('./role-field-permission.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', }, }, objectPermissions: { relation: BaseModel.HasManyRelation, modelClass: RoleObjectPermission, join: { from: 'roles.id', to: 'role_object_permissions.roleId', }, }, fieldPermissions: { relation: BaseModel.HasManyRelation, modelClass: RoleFieldPermission, join: { from: 'roles.id', to: 'role_field_permissions.roleId', }, }, }; } }