Browse Source

Optimize details endpoint

pull/3123/head
Thomas Kaul 1 year ago
parent
commit
20af43ddc4
  1. 3
      apps/api/src/app/portfolio/portfolio.controller.ts
  2. 36
      apps/api/src/app/portfolio/portfolio.service.ts
  3. 4
      libs/common/src/lib/interfaces/portfolio-details.interface.ts

3
apps/api/src/app/portfolio/portfolio.controller.ts

@ -108,7 +108,8 @@ export class PortfolioController {
dateRange,
filters,
impersonationId,
userId: this.request.user.id
userId: this.request.user.id,
withSummary: true
});
if (hasErrors || hasNotDefinedValuesInObject(holdings)) {

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

@ -332,13 +332,15 @@ export class PortfolioService {
filters,
impersonationId,
userId,
withExcludedAccounts = false
withExcludedAccounts = false,
withSummary = false
}: {
dateRange?: DateRange;
filters?: Filter[];
impersonationId: string;
userId: string;
withExcludedAccounts?: boolean;
withSummary?: boolean;
}): Promise<PortfolioDetails & { hasErrors: boolean }> {
userId = await this.getUserId(impersonationId, userId);
const user = await this.userService.user({ id: userId });
@ -625,17 +627,21 @@ export class PortfolioService {
};
}
const summary = await this.getSummary({
holdings,
impersonationId,
userCurrency,
userId,
balanceInBaseCurrency: cashDetails.balanceInBaseCurrency,
emergencyFundPositionsValueInBaseCurrency:
this.getEmergencyFundPositionsValueInBaseCurrency({
holdings
})
});
let summary: PortfolioSummary;
if (withSummary) {
summary = await this.getSummary({
holdings,
impersonationId,
userCurrency,
userId,
balanceInBaseCurrency: cashDetails.balanceInBaseCurrency,
emergencyFundPositionsValueInBaseCurrency:
this.getEmergencyFundPositionsValueInBaseCurrency({
holdings
})
});
}
return {
accounts,
@ -643,11 +649,11 @@ export class PortfolioService {
platforms,
summary,
filteredValueInBaseCurrency: filteredValueInBaseCurrency.toNumber(),
filteredValueInPercentage: summary.netWorth
filteredValueInPercentage: summary?.netWorth
? filteredValueInBaseCurrency.div(summary.netWorth).toNumber()
: 0,
: undefined,
hasErrors: currentPositions.hasErrors,
totalValueInBaseCurrency: summary.netWorth
totalValueInBaseCurrency: summary?.netWorth
};
}

4
libs/common/src/lib/interfaces/portfolio-details.interface.ts

@ -14,7 +14,7 @@ export interface PortfolioDetails {
};
};
filteredValueInBaseCurrency?: number;
filteredValueInPercentage: number;
filteredValueInPercentage?: number;
holdings: { [symbol: string]: PortfolioPosition };
platforms: {
[id: string]: {
@ -25,6 +25,6 @@ export interface PortfolioDetails {
valueInPercentage?: number;
};
};
summary: PortfolioSummary;
summary?: PortfolioSummary;
totalValueInBaseCurrency?: number;
}

Loading…
Cancel
Save