import { IGroup, IGroupPropertiesConfig, defaultGroupPropertiesConfig } from '~src/models/user/group'; // type Identity = number | string; export interface IRoleBase { id: number; name: string; permission: P; groupId: number | null; group: IGroup | null; objId: Id | null; obj: T | null; } export interface IRoleBaseCreateInput { name: string; permission: P; groupId: number; objId: Id; } export interface IRoleBaseUpdateInput { id: number; name?: string; permission?: P; groupId?: number; objId?: Id; } export interface IRoleBaseProperties { id?: boolean; name?: boolean; permission?: boolean; groupId?: boolean; objId?: boolean; } export interface IRoleBaseRelationProperties { group?: IGroupPropertiesConfig; obj?: TPC; permission?: PPC; } export interface IRoleBasePropertiesConfig { properties: IRoleBaseProperties; relationProperties?: IRoleBaseRelationProperties; } export interface IRoleBaseDeleteInput { id: number; } export function defaultRoleBaseProperties

(): IRoleBaseProperties { return { id: true, name: true, permission: true, groupId: true, objId: true, }; } export function defaultRoleBaseRelationProperties( defaultPermissionPropertiesConfig: () => PPC): IRoleBaseRelationProperties { return { group: defaultGroupPropertiesConfig(), permission: defaultPermissionPropertiesConfig(), }; } export function defaultRolePropertiesConfig( defaultPermissionPropertiesConfig: () => PPC): IRoleBasePropertiesConfig { return { properties: defaultRoleBaseProperties(), relationProperties: defaultRoleBaseRelationProperties(defaultPermissionPropertiesConfig), }; }