From 7df53896f3745829e541fbabb0329a2a234f1a95 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 11 Jan 2022 19:49:45 +0100 Subject: [PATCH] Feature/start eliminating data source from order (#622) * Start eliminating dataSource from order * Update changelog --- CHANGELOG.md | 4 ++ .../portfolio/current-rate.service.spec.ts | 13 ------ .../src/app/portfolio/current-rate.service.ts | 41 ------------------- .../interfaces/get-value-params.interface.ts | 6 --- .../portfolio/portfolio-calculator.spec.ts | 13 +----- .../src/app/portfolio/portfolio.service.ts | 4 +- 6 files changed, 7 insertions(+), 74 deletions(-) delete mode 100644 apps/api/src/app/portfolio/interfaces/get-value-params.interface.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 2cceba33c..ef67e69f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Changed + +- Start eliminating `dataSource` from activity + ### Fixed - Fixed the support for multiple accounts with the same name diff --git a/apps/api/src/app/portfolio/current-rate.service.spec.ts b/apps/api/src/app/portfolio/current-rate.service.spec.ts index bb9aa78b6..ca45483e1 100644 --- a/apps/api/src/app/portfolio/current-rate.service.spec.ts +++ b/apps/api/src/app/portfolio/current-rate.service.spec.ts @@ -85,19 +85,6 @@ describe('CurrentRateService', () => { ); }); - it('getValue', async () => { - expect( - await currentRateService.getValue({ - currency: 'USD', - date: new Date(Date.UTC(2020, 0, 1, 0, 0, 0)), - symbol: 'AMZN', - userCurrency: 'CHF' - }) - ).toMatchObject({ - marketPrice: 1847.839966 - }); - }); - it('getValues', async () => { expect( await currentRateService.getValues({ diff --git a/apps/api/src/app/portfolio/current-rate.service.ts b/apps/api/src/app/portfolio/current-rate.service.ts index 3c7a6bde5..fac041837 100644 --- a/apps/api/src/app/portfolio/current-rate.service.ts +++ b/apps/api/src/app/portfolio/current-rate.service.ts @@ -7,7 +7,6 @@ import { isBefore, isToday } from 'date-fns'; import { flatten } from 'lodash'; import { GetValueObject } from './interfaces/get-value-object.interface'; -import { GetValueParams } from './interfaces/get-value-params.interface'; import { GetValuesParams } from './interfaces/get-values-params.interface'; @Injectable() @@ -18,46 +17,6 @@ export class CurrentRateService { private readonly marketDataService: MarketDataService ) {} - public async getValue({ - currency, - date, - symbol, - userCurrency - }: GetValueParams): Promise { - if (isToday(date)) { - const dataProviderResult = await this.dataProviderService.get([ - { - symbol, - dataSource: this.dataProviderService.getPrimaryDataSource() - } - ]); - return { - symbol, - date: resetHours(date), - marketPrice: dataProviderResult?.[symbol]?.marketPrice ?? 0 - }; - } - - const marketData = await this.marketDataService.get({ - date, - symbol - }); - - if (marketData) { - return { - date: marketData.date, - marketPrice: this.exchangeRateDataService.toCurrency( - marketData.marketPrice, - currency, - userCurrency - ), - symbol: marketData.symbol - }; - } - - throw new Error(`Value not found for ${symbol} at ${resetHours(date)}`); - } - public async getValues({ currencies, dataGatheringItems, diff --git a/apps/api/src/app/portfolio/interfaces/get-value-params.interface.ts b/apps/api/src/app/portfolio/interfaces/get-value-params.interface.ts deleted file mode 100644 index a9b934271..000000000 --- a/apps/api/src/app/portfolio/interfaces/get-value-params.interface.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface GetValueParams { - currency: string; - date: Date; - symbol: string; - userCurrency: string; -} diff --git a/apps/api/src/app/portfolio/portfolio-calculator.spec.ts b/apps/api/src/app/portfolio/portfolio-calculator.spec.ts index 1de2a1d15..74c45f026 100644 --- a/apps/api/src/app/portfolio/portfolio-calculator.spec.ts +++ b/apps/api/src/app/portfolio/portfolio-calculator.spec.ts @@ -1,17 +1,9 @@ import { DATE_FORMAT, parseDate, resetHours } from '@ghostfolio/common/helper'; import { DataSource } from '@prisma/client'; import Big from 'big.js'; -import { - addDays, - differenceInCalendarDays, - endOfDay, - format, - isBefore, - isSameDay -} from 'date-fns'; +import { addDays, endOfDay, format, isBefore, isSameDay } from 'date-fns'; import { CurrentRateService } from './current-rate.service'; -import { GetValueParams } from './interfaces/get-value-params.interface'; import { GetValuesParams } from './interfaces/get-values-params.interface'; import { PortfolioOrder } from './interfaces/portfolio-order.interface'; import { TimelinePeriod } from './interfaces/timeline-period.interface'; @@ -275,9 +267,6 @@ jest.mock('./current-rate.service', () => { // eslint-disable-next-line @typescript-eslint/naming-convention CurrentRateService: jest.fn().mockImplementation(() => { return { - getValue: ({ date, symbol }: GetValueParams) => { - return Promise.resolve(mockGetValue(symbol, date)); - }, getValues: ({ dataGatheringItems, dateQuery }: GetValuesParams) => { const result = []; if (dateQuery.lt) { diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 9ed19810f..15170dcef 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -428,7 +428,7 @@ export class PortfolioService { }) .map((order) => ({ currency: order.currency, - dataSource: order.dataSource, + dataSource: order.SymbolProfile?.dataSource ?? order.dataSource, date: format(order.date, DATE_FORMAT), fee: new Big(order.fee), name: order.SymbolProfile?.name, @@ -1038,7 +1038,7 @@ export class PortfolioService { const userCurrency = this.request.user?.Settings?.currency ?? baseCurrency; const portfolioOrders: PortfolioOrder[] = orders.map((order) => ({ currency: order.currency, - dataSource: order.dataSource, + dataSource: order.SymbolProfile?.dataSource ?? order.dataSource, date: format(order.date, DATE_FORMAT), fee: new Big( this.exchangeRateDataService.toCurrency(