mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-16 21:00:31 +00:00
feat(nestjs): migrate to NestJS
This commit is contained in:
51
packages/server/src/modules/Roles/queries/GetRole.service.ts
Normal file
51
packages/server/src/modules/Roles/queries/GetRole.service.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
import { AbilitySchema } from '../AbilitySchema';
|
||||
import { RoleTransformer } from './RoleTransformer';
|
||||
import { Role } from '../models/Role.model';
|
||||
import { TransformerInjectable } from '../../Transformer/TransformerInjectable.service';
|
||||
import { ServiceError } from '../../Items/ServiceError';
|
||||
import { Inject, Injectable } from '@nestjs/common';
|
||||
import { CommandRolePermissionDto } from '../dtos/Role.dto';
|
||||
import { ERRORS } from '../constants';
|
||||
import { getInvalidPermissions } from '../utils';
|
||||
import { TenantModelProxy } from '@/modules/System/models/TenantBaseModel';
|
||||
|
||||
@Injectable()
|
||||
export class GetRoleService {
|
||||
constructor(
|
||||
private readonly transformer: TransformerInjectable,
|
||||
|
||||
@Inject(Role.name)
|
||||
private readonly roleModel: TenantModelProxy<typeof Role>,
|
||||
) {}
|
||||
|
||||
/**
|
||||
* Retrieve the given role metadata.
|
||||
* @param {number} roleId - Role id.
|
||||
* @returns {Promise<IRole>}
|
||||
*/
|
||||
public async getRole(roleId: number): Promise<Role> {
|
||||
const role = await this.roleModel()
|
||||
.query()
|
||||
.findById(roleId)
|
||||
.withGraphFetched('permissions')
|
||||
.throwIfNotFound();
|
||||
|
||||
return this.transformer.transform(role, new RoleTransformer());
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates the invalid given permissions.
|
||||
* @param {ICreateRolePermissionDTO[]} permissions -
|
||||
*/
|
||||
public validateInvalidPermissions = (
|
||||
permissions: CommandRolePermissionDto[],
|
||||
) => {
|
||||
const invalidPerms = getInvalidPermissions(AbilitySchema, permissions);
|
||||
|
||||
if (invalidPerms.length > 0) {
|
||||
throw new ServiceError(ERRORS.INVALIDATE_PERMISSIONS, null, {
|
||||
invalidPermissions: invalidPerms,
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user