From eb0ee52ac675162d1ed4ddf206743b29c20c23f4 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 27 Apr 2024 09:46:21 +0200 Subject: [PATCH] Provide cache service to portfolio calculator --- .../calculator/portfolio-calculator.factory.ts | 10 +++++++--- .../app/portfolio/calculator/portfolio-calculator.ts | 4 +++- apps/api/src/app/portfolio/portfolio.module.ts | 2 ++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts b/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts index a75ce9b62..d0c1ed2cb 100644 --- a/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts +++ b/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts @@ -1,5 +1,6 @@ import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface'; import { CurrentRateService } from '@ghostfolio/api/app/portfolio/current-rate.service'; +import { RedisCacheService } from '@ghostfolio/api/app/redis-cache/redis-cache.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; import { HistoricalDataItem } from '@ghostfolio/common/interfaces'; import { DateRange } from '@ghostfolio/common/types'; @@ -19,7 +20,8 @@ export enum PerformanceCalculationType { export class PortfolioCalculatorFactory { public constructor( private readonly currentRateService: CurrentRateService, - private readonly exchangeRateDataService: ExchangeRateDataService + private readonly exchangeRateDataService: ExchangeRateDataService, + private readonly redisCacheService: RedisCacheService ) {} public createCalculator({ @@ -43,7 +45,8 @@ export class PortfolioCalculatorFactory { currency, dateRange, currentRateService: this.currentRateService, - exchangeRateDataService: this.exchangeRateDataService + exchangeRateDataService: this.exchangeRateDataService, + redisCacheService: this.redisCacheService }); case PerformanceCalculationType.TWR: return new TWRPortfolioCalculator({ @@ -52,7 +55,8 @@ export class PortfolioCalculatorFactory { currency, currentRateService: this.currentRateService, dateRange, - exchangeRateDataService: this.exchangeRateDataService + exchangeRateDataService: this.exchangeRateDataService, + redisCacheService: this.redisCacheService }); default: throw new Error('Invalid calculation type'); diff --git a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts index 54e474779..bc4bd1e47 100644 --- a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts @@ -4,6 +4,7 @@ import { PortfolioOrder } from '@ghostfolio/api/app/portfolio/interfaces/portfol import { PortfolioSnapshot } from '@ghostfolio/api/app/portfolio/interfaces/portfolio-snapshot.interface'; import { TransactionPointSymbol } from '@ghostfolio/api/app/portfolio/interfaces/transaction-point-symbol.interface'; import { TransactionPoint } from '@ghostfolio/api/app/portfolio/interfaces/transaction-point.interface'; +import { RedisCacheService } from '@ghostfolio/api/app/redis-cache/redis-cache.service'; import { getFactor, getInterval @@ -23,9 +24,9 @@ import { InvestmentItem, ResponseError, SymbolMetrics, - TimelinePosition, UniqueAsset } from '@ghostfolio/common/interfaces'; +import { TimelinePosition } from '@ghostfolio/common/models'; import { DateRange, GroupBy } from '@ghostfolio/common/types'; import { Big } from 'big.js'; @@ -72,6 +73,7 @@ export abstract class PortfolioCalculator { currentRateService: CurrentRateService; dateRange: DateRange; exchangeRateDataService: ExchangeRateDataService; + redisCacheService: RedisCacheService; }) { this.accountBalanceItems = accountBalanceItems; this.currency = currency; diff --git a/apps/api/src/app/portfolio/portfolio.module.ts b/apps/api/src/app/portfolio/portfolio.module.ts index 6b06bf02d..5659f2a7e 100644 --- a/apps/api/src/app/portfolio/portfolio.module.ts +++ b/apps/api/src/app/portfolio/portfolio.module.ts @@ -2,6 +2,7 @@ import { AccessModule } from '@ghostfolio/api/app/access/access.module'; import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; import { AccountService } from '@ghostfolio/api/app/account/account.service'; import { OrderModule } from '@ghostfolio/api/app/order/order.module'; +import { RedisCacheModule } from '@ghostfolio/api/app/redis-cache/redis-cache.module'; import { UserModule } from '@ghostfolio/api/app/user/user.module'; import { ApiModule } from '@ghostfolio/api/services/api/api.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; @@ -35,6 +36,7 @@ import { RulesService } from './rules.service'; MarketDataModule, OrderModule, PrismaModule, + RedisCacheModule, SymbolProfileModule, UserModule ],