From ea6608107315576803748f92d08588d7acf2950e Mon Sep 17 00:00:00 2001 From: Valentin Zickner Date: Tue, 27 Jul 2021 21:07:28 +0200 Subject: [PATCH] move interfaces to separate files --- apps/api/src/app/core/current-rate.service.ts | 25 ++------- apps/api/src/app/core/get-value.object.ts | 5 ++ apps/api/src/app/core/get-value.params.ts | 8 +++ apps/api/src/app/core/get-values.params.ts | 9 ++++ .../src/app/core/portfolio-calculator.spec.ts | 18 +++---- apps/api/src/app/core/portfolio-calculator.ts | 53 ++++--------------- apps/api/src/app/core/portfolio-order.ts | 13 +++++ apps/api/src/app/core/timeline-period.ts | 8 +++ .../src/app/core/timeline-specification.ts | 6 +++ .../src/app/core/transaction-point-symbol.ts | 12 +++++ apps/api/src/app/core/transaction-point.ts | 6 +++ .../src/app/portfolio/portfolio.service.ts | 8 ++- 12 files changed, 92 insertions(+), 79 deletions(-) create mode 100644 apps/api/src/app/core/get-value.object.ts create mode 100644 apps/api/src/app/core/get-value.params.ts create mode 100644 apps/api/src/app/core/get-values.params.ts create mode 100644 apps/api/src/app/core/portfolio-order.ts create mode 100644 apps/api/src/app/core/timeline-period.ts create mode 100644 apps/api/src/app/core/timeline-specification.ts create mode 100644 apps/api/src/app/core/transaction-point-symbol.ts create mode 100644 apps/api/src/app/core/transaction-point.ts diff --git a/apps/api/src/app/core/current-rate.service.ts b/apps/api/src/app/core/current-rate.service.ts index 82fedcbbc..cf1f96815 100644 --- a/apps/api/src/app/core/current-rate.service.ts +++ b/apps/api/src/app/core/current-rate.service.ts @@ -2,10 +2,12 @@ import { DataProviderService } from '@ghostfolio/api/services/data-provider.serv import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data.service'; import { resetHours } from '@ghostfolio/common/helper'; import { Injectable } from '@nestjs/common'; -import { Currency } from '@prisma/client'; import { isToday } from 'date-fns'; -import { DateQuery, MarketDataService } from './market-data.service'; +import { MarketDataService } from './market-data.service'; +import { GetValueObject } from '@ghostfolio/api/app/core/get-value.object'; +import { GetValuesParams } from '@ghostfolio/api/app/core/get-values.params'; +import { GetValueParams } from '@ghostfolio/api/app/core/get-value.params'; @Injectable() export class CurrentRateService { @@ -79,22 +81,3 @@ export class CurrentRateService { } } -export interface GetValueParams { - date: Date; - symbol: string; - currency: Currency; - userCurrency: Currency; -} - -export interface GetValuesParams { - dateQuery: DateQuery; - symbols: string[]; - currencies: { [symbol: string]: Currency }; - userCurrency: Currency; -} - -export interface GetValueObject { - date: Date; - symbol: string; - marketPrice: number; -} diff --git a/apps/api/src/app/core/get-value.object.ts b/apps/api/src/app/core/get-value.object.ts new file mode 100644 index 000000000..0e4d66d84 --- /dev/null +++ b/apps/api/src/app/core/get-value.object.ts @@ -0,0 +1,5 @@ +export interface GetValueObject { + date: Date; + symbol: string; + marketPrice: number; +} diff --git a/apps/api/src/app/core/get-value.params.ts b/apps/api/src/app/core/get-value.params.ts new file mode 100644 index 000000000..ffe57c3f2 --- /dev/null +++ b/apps/api/src/app/core/get-value.params.ts @@ -0,0 +1,8 @@ +import { Currency } from '@prisma/client'; + +export interface GetValueParams { + date: Date; + symbol: string; + currency: Currency; + userCurrency: Currency; +} diff --git a/apps/api/src/app/core/get-values.params.ts b/apps/api/src/app/core/get-values.params.ts new file mode 100644 index 000000000..ee1d550d7 --- /dev/null +++ b/apps/api/src/app/core/get-values.params.ts @@ -0,0 +1,9 @@ +import { DateQuery } from '@ghostfolio/api/app/core/market-data.service'; +import { Currency } from '@prisma/client'; + +export interface GetValuesParams { + dateQuery: DateQuery; + symbols: string[]; + currencies: { [symbol: string]: Currency }; + userCurrency: Currency; +} diff --git a/apps/api/src/app/core/portfolio-calculator.spec.ts b/apps/api/src/app/core/portfolio-calculator.spec.ts index 3637410d0..e6a94c44b 100644 --- a/apps/api/src/app/core/portfolio-calculator.spec.ts +++ b/apps/api/src/app/core/portfolio-calculator.spec.ts @@ -1,15 +1,7 @@ import { - CurrentRateService, - GetValueParams, - GetValuesParams + CurrentRateService } from '@ghostfolio/api/app/core/current-rate.service'; -import { - PortfolioCalculator, - PortfolioOrder, - TimelinePeriod, - TimelineSpecification, - TransactionPoint -} from '@ghostfolio/api/app/core/portfolio-calculator'; +import { PortfolioCalculator } from '@ghostfolio/api/app/core/portfolio-calculator'; import { OrderType } from '@ghostfolio/api/models/order-type'; import { resetHours } from '@ghostfolio/common/helper'; import { Currency } from '@prisma/client'; @@ -21,6 +13,12 @@ import { isBefore, parse } from 'date-fns'; +import { PortfolioOrder } from '@ghostfolio/api/app/core/portfolio-order'; +import { TimelinePeriod } from '@ghostfolio/api/app/core/timeline-period'; +import { TimelineSpecification } from '@ghostfolio/api/app/core/timeline-specification'; +import { TransactionPoint } from '@ghostfolio/api/app/core/transaction-point'; +import { GetValuesParams } from '@ghostfolio/api/app/core/get-values.params'; +import { GetValueParams } from '@ghostfolio/api/app/core/get-value.params'; function toYearMonthDay(date: Date) { const year = date.getFullYear(); diff --git a/apps/api/src/app/core/portfolio-calculator.ts b/apps/api/src/app/core/portfolio-calculator.ts index b30c0cf1d..cabf1b388 100644 --- a/apps/api/src/app/core/portfolio-calculator.ts +++ b/apps/api/src/app/core/portfolio-calculator.ts @@ -1,7 +1,4 @@ -import { - CurrentRateService, - GetValueObject -} from '@ghostfolio/api/app/core/current-rate.service'; +import { CurrentRateService } from '@ghostfolio/api/app/core/current-rate.service'; import { OrderType } from '@ghostfolio/api/models/order-type'; import { DATE_FORMAT, parseDate, resetHours } from '@ghostfolio/common/helper'; import { TimelinePosition } from '@ghostfolio/common/interfaces'; @@ -20,6 +17,15 @@ import { subDays } from 'date-fns'; import { flatten } from 'lodash'; +import { PortfolioOrder } from '@ghostfolio/api/app/core/portfolio-order'; +import { TimelinePeriod } from '@ghostfolio/api/app/core/timeline-period'; +import { + Accuracy, + TimelineSpecification +} from '@ghostfolio/api/app/core/timeline-specification'; +import { TransactionPointSymbol } from '@ghostfolio/api/app/core/transaction-point-symbol'; +import { TransactionPoint } from '@ghostfolio/api/app/core/transaction-point'; +import { GetValueObject } from '@ghostfolio/api/app/core/get-value.object'; export class PortfolioCalculator { private transactionPoints: TransactionPoint[]; @@ -483,42 +489,3 @@ export class PortfolioCalculator { ); } } - -export interface TransactionPoint { - date: string; - items: TransactionPointSymbol[]; -} - -interface TransactionPointSymbol { - currency: Currency; - firstBuyDate: string; - investment: Big; - name: string; - quantity: Big; - symbol: string; - transactionCount: number; -} - -type Accuracy = 'year' | 'month' | 'day'; - -export interface TimelineSpecification { - start: string; - accuracy: Accuracy; -} - -export interface TimelinePeriod { - date: string; - grossPerformance: Big; - investment: Big; - value: Big; -} - -export interface PortfolioOrder { - currency: Currency; - date: string; - name: string; - quantity: Big; - symbol: string; - type: OrderType; - unitPrice: Big; -} diff --git a/apps/api/src/app/core/portfolio-order.ts b/apps/api/src/app/core/portfolio-order.ts new file mode 100644 index 000000000..64486164a --- /dev/null +++ b/apps/api/src/app/core/portfolio-order.ts @@ -0,0 +1,13 @@ +import { Currency } from '@prisma/client'; +import Big from 'big.js'; +import { OrderType } from '@ghostfolio/api/models/order-type'; + +export interface PortfolioOrder { + currency: Currency; + date: string; + name: string; + quantity: Big; + symbol: string; + type: OrderType; + unitPrice: Big; +} diff --git a/apps/api/src/app/core/timeline-period.ts b/apps/api/src/app/core/timeline-period.ts new file mode 100644 index 000000000..a26bc0c15 --- /dev/null +++ b/apps/api/src/app/core/timeline-period.ts @@ -0,0 +1,8 @@ +import Big from 'big.js'; + +export interface TimelinePeriod { + date: string; + grossPerformance: Big; + investment: Big; + value: Big; +} diff --git a/apps/api/src/app/core/timeline-specification.ts b/apps/api/src/app/core/timeline-specification.ts new file mode 100644 index 000000000..78687f0fe --- /dev/null +++ b/apps/api/src/app/core/timeline-specification.ts @@ -0,0 +1,6 @@ +export type Accuracy = 'year' | 'month' | 'day'; + +export interface TimelineSpecification { + start: string; + accuracy: Accuracy; +} diff --git a/apps/api/src/app/core/transaction-point-symbol.ts b/apps/api/src/app/core/transaction-point-symbol.ts new file mode 100644 index 000000000..acd1f923c --- /dev/null +++ b/apps/api/src/app/core/transaction-point-symbol.ts @@ -0,0 +1,12 @@ +import { Currency } from '@prisma/client'; +import Big from 'big.js'; + +export interface TransactionPointSymbol { + currency: Currency; + firstBuyDate: string; + investment: Big; + name: string; + quantity: Big; + symbol: string; + transactionCount: number; +} diff --git a/apps/api/src/app/core/transaction-point.ts b/apps/api/src/app/core/transaction-point.ts new file mode 100644 index 000000000..815f40b4a --- /dev/null +++ b/apps/api/src/app/core/transaction-point.ts @@ -0,0 +1,6 @@ +import { TransactionPointSymbol } from '@ghostfolio/api/app/core/transaction-point-symbol'; + +export interface TransactionPoint { + date: string; + items: TransactionPointSymbol[]; +} diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 9fab3729e..93d0114c3 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -1,10 +1,6 @@ import { AccountService } from '@ghostfolio/api/app/account/account.service'; import { CurrentRateService } from '@ghostfolio/api/app/core/current-rate.service'; -import { - PortfolioCalculator, - PortfolioOrder, - TimelineSpecification -} from '@ghostfolio/api/app/core/portfolio-calculator'; +import { PortfolioCalculator } from '@ghostfolio/api/app/core/portfolio-calculator'; import { OrderService } from '@ghostfolio/api/app/order/order.service'; import { RedisCacheService } from '@ghostfolio/api/app/redis-cache/redis-cache.service'; import { UserService } from '@ghostfolio/api/app/user/user.service'; @@ -53,6 +49,8 @@ import { PortfolioPositionDetail } from './interfaces/portfolio-position-detail.interface'; import { parseDate } from '@ghostfolio/common/helper'; +import { PortfolioOrder } from '@ghostfolio/api/app/core/portfolio-order'; +import { TimelineSpecification } from '@ghostfolio/api/app/core/timeline-specification'; @Injectable() export class PortfolioService {