diff --git a/CHANGELOG.md b/CHANGELOG.md index 7cf340489..efd45c3f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Hardened the validation of the countries in the asset profile endpoints - Hardened the validation of the holdings in the asset profile endpoints +- Hardened the validation of the sectors in the asset profile endpoints - Rounded the value of the _Fear & Greed Index_ (market mood) in the twitter bot service - Set the change detection strategy to `OnPush` in the _X-ray_ page diff --git a/libs/common/src/lib/dtos/country.dto.ts b/libs/common/src/lib/dtos/country.dto.ts index 663aa1ac6..7fc8c38ab 100644 --- a/libs/common/src/lib/dtos/country.dto.ts +++ b/libs/common/src/lib/dtos/country.dto.ts @@ -5,7 +5,7 @@ export class CountryDto { code: string; @IsNumber() - @Min(0) @Max(1) + @Min(0) weight: number; } diff --git a/libs/common/src/lib/dtos/create-asset-profile.dto.ts b/libs/common/src/lib/dtos/create-asset-profile.dto.ts index 89d56a6bb..17a9d12b9 100644 --- a/libs/common/src/lib/dtos/create-asset-profile.dto.ts +++ b/libs/common/src/lib/dtos/create-asset-profile.dto.ts @@ -14,6 +14,7 @@ import { import { CountryDto } from './country.dto'; import { HoldingDto } from './holding.dto'; +import { SectorDto } from './sector.dto'; export class CreateAssetProfileDto { @IsEnum(AssetClass) @@ -76,6 +77,8 @@ export class CreateAssetProfileDto { @IsArray() @IsOptional() + @Type(() => SectorDto) + @ValidateNested({ each: true }) sectors?: Prisma.InputJsonArray; @IsString() diff --git a/libs/common/src/lib/dtos/index.ts b/libs/common/src/lib/dtos/index.ts index bd4d405c7..c531313a6 100644 --- a/libs/common/src/lib/dtos/index.ts +++ b/libs/common/src/lib/dtos/index.ts @@ -12,6 +12,7 @@ import { CreateTagDto } from './create-tag.dto'; import { CreateWatchlistItemDto } from './create-watchlist-item.dto'; import { DeleteOwnUserDto } from './delete-own-user.dto'; import { HoldingDto } from './holding.dto'; +import { SectorDto } from './sector.dto'; import { TransferBalanceDto } from './transfer-balance.dto'; import { UpdateAccessDto } from './update-access.dto'; import { UpdateAccountDto } from './update-account.dto'; @@ -41,6 +42,7 @@ export { CreateWatchlistItemDto, DeleteOwnUserDto, HoldingDto, + SectorDto, TransferBalanceDto, UpdateAccessDto, UpdateAccountDto, diff --git a/libs/common/src/lib/dtos/sector.dto.ts b/libs/common/src/lib/dtos/sector.dto.ts new file mode 100644 index 000000000..e4655cb73 --- /dev/null +++ b/libs/common/src/lib/dtos/sector.dto.ts @@ -0,0 +1,11 @@ +import { IsNumber, IsString, Max, Min } from 'class-validator'; + +export class SectorDto { + @IsString() + name: string; + + @IsNumber() + @Max(1) + @Min(0) + weight: number; +} diff --git a/libs/common/src/lib/dtos/update-asset-profile.dto.ts b/libs/common/src/lib/dtos/update-asset-profile.dto.ts index 8b7301cc7..2204fd0ab 100644 --- a/libs/common/src/lib/dtos/update-asset-profile.dto.ts +++ b/libs/common/src/lib/dtos/update-asset-profile.dto.ts @@ -21,6 +21,7 @@ import { import { CountryDto } from './country.dto'; import { HoldingDto } from './holding.dto'; +import { SectorDto } from './sector.dto'; export class UpdateAssetProfileDto { @IsEnum(AssetClass) @@ -73,6 +74,8 @@ export class UpdateAssetProfileDto { @IsArray() @IsOptional() + @Type(() => SectorDto) + @ValidateNested({ each: true }) sectors?: Prisma.InputJsonArray; @IsOptional()