All files / libs/data-capture/record-models/core/src/lib customObjectDefinitions.controller.ts

100% Statements 45/45
58.33% Branches 7/12
100% Functions 3/3
100% Lines 45/45

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 461x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x  
import { Controller, Get, Logger, Param, UseGuards } from '@nestjs/common';
import { ApiBearerAuth, ApiTags } from '@nestjs/swagger';
 
import { Company, type CustomObjectDefinition } from '@amalia/core/models';
import { AmaliaAuthGuard, CheckPolicies, CurrentUserCompany, PoliciesGuard } from '@amalia/kernel/auth/core';
import { canModifyPlans, canViewData } from '@amalia/kernel/auth/shared';
 
import { CustomObjectDefinitionsService } from './customObjectDefinitions.service';
 
/**
 * Controller to manage object definitions.
 */
@UseGuards(AmaliaAuthGuard, PoliciesGuard)
@ApiBearerAuth()
@ApiTags('objects')
@Controller('objects-definitions')
export class CustomObjectDefinitionsController {
  private readonly logger = new Logger(CustomObjectDefinitionsController.name);
 
  public constructor(private readonly customObjectDefinitionsService: CustomObjectDefinitionsService) {}
 
  /**
   * Paginate object definitions for a company.
   * @param company company
   */
  @Get()
  @CheckPolicies((ability) => canViewData(ability) || canModifyPlans(ability))
  public async getAll(@CurrentUserCompany() company: Company): Promise<CustomObjectDefinition[]> {
    return this.customObjectDefinitionsService.findAll(company);
  }
 
  /**
   * Get one object definition given a machineName.
   * @param company company
   */
  @Get(':customObjectDefinitionMachineName')
  @CheckPolicies((ability) => canViewData(ability) || canModifyPlans(ability))
  public async getOne(
    @CurrentUserCompany() company: Company,
    @Param('customObjectDefinitionMachineName')
    customObjectDefinitionMachineName: CustomObjectDefinition['machineName'],
  ): Promise<CustomObjectDefinition | null> {
    return this.customObjectDefinitionsService.findByMachineName(company, customObjectDefinitionMachineName);
  }
}