From 59ba0728a4df4be999c2fe581e5028ec045b489c Mon Sep 17 00:00:00 2001 From: Thomas <4159106+dtslvr@users.noreply.github.com> Date: Sat, 9 Apr 2022 09:24:41 +0200 Subject: [PATCH] Switch to new calculation engine --- .../api/src/app/account/account.controller.ts | 11 ++-- .../portfolio/portfolio-service.strategy.ts | 26 --------- .../src/app/portfolio/portfolio.controller.ts | 58 ++++++++++--------- .../api/src/app/portfolio/portfolio.module.ts | 4 +- .../interfaces/user-settings.interface.ts | 1 - .../src/app/user/update-user-setting.dto.ts | 4 -- .../pages/account/account-page.component.ts | 18 ------ .../src/app/pages/account/account-page.html | 17 ------ 8 files changed, 38 insertions(+), 101 deletions(-) delete mode 100644 apps/api/src/app/portfolio/portfolio-service.strategy.ts diff --git a/apps/api/src/app/account/account.controller.ts b/apps/api/src/app/account/account.controller.ts index 64530c377..838009371 100644 --- a/apps/api/src/app/account/account.controller.ts +++ b/apps/api/src/app/account/account.controller.ts @@ -1,4 +1,4 @@ -import { PortfolioServiceStrategy } from '@ghostfolio/api/app/portfolio/portfolio-service.strategy'; +import { PortfolioServiceNew } from '@ghostfolio/api/app/portfolio/portfolio.service-new'; import { UserService } from '@ghostfolio/api/app/user/user.service'; import { nullifyValuesInObject, @@ -35,7 +35,7 @@ export class AccountController { public constructor( private readonly accountService: AccountService, private readonly impersonationService: ImpersonationService, - private readonly portfolioServiceStrategy: PortfolioServiceStrategy, + private readonly portfolioServiceNew: PortfolioServiceNew, @Inject(REQUEST) private readonly request: RequestWithUser, private readonly userService: UserService ) {} @@ -91,9 +91,10 @@ export class AccountController { this.request.user.id ); - let accountsWithAggregations = await this.portfolioServiceStrategy - .get() - .getAccountsWithAggregations(impersonationUserId || this.request.user.id); + let accountsWithAggregations = + await this.portfolioServiceNew.getAccountsWithAggregations( + impersonationUserId || this.request.user.id + ); if ( impersonationUserId || diff --git a/apps/api/src/app/portfolio/portfolio-service.strategy.ts b/apps/api/src/app/portfolio/portfolio-service.strategy.ts deleted file mode 100644 index a85b28852..000000000 --- a/apps/api/src/app/portfolio/portfolio-service.strategy.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { RequestWithUser } from '@ghostfolio/common/types'; -import { Inject, Injectable } from '@nestjs/common'; -import { REQUEST } from '@nestjs/core'; - -import { PortfolioService } from './portfolio.service'; -import { PortfolioServiceNew } from './portfolio.service-new'; - -@Injectable() -export class PortfolioServiceStrategy { - public constructor( - private readonly portfolioService: PortfolioService, - private readonly portfolioServiceNew: PortfolioServiceNew, - @Inject(REQUEST) private readonly request: RequestWithUser - ) {} - - public get(newCalculationEngine?: boolean) { - if ( - newCalculationEngine || - this.request.user?.Settings?.settings?.['isNewCalculationEngine'] === true - ) { - return this.portfolioServiceNew; - } - - return this.portfolioService; - } -} diff --git a/apps/api/src/app/portfolio/portfolio.controller.ts b/apps/api/src/app/portfolio/portfolio.controller.ts index a47f43035..4e8bce31d 100644 --- a/apps/api/src/app/portfolio/portfolio.controller.ts +++ b/apps/api/src/app/portfolio/portfolio.controller.ts @@ -38,7 +38,7 @@ import { StatusCodes, getReasonPhrase } from 'http-status-codes'; import { PortfolioPositionDetail } from './interfaces/portfolio-position-detail.interface'; import { PortfolioPositions } from './interfaces/portfolio-positions.interface'; -import { PortfolioServiceStrategy } from './portfolio-service.strategy'; +import { PortfolioServiceNew } from './portfolio.service-new'; @Controller('portfolio') export class PortfolioController { @@ -46,7 +46,7 @@ export class PortfolioController { private readonly accessService: AccessService, private readonly configurationService: ConfigurationService, private readonly exchangeRateDataService: ExchangeRateDataService, - private readonly portfolioServiceStrategy: PortfolioServiceStrategy, + private readonly portfolioServiceNew: PortfolioServiceNew, @Inject(REQUEST) private readonly request: RequestWithUser, private readonly userService: UserService ) {} @@ -57,9 +57,10 @@ export class PortfolioController { @Headers('impersonation-id') impersonationId: string, @Query('range') range ): Promise { - const historicalDataContainer = await this.portfolioServiceStrategy - .get() - .getChart(impersonationId, range); + const historicalDataContainer = await this.portfolioServiceNew.getChart( + impersonationId, + range + ); let chartData = historicalDataContainer.items; @@ -109,9 +110,11 @@ export class PortfolioController { let hasError = false; const { accounts, holdings, hasErrors } = - await this.portfolioServiceStrategy - .get(true) - .getDetails(impersonationId, this.request.user.id, range); + await this.portfolioServiceNew.getDetails( + impersonationId, + this.request.user.id, + range + ); if (hasErrors || hasNotDefinedValuesInObject(holdings)) { hasError = true; @@ -174,9 +177,9 @@ export class PortfolioController { ); } - let investments = await this.portfolioServiceStrategy - .get() - .getInvestments(impersonationId); + let investments = await this.portfolioServiceNew.getInvestments( + impersonationId + ); if ( impersonationId || @@ -203,9 +206,8 @@ export class PortfolioController { @Headers('impersonation-id') impersonationId: string, @Query('range') range ): Promise { - const performanceInformation = await this.portfolioServiceStrategy - .get() - .getPerformance(impersonationId, range); + const performanceInformation = + await this.portfolioServiceNew.getPerformance(impersonationId, range); if ( impersonationId || @@ -228,9 +230,10 @@ export class PortfolioController { @Headers('impersonation-id') impersonationId: string, @Query('range') range ): Promise { - const result = await this.portfolioServiceStrategy - .get() - .getPositions(impersonationId, range); + const result = await this.portfolioServiceNew.getPositions( + impersonationId, + range + ); if ( impersonationId || @@ -270,9 +273,10 @@ export class PortfolioController { hasDetails = user.subscription.type === 'Premium'; } - const { holdings } = await this.portfolioServiceStrategy - .get(true) - .getDetails(access.userId, access.userId); + const { holdings } = await this.portfolioServiceNew.getDetails( + access.userId, + access.userId + ); const portfolioPublicDetails: PortfolioPublicDetails = { hasDetails, @@ -324,9 +328,7 @@ export class PortfolioController { ); } - let summary = await this.portfolioServiceStrategy - .get() - .getSummary(impersonationId); + let summary = await this.portfolioServiceNew.getSummary(impersonationId); if ( impersonationId || @@ -360,9 +362,11 @@ export class PortfolioController { @Param('dataSource') dataSource, @Param('symbol') symbol ): Promise { - let position = await this.portfolioServiceStrategy - .get() - .getPosition(dataSource, impersonationId, symbol); + let position = await this.portfolioServiceNew.getPosition( + dataSource, + impersonationId, + symbol + ); if (position) { if ( @@ -403,6 +407,6 @@ export class PortfolioController { ); } - return await this.portfolioServiceStrategy.get().getReport(impersonationId); + return await this.portfolioServiceNew.getReport(impersonationId); } } diff --git a/apps/api/src/app/portfolio/portfolio.module.ts b/apps/api/src/app/portfolio/portfolio.module.ts index 5204f1795..e3c8ff61a 100644 --- a/apps/api/src/app/portfolio/portfolio.module.ts +++ b/apps/api/src/app/portfolio/portfolio.module.ts @@ -13,7 +13,6 @@ import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile.mod import { Module } from '@nestjs/common'; import { CurrentRateService } from './current-rate.service'; -import { PortfolioServiceStrategy } from './portfolio-service.strategy'; import { PortfolioController } from './portfolio.controller'; import { PortfolioService } from './portfolio.service'; import { PortfolioServiceNew } from './portfolio.service-new'; @@ -21,7 +20,7 @@ import { RulesService } from './rules.service'; @Module({ controllers: [PortfolioController], - exports: [PortfolioServiceStrategy], + exports: [PortfolioServiceNew], imports: [ AccessModule, ConfigurationModule, @@ -40,7 +39,6 @@ import { RulesService } from './rules.service'; CurrentRateService, PortfolioService, PortfolioServiceNew, - PortfolioServiceStrategy, RulesService ] }) diff --git a/apps/api/src/app/user/interfaces/user-settings.interface.ts b/apps/api/src/app/user/interfaces/user-settings.interface.ts index ef3b03f1b..8f8878079 100644 --- a/apps/api/src/app/user/interfaces/user-settings.interface.ts +++ b/apps/api/src/app/user/interfaces/user-settings.interface.ts @@ -1,6 +1,5 @@ export interface UserSettings { emergencyFund?: number; locale?: string; - isNewCalculationEngine?: boolean; isRestrictedView?: boolean; } diff --git a/apps/api/src/app/user/update-user-setting.dto.ts b/apps/api/src/app/user/update-user-setting.dto.ts index eaa41464a..b09e904df 100644 --- a/apps/api/src/app/user/update-user-setting.dto.ts +++ b/apps/api/src/app/user/update-user-setting.dto.ts @@ -5,10 +5,6 @@ export class UpdateUserSettingDto { @IsOptional() emergencyFund?: number; - @IsBoolean() - @IsOptional() - isNewCalculationEngine?: boolean; - @IsBoolean() @IsOptional() isRestrictedView?: boolean; diff --git a/apps/client/src/app/pages/account/account-page.component.ts b/apps/client/src/app/pages/account/account-page.component.ts index 072d91482..743d9c568 100644 --- a/apps/client/src/app/pages/account/account-page.component.ts +++ b/apps/client/src/app/pages/account/account-page.component.ts @@ -222,24 +222,6 @@ export class AccountPageComponent implements OnDestroy, OnInit { }); } - public onNewCalculationChange(aEvent: MatSlideToggleChange) { - this.dataService - .putUserSetting({ isNewCalculationEngine: aEvent.checked }) - .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe(() => { - this.userService.remove(); - - this.userService - .get() - .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe((user) => { - this.user = user; - - this.changeDetectorRef.markForCheck(); - }); - }); - } - public onRedeemCoupon() { let couponCode = prompt('Please enter your coupon code:'); couponCode = couponCode?.trim(); diff --git a/apps/client/src/app/pages/account/account-page.html b/apps/client/src/app/pages/account/account-page.html index f1993a069..97af7d213 100644 --- a/apps/client/src/app/pages/account/account-page.html +++ b/apps/client/src/app/pages/account/account-page.html @@ -169,23 +169,6 @@ > -
-
-
New Calculation Engine
-
Experimental
-
-
- -
-