Browse Source

Harden validation of market data in activities import

pull/7672/head
Thomas Kaul 1 week ago
parent
commit
0956aa6bd1
  1. 10
      libs/common/src/lib/dtos/create-asset-profile-with-market-data.dto.ts
  2. 2
      libs/common/src/lib/dtos/index.ts
  3. 9
      libs/common/src/lib/dtos/market-data.dto.ts

10
libs/common/src/lib/dtos/create-asset-profile-with-market-data.dto.ts

@ -1,9 +1,9 @@
import { MarketData } from '@ghostfolio/common/interfaces';
import { DataSource } from '@prisma/client'; import { DataSource } from '@prisma/client';
import { IsArray, IsIn, IsOptional } from 'class-validator'; import { Type } from 'class-transformer';
import { IsArray, IsIn, IsOptional, ValidateNested } from 'class-validator';
import { CreateAssetProfileDto } from './create-asset-profile.dto'; import { CreateAssetProfileDto } from './create-asset-profile.dto';
import { MarketDataDto } from './market-data.dto';
export class CreateAssetProfileWithMarketDataDto extends CreateAssetProfileDto { export class CreateAssetProfileWithMarketDataDto extends CreateAssetProfileDto {
@IsIn([DataSource.MANUAL], { @IsIn([DataSource.MANUAL], {
@ -13,5 +13,7 @@ export class CreateAssetProfileWithMarketDataDto extends CreateAssetProfileDto {
@IsArray() @IsArray()
@IsOptional() @IsOptional()
marketData?: MarketData[]; @Type(() => MarketDataDto)
@ValidateNested({ each: true })
marketData?: MarketDataDto[];
} }

2
libs/common/src/lib/dtos/index.ts

@ -13,6 +13,7 @@ import { CreateTagDto } from './create-tag.dto';
import { CreateWatchlistItemDto } from './create-watchlist-item.dto'; import { CreateWatchlistItemDto } from './create-watchlist-item.dto';
import { DeleteOwnUserDto } from './delete-own-user.dto'; import { DeleteOwnUserDto } from './delete-own-user.dto';
import { HoldingDto } from './holding.dto'; import { HoldingDto } from './holding.dto';
import { MarketDataDto } from './market-data.dto';
import { MergeAssetProfileDto } from './merge-asset-profile.dto'; import { MergeAssetProfileDto } from './merge-asset-profile.dto';
import { ScraperConfigurationDto } from './scraper-configuration.dto'; import { ScraperConfigurationDto } from './scraper-configuration.dto';
import { SectorDto } from './sector.dto'; import { SectorDto } from './sector.dto';
@ -46,6 +47,7 @@ export {
CreateWatchlistItemDto, CreateWatchlistItemDto,
DeleteOwnUserDto, DeleteOwnUserDto,
HoldingDto, HoldingDto,
MarketDataDto,
MergeAssetProfileDto, MergeAssetProfileDto,
ScraperConfigurationDto, ScraperConfigurationDto,
SectorDto, SectorDto,

9
libs/common/src/lib/dtos/market-data.dto.ts

@ -0,0 +1,9 @@
import { IsISO8601, IsNumber } from 'class-validator';
export class MarketDataDto {
@IsISO8601()
date: string;
@IsNumber()
marketPrice: number;
}
Loading…
Cancel
Save