File

src/compliance/dto/policy.dto.ts

Index

Properties

Properties

controls
Type : CompliancePolicyControl[]
Decorators :
@IsNotEmpty()
@ApiProperty({required: true})
@IsArray()
@ValidateNested({each: true})
@Type(undefined)
description
Type : string
Decorators :
@IsNotEmpty()
@IsString()
@ApiProperty({required: true})
jurisdiction
Type : Jurisdiction
Decorators :
@IsNotEmpty()
@ApiProperty({required: true})
@IsEnum(Jurisdiction, {each: true})
name
Type : string
Decorators :
@IsNotEmpty()
@IsString()
@ApiProperty({required: true})
source
Type : CompliancePolicySource
Default value : CompliancePolicySource.INTERNAL
Decorators :
@ApiProperty()
@IsEnum(Jurisdiction, {each: true})
import { ApiProperty, PartialType } from "@nestjs/swagger";
import {
  IsArray,
  IsEnum,
  IsNotEmpty,
  IsOptional,
  IsString,
  ValidateNested,
} from "class-validator";
import { Type } from "class-transformer";
import { Jurisdiction } from "../compliance.constants";
import {
  ComplianceStatus,
  ComplianceRiskCategory,
  ComplianceRiskSeverity,
  CompliancePolicySource,
} from "../entities/compliance.types";

export class CompliancePolicyControl {
  // These are stored as ComplianceRules in the database
  id?: number;
  name: string;
  description: string;
  countermeasure: string;
  category: ComplianceRiskCategory;
  severity?: ComplianceRiskSeverity;
}

export class CompliancePolicyDto {
  @IsNotEmpty()
  @IsString()
  @ApiProperty({ required: true })
  name: string;

  @IsNotEmpty()
  @IsString()
  @ApiProperty({ required: true })
  description: string;

  @IsNotEmpty()
  @ApiProperty({ required: true })
  @IsEnum(Jurisdiction, { each: true })
  jurisdiction: Jurisdiction;

  @IsNotEmpty()
  @ApiProperty({ required: true })
  @IsArray()
  @ValidateNested({ each: true })
  @Type(() => CompliancePolicyControl)
  controls: CompliancePolicyControl[];

  @ApiProperty()
  @IsEnum(Jurisdiction, { each: true })
  source: CompliancePolicySource = CompliancePolicySource.INTERNAL;
}

export class UpdateCompliancePolicyDto extends PartialType(
  CompliancePolicyDto,
) {
  @IsEnum(ComplianceStatus, { each: true })
  @ApiProperty({ required: false })
  @IsOptional()
  status?: string;
}

results matching ""

    No results matching ""