moex-vibe/apps/backend/src/modules/portfolio/dto/position-with-price.dto.ts

100 lines
2.7 KiB
TypeScript

import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
export class PositionWithPriceDto {
@ApiProperty()
id!: number;
@ApiProperty({ example: 'SBER' })
secid!: string;
@ApiPropertyOptional({ type: String, nullable: true })
shortName!: string | null;
@ApiProperty({ example: 'share', enum: ['share', 'bond'] })
type!: string;
@ApiProperty({ example: 10 })
quantity!: number;
@ApiPropertyOptional({ type: Number, nullable: true })
buyPrice!: number | null;
@ApiPropertyOptional({ type: String, nullable: true })
buyDate!: string | null;
@ApiPropertyOptional({ type: String, nullable: true })
notes!: string | null;
@ApiPropertyOptional({ type: String, isArray: true, nullable: true })
tags!: string[] | null;
@ApiPropertyOptional({ type: Number, nullable: true })
currentPrice!: number | null;
@ApiPropertyOptional({ type: Number, nullable: true })
totalCost!: number | null;
@ApiPropertyOptional({ type: Number, nullable: true })
currentValue!: number | null;
@ApiProperty()
weightPercent!: number;
@ApiPropertyOptional({ type: Number, nullable: true })
pnl!: number | null;
@ApiPropertyOptional({ type: Number, nullable: true })
pnlPercent!: number | null;
@ApiPropertyOptional({ type: Number, nullable: true })
dividendIncome!: number | null;
@ApiPropertyOptional({ type: Number, nullable: true })
totalReturn!: number | null;
@ApiPropertyOptional({ type: Number, nullable: true })
totalReturnPercent!: number | null;
@ApiPropertyOptional({ type: Number, nullable: true })
change?: number | null;
@ApiPropertyOptional({ type: Number, nullable: true })
changePercent?: number | null;
@ApiPropertyOptional({ type: Number, nullable: true })
yieldToMaturity?: number | null;
@ApiPropertyOptional({ type: Number, nullable: true })
duration?: number | null;
@ApiPropertyOptional({ type: Number, nullable: true })
couponValue?: number | null;
@ApiPropertyOptional({ type: Number, nullable: true })
couponPercent?: number | null;
@ApiPropertyOptional({ type: String, nullable: true })
nextCouponDate?: string | null;
@ApiPropertyOptional({ type: String, nullable: true })
matDate?: string | null;
@ApiPropertyOptional({ type: Number, nullable: true })
accruedInt?: number | null;
@ApiPropertyOptional({ type: Number, nullable: true })
bid?: number | null;
@ApiPropertyOptional({ type: Number, nullable: true })
offer?: number | null;
@ApiPropertyOptional({ type: Number, nullable: true })
couponPeriod?: number | null;
@ApiPropertyOptional({ type: String, nullable: true })
bondType?: string | null;
@ApiPropertyOptional({ type: String, nullable: true })
offerDate?: string | null;
}