Browse Source

#3865 Add 'createdAt' field to PortfolioSnapshot and PublicPortfolioResponse.

Updated various models, interfaces, and functions to include a 'createdAt' field, providing timestamp information for portfolio data.
pull/3965/head
Verbindolai 10 months ago
parent
commit
1fae5b94ee
  1. 1
      apps/api/src/app/endpoints/public/public.controller.ts
  2. 1
      apps/api/src/app/portfolio/calculator/portfolio-calculator.ts
  3. 1
      apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts
  4. 7
      apps/api/src/app/portfolio/portfolio.service.ts
  5. 1
      libs/common/src/lib/interfaces/portfolio-performance.interface.ts
  6. 1
      libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts
  7. 2
      libs/common/src/lib/models/portfolio-snapshot.ts

1
apps/api/src/app/endpoints/public/public.controller.ts

@ -84,6 +84,7 @@ export class PublicController {
hasDetails,
markets,
alias: access.alias,
createdAt: performance1d.createdAt,
holdings: {},
performance: {
'1d': {

1
apps/api/src/app/portfolio/calculator/portfolio-calculator.ts

@ -176,6 +176,7 @@ export abstract class PortfolioCalculator {
if (!transactionPoints.length) {
return {
currentValueInBaseCurrency: new Big(0),
createdAt: new Date(),
hasErrors: false,
historicalData: [],
positions: [],

1
apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts

@ -94,6 +94,7 @@ export class TWRPortfolioCalculator extends PortfolioCalculator {
}
return {
createdAt: new Date(),
currentValueInBaseCurrency,
hasErrors,
positions,

7
apps/api/src/app/portfolio/portfolio.service.ts

@ -1085,6 +1085,7 @@ export class PortfolioService {
firstOrderDate: undefined,
hasErrors: false,
performance: {
createdAt: undefined,
currentNetWorth: 0,
currentValueInBaseCurrency: 0,
netPerformance: 0,
@ -1105,7 +1106,7 @@ export class PortfolioService {
currency: userCurrency
});
const { errors, hasErrors, historicalData } =
const { createdAt, errors, hasErrors, historicalData } =
await portfolioCalculator.getSnapshot();
const { endDate, startDate } = getIntervalFromDateRange(dateRange);
@ -1145,6 +1146,7 @@ export class PortfolioService {
netPerformance,
netPerformanceWithCurrencyEffect,
totalInvestment,
createdAt: createdAt,
currentNetWorth: netWorth,
currentValueInBaseCurrency: valueWithCurrencyEffect,
netPerformancePercentage: netPerformanceInPercentage,
@ -1699,7 +1701,7 @@ export class PortfolioService {
}
}
const { currentValueInBaseCurrency, totalInvestment } =
const { createdAt, currentValueInBaseCurrency, totalInvestment } =
await portfolioCalculator.getSnapshot();
const { performance } = await this.getPerformance({
@ -1817,6 +1819,7 @@ export class PortfolioService {
totalSell,
committedFunds: committedFunds.toNumber(),
currentValueInBaseCurrency: currentValueInBaseCurrency.toNumber(),
createdAt: createdAt,
dividendInBaseCurrency: dividendInBaseCurrency.toNumber(),
emergencyFund: {
assets: emergencyFundPositionsValueInBaseCurrency,

1
libs/common/src/lib/interfaces/portfolio-performance.interface.ts

@ -1,5 +1,6 @@
export interface PortfolioPerformance {
annualizedPerformancePercent?: number;
createdAt: Date;
currentNetWorth?: number;
currentValueInBaseCurrency: number;
netPerformance: number;

1
libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts

@ -3,6 +3,7 @@ import { Market } from '../../types';
export interface PublicPortfolioResponse extends PublicPortfolioResponseV1 {
alias?: string;
createdAt: Date;
hasDetails: boolean;
holdings: {
[symbol: string]: Pick<

2
libs/common/src/lib/models/portfolio-snapshot.ts

@ -9,6 +9,8 @@ import { Big } from 'big.js';
import { Transform, Type } from 'class-transformer';
export class PortfolioSnapshot {
createdAt: Date;
@Transform(transformToBig, { toClassOnly: true })
@Type(() => Big)
currentValueInBaseCurrency: Big;

Loading…
Cancel
Save