From 35307a7379ae4a39680c1de4639210ad1a50e5a0 Mon Sep 17 00:00:00 2001 From: Valentin Zickner Date: Sun, 8 Aug 2021 21:52:21 +0200 Subject: [PATCH] cleanup portfolio module --- apps/api/src/app/app.module.ts | 7 ------- apps/api/src/app/core/core.module.ts | 20 ------------------- .../interfaces/transaction-point.interface.ts | 6 ------ apps/api/src/app/order/order.module.ts | 3 ++- .../current-rate.service.spec.ts | 2 +- .../current-rate.service.ts | 6 +++--- .../interfaces/current-positions.interface.ts | 0 .../interfaces/date-query.interface.ts | 0 .../interfaces/get-value-object.interface.ts | 0 .../interfaces/get-value-params.interface.ts | 0 .../interfaces/get-values-params.interface.ts | 2 +- .../interfaces/portfolio-order.interface.ts | 0 .../interfaces/timeline-period.interface.ts | 0 .../timeline-specification.interface.ts | 0 .../transaction-point-symbol.interface.ts | 0 .../interfaces/transaction-point.interface.ts | 6 ++++++ .../market-data.service.ts | 0 .../portfolio-calculator.spec.ts | 18 ++++++++--------- .../portfolio-calculator.ts | 16 +++++++-------- .../src/app/portfolio/portfolio.controller.ts | 2 +- .../api/src/app/portfolio/portfolio.module.ts | 12 ++++------- .../base-currency-current-investment.ts | 2 +- .../base-currency-initial-investment.ts | 2 +- .../current-investment.ts | 2 +- .../initial-investment.ts | 2 +- 25 files changed, 39 insertions(+), 69 deletions(-) delete mode 100644 apps/api/src/app/core/core.module.ts delete mode 100644 apps/api/src/app/core/interfaces/transaction-point.interface.ts rename apps/api/src/app/{core => portfolio}/current-rate.service.spec.ts (97%) rename apps/api/src/app/{core => portfolio}/current-rate.service.ts (92%) rename apps/api/src/app/{core => portfolio}/interfaces/current-positions.interface.ts (100%) rename apps/api/src/app/{core => portfolio}/interfaces/date-query.interface.ts (100%) rename apps/api/src/app/{core => portfolio}/interfaces/get-value-object.interface.ts (100%) rename apps/api/src/app/{core => portfolio}/interfaces/get-value-params.interface.ts (100%) rename apps/api/src/app/{core => portfolio}/interfaces/get-values-params.interface.ts (69%) rename apps/api/src/app/{core => portfolio}/interfaces/portfolio-order.interface.ts (100%) rename apps/api/src/app/{core => portfolio}/interfaces/timeline-period.interface.ts (100%) rename apps/api/src/app/{core => portfolio}/interfaces/timeline-specification.interface.ts (100%) rename apps/api/src/app/{core => portfolio}/interfaces/transaction-point-symbol.interface.ts (100%) create mode 100644 apps/api/src/app/portfolio/interfaces/transaction-point.interface.ts rename apps/api/src/app/{core => portfolio}/market-data.service.ts (100%) rename apps/api/src/app/{core => portfolio}/portfolio-calculator.spec.ts (98%) rename apps/api/src/app/{core => portfolio}/portfolio-calculator.ts (95%) diff --git a/apps/api/src/app/app.module.ts b/apps/api/src/app/app.module.ts index b32783412..d8b0d2893 100644 --- a/apps/api/src/app/app.module.ts +++ b/apps/api/src/app/app.module.ts @@ -5,19 +5,13 @@ import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; import { ScheduleModule } from '@nestjs/schedule'; import { ServeStaticModule } from '@nestjs/serve-static'; - -import { ConfigurationService } from '../services/configuration.service'; import { CronService } from '../services/cron.service'; -import { DataGatheringService } from '../services/data-gathering.service'; -import { ExchangeRateDataService } from '../services/exchange-rate-data.service'; -import { PrismaService } from '../services/prisma.service'; import { AccessModule } from './access/access.module'; import { AccountModule } from './account/account.module'; import { AdminModule } from './admin/admin.module'; import { AppController } from './app.controller'; import { AuthModule } from './auth/auth.module'; import { CacheModule } from './cache/cache.module'; -import { CoreModule } from './core/core.module'; import { ExperimentalModule } from './experimental/experimental.module'; import { ExportModule } from './export/export.module'; import { ImportModule } from './import/import.module'; @@ -43,7 +37,6 @@ import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-d AuthModule, CacheModule, ConfigModule.forRoot(), - CoreModule, ExperimentalModule, ExportModule, ImportModule, diff --git a/apps/api/src/app/core/core.module.ts b/apps/api/src/app/core/core.module.ts deleted file mode 100644 index 5f07a4b99..000000000 --- a/apps/api/src/app/core/core.module.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Module } from '@nestjs/common'; - -import { CurrentRateService } from './current-rate.service'; -import { MarketDataService } from './market-data.service'; -import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; -import { ConfigurationModule } from '@ghostfolio/api/services/configuration.module'; -import { PrismaModule } from '@ghostfolio/api/services/prisma.module'; -import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data.module'; - -@Module({ - imports: [ - ConfigurationModule, - DataProviderModule, - ExchangeRateDataModule, - PrismaModule - ], - controllers: [], - providers: [CurrentRateService, MarketDataService] -}) -export class CoreModule {} diff --git a/apps/api/src/app/core/interfaces/transaction-point.interface.ts b/apps/api/src/app/core/interfaces/transaction-point.interface.ts deleted file mode 100644 index eadc1e63f..000000000 --- a/apps/api/src/app/core/interfaces/transaction-point.interface.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TransactionPointSymbol } from '@ghostfolio/api/app/core/interfaces/transaction-point-symbol.interface'; - -export interface TransactionPoint { - date: string; - items: TransactionPointSymbol[]; -} diff --git a/apps/api/src/app/order/order.module.ts b/apps/api/src/app/order/order.module.ts index 04becc9db..9aef8b2fa 100644 --- a/apps/api/src/app/order/order.module.ts +++ b/apps/api/src/app/order/order.module.ts @@ -20,6 +20,7 @@ import { ImpersonationModule } from '@ghostfolio/api/services/impersonation.modu PrismaModule ], controllers: [OrderController], - providers: [CacheService, OrderService] + providers: [CacheService, OrderService], + exports: [OrderService] }) export class OrderModule {} diff --git a/apps/api/src/app/core/current-rate.service.spec.ts b/apps/api/src/app/portfolio/current-rate.service.spec.ts similarity index 97% rename from apps/api/src/app/core/current-rate.service.spec.ts rename to apps/api/src/app/portfolio/current-rate.service.spec.ts index a094f4f5c..c139b509b 100644 --- a/apps/api/src/app/core/current-rate.service.spec.ts +++ b/apps/api/src/app/portfolio/current-rate.service.spec.ts @@ -1,4 +1,4 @@ -import { CurrentRateService } from '@ghostfolio/api/app/core/current-rate.service'; +import { CurrentRateService } from './current-rate.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data.service'; import { Currency, MarketData } from '@prisma/client'; diff --git a/apps/api/src/app/core/current-rate.service.ts b/apps/api/src/app/portfolio/current-rate.service.ts similarity index 92% rename from apps/api/src/app/core/current-rate.service.ts rename to apps/api/src/app/portfolio/current-rate.service.ts index 9599511ee..0239abb81 100644 --- a/apps/api/src/app/core/current-rate.service.ts +++ b/apps/api/src/app/portfolio/current-rate.service.ts @@ -1,6 +1,6 @@ -import { GetValueObject } from '@ghostfolio/api/app/core/interfaces/get-value-object.interface'; -import { GetValueParams } from '@ghostfolio/api/app/core/interfaces/get-value-params.interface'; -import { GetValuesParams } from '@ghostfolio/api/app/core/interfaces/get-values-params.interface'; +import { GetValueObject } from './interfaces/get-value-object.interface'; +import { GetValueParams } from './interfaces/get-value-params.interface'; +import { GetValuesParams } from './interfaces/get-values-params.interface'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data.service'; import { resetHours } from '@ghostfolio/common/helper'; diff --git a/apps/api/src/app/core/interfaces/current-positions.interface.ts b/apps/api/src/app/portfolio/interfaces/current-positions.interface.ts similarity index 100% rename from apps/api/src/app/core/interfaces/current-positions.interface.ts rename to apps/api/src/app/portfolio/interfaces/current-positions.interface.ts diff --git a/apps/api/src/app/core/interfaces/date-query.interface.ts b/apps/api/src/app/portfolio/interfaces/date-query.interface.ts similarity index 100% rename from apps/api/src/app/core/interfaces/date-query.interface.ts rename to apps/api/src/app/portfolio/interfaces/date-query.interface.ts diff --git a/apps/api/src/app/core/interfaces/get-value-object.interface.ts b/apps/api/src/app/portfolio/interfaces/get-value-object.interface.ts similarity index 100% rename from apps/api/src/app/core/interfaces/get-value-object.interface.ts rename to apps/api/src/app/portfolio/interfaces/get-value-object.interface.ts diff --git a/apps/api/src/app/core/interfaces/get-value-params.interface.ts b/apps/api/src/app/portfolio/interfaces/get-value-params.interface.ts similarity index 100% rename from apps/api/src/app/core/interfaces/get-value-params.interface.ts rename to apps/api/src/app/portfolio/interfaces/get-value-params.interface.ts diff --git a/apps/api/src/app/core/interfaces/get-values-params.interface.ts b/apps/api/src/app/portfolio/interfaces/get-values-params.interface.ts similarity index 69% rename from apps/api/src/app/core/interfaces/get-values-params.interface.ts rename to apps/api/src/app/portfolio/interfaces/get-values-params.interface.ts index 9f1338000..d506f0bb1 100644 --- a/apps/api/src/app/core/interfaces/get-values-params.interface.ts +++ b/apps/api/src/app/portfolio/interfaces/get-values-params.interface.ts @@ -1,4 +1,4 @@ -import { DateQuery } from '@ghostfolio/api/app/core/interfaces/date-query.interface'; +import { DateQuery } from './date-query.interface'; import { Currency } from '@prisma/client'; export interface GetValuesParams { diff --git a/apps/api/src/app/core/interfaces/portfolio-order.interface.ts b/apps/api/src/app/portfolio/interfaces/portfolio-order.interface.ts similarity index 100% rename from apps/api/src/app/core/interfaces/portfolio-order.interface.ts rename to apps/api/src/app/portfolio/interfaces/portfolio-order.interface.ts diff --git a/apps/api/src/app/core/interfaces/timeline-period.interface.ts b/apps/api/src/app/portfolio/interfaces/timeline-period.interface.ts similarity index 100% rename from apps/api/src/app/core/interfaces/timeline-period.interface.ts rename to apps/api/src/app/portfolio/interfaces/timeline-period.interface.ts diff --git a/apps/api/src/app/core/interfaces/timeline-specification.interface.ts b/apps/api/src/app/portfolio/interfaces/timeline-specification.interface.ts similarity index 100% rename from apps/api/src/app/core/interfaces/timeline-specification.interface.ts rename to apps/api/src/app/portfolio/interfaces/timeline-specification.interface.ts diff --git a/apps/api/src/app/core/interfaces/transaction-point-symbol.interface.ts b/apps/api/src/app/portfolio/interfaces/transaction-point-symbol.interface.ts similarity index 100% rename from apps/api/src/app/core/interfaces/transaction-point-symbol.interface.ts rename to apps/api/src/app/portfolio/interfaces/transaction-point-symbol.interface.ts diff --git a/apps/api/src/app/portfolio/interfaces/transaction-point.interface.ts b/apps/api/src/app/portfolio/interfaces/transaction-point.interface.ts new file mode 100644 index 000000000..178df3456 --- /dev/null +++ b/apps/api/src/app/portfolio/interfaces/transaction-point.interface.ts @@ -0,0 +1,6 @@ +import { TransactionPointSymbol } from './transaction-point-symbol.interface'; + +export interface TransactionPoint { + date: string; + items: TransactionPointSymbol[]; +} diff --git a/apps/api/src/app/core/market-data.service.ts b/apps/api/src/app/portfolio/market-data.service.ts similarity index 100% rename from apps/api/src/app/core/market-data.service.ts rename to apps/api/src/app/portfolio/market-data.service.ts diff --git a/apps/api/src/app/core/portfolio-calculator.spec.ts b/apps/api/src/app/portfolio/portfolio-calculator.spec.ts similarity index 98% rename from apps/api/src/app/core/portfolio-calculator.spec.ts rename to apps/api/src/app/portfolio/portfolio-calculator.spec.ts index e71c0b3ef..486472262 100644 --- a/apps/api/src/app/core/portfolio-calculator.spec.ts +++ b/apps/api/src/app/portfolio/portfolio-calculator.spec.ts @@ -1,11 +1,11 @@ -import { CurrentRateService } from '@ghostfolio/api/app/core/current-rate.service'; -import { GetValueParams } from '@ghostfolio/api/app/core/interfaces/get-value-params.interface'; -import { GetValuesParams } from '@ghostfolio/api/app/core/interfaces/get-values-params.interface'; -import { PortfolioOrder } from '@ghostfolio/api/app/core/interfaces/portfolio-order.interface'; -import { TimelinePeriod } from '@ghostfolio/api/app/core/interfaces/timeline-period.interface'; -import { TimelineSpecification } from '@ghostfolio/api/app/core/interfaces/timeline-specification.interface'; -import { TransactionPoint } from '@ghostfolio/api/app/core/interfaces/transaction-point.interface'; -import { PortfolioCalculator } from '@ghostfolio/api/app/core/portfolio-calculator'; +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'; +import { TimelineSpecification } from './interfaces/timeline-specification.interface'; +import { TransactionPoint } from './interfaces/transaction-point.interface'; +import { PortfolioCalculator } from './portfolio-calculator'; import { OrderType } from '@ghostfolio/api/models/order-type'; import { parseDate, resetHours } from '@ghostfolio/common/helper'; import { Currency } from '@prisma/client'; @@ -67,7 +67,7 @@ function mockGetValue(symbol: string, date: Date) { } } -jest.mock('@ghostfolio/api/app/core/current-rate.service', () => { +jest.mock('./current-rate.service', () => { return { // eslint-disable-next-line @typescript-eslint/naming-convention CurrentRateService: jest.fn().mockImplementation(() => { diff --git a/apps/api/src/app/core/portfolio-calculator.ts b/apps/api/src/app/portfolio/portfolio-calculator.ts similarity index 95% rename from apps/api/src/app/core/portfolio-calculator.ts rename to apps/api/src/app/portfolio/portfolio-calculator.ts index 91c9a8123..d08a11526 100644 --- a/apps/api/src/app/core/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/portfolio-calculator.ts @@ -1,14 +1,14 @@ -import { CurrentRateService } from '@ghostfolio/api/app/core/current-rate.service'; -import { CurrentPositions } from '@ghostfolio/api/app/core/interfaces/current-positions.interface'; -import { GetValueObject } from '@ghostfolio/api/app/core/interfaces/get-value-object.interface'; -import { PortfolioOrder } from '@ghostfolio/api/app/core/interfaces/portfolio-order.interface'; -import { TimelinePeriod } from '@ghostfolio/api/app/core/interfaces/timeline-period.interface'; +import { CurrentRateService } from './current-rate.service'; +import { CurrentPositions } from './interfaces/current-positions.interface'; +import { GetValueObject } from './interfaces/get-value-object.interface'; +import { PortfolioOrder } from './interfaces/portfolio-order.interface'; +import { TimelinePeriod } from './interfaces/timeline-period.interface'; import { Accuracy, TimelineSpecification -} from '@ghostfolio/api/app/core/interfaces/timeline-specification.interface'; -import { TransactionPointSymbol } from '@ghostfolio/api/app/core/interfaces/transaction-point-symbol.interface'; -import { TransactionPoint } from '@ghostfolio/api/app/core/interfaces/transaction-point.interface'; +} from './interfaces/timeline-specification.interface'; +import { TransactionPointSymbol } from './interfaces/transaction-point-symbol.interface'; +import { TransactionPoint } from './interfaces/transaction-point.interface'; import { OrderType } from '@ghostfolio/api/models/order-type'; import { DATE_FORMAT, parseDate, resetHours } from '@ghostfolio/common/helper'; import { TimelinePosition } from '@ghostfolio/common/interfaces'; diff --git a/apps/api/src/app/portfolio/portfolio.controller.ts b/apps/api/src/app/portfolio/portfolio.controller.ts index 96a2e2b55..58d6edd47 100644 --- a/apps/api/src/app/portfolio/portfolio.controller.ts +++ b/apps/api/src/app/portfolio/portfolio.controller.ts @@ -46,7 +46,7 @@ export class PortfolioController { public constructor( private readonly exchangeRateDataService: ExchangeRateDataService, private readonly impersonationService: ImpersonationService, - private portfolioService: PortfolioService, + private readonly portfolioService: PortfolioService, @Inject(REQUEST) private readonly request: RequestWithUser ) {} diff --git a/apps/api/src/app/portfolio/portfolio.module.ts b/apps/api/src/app/portfolio/portfolio.module.ts index 474dc65b8..3d99287d1 100644 --- a/apps/api/src/app/portfolio/portfolio.module.ts +++ b/apps/api/src/app/portfolio/portfolio.module.ts @@ -1,9 +1,6 @@ import { AccountService } from '@ghostfolio/api/app/account/account.service'; -import { CacheService } from '@ghostfolio/api/app/cache/cache.service'; -import { CurrentRateService } from '@ghostfolio/api/app/core/current-rate.service'; -import { MarketDataService } from '@ghostfolio/api/app/core/market-data.service'; -import { OrderService } from '@ghostfolio/api/app/order/order.service'; -import { RedisCacheModule } from '@ghostfolio/api/app/redis-cache/redis-cache.module'; +import { CurrentRateService } from './current-rate.service'; +import { MarketDataService } from './market-data.service'; import { UserService } from '@ghostfolio/api/app/user/user.service'; import { RulesService } from './rules.service'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile.service'; @@ -17,6 +14,7 @@ import { PrismaModule } from '@ghostfolio/api/services/prisma.module'; import { DataGatheringModule } from '@ghostfolio/api/services/data-gathering.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data.module'; import { ImpersonationModule } from '@ghostfolio/api/services/impersonation.module'; +import { OrderModule } from '@ghostfolio/api/app/order/order.module'; @Module({ imports: [ @@ -25,16 +23,14 @@ import { ImpersonationModule } from '@ghostfolio/api/services/impersonation.modu DataGatheringModule, ExchangeRateDataModule, ImpersonationModule, - RedisCacheModule, + OrderModule, PrismaModule ], controllers: [PortfolioController], providers: [ AccountService, - CacheService, CurrentRateService, MarketDataService, - OrderService, PortfolioService, RulesService, SymbolProfileService, diff --git a/apps/api/src/models/rules/currency-cluster-risk/base-currency-current-investment.ts b/apps/api/src/models/rules/currency-cluster-risk/base-currency-current-investment.ts index 4c5fe01da..06e24960d 100644 --- a/apps/api/src/models/rules/currency-cluster-risk/base-currency-current-investment.ts +++ b/apps/api/src/models/rules/currency-cluster-risk/base-currency-current-investment.ts @@ -1,4 +1,4 @@ -import { CurrentPositions } from '@ghostfolio/api/app/core/interfaces/current-positions.interface'; +import { CurrentPositions } from '@ghostfolio/api/app/portfolio/interfaces/current-positions.interface'; import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface'; import { UserSettings } from '@ghostfolio/api/models/interfaces/user-settings.interface'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data.service'; diff --git a/apps/api/src/models/rules/currency-cluster-risk/base-currency-initial-investment.ts b/apps/api/src/models/rules/currency-cluster-risk/base-currency-initial-investment.ts index 02ea09770..548137e04 100644 --- a/apps/api/src/models/rules/currency-cluster-risk/base-currency-initial-investment.ts +++ b/apps/api/src/models/rules/currency-cluster-risk/base-currency-initial-investment.ts @@ -1,4 +1,4 @@ -import { CurrentPositions } from '@ghostfolio/api/app/core/interfaces/current-positions.interface'; +import { CurrentPositions } from '@ghostfolio/api/app/portfolio/interfaces/current-positions.interface'; import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface'; import { UserSettings } from '@ghostfolio/api/models/interfaces/user-settings.interface'; import { Currency } from '@prisma/client'; diff --git a/apps/api/src/models/rules/currency-cluster-risk/current-investment.ts b/apps/api/src/models/rules/currency-cluster-risk/current-investment.ts index 12a6c22b6..eb6be3a2f 100644 --- a/apps/api/src/models/rules/currency-cluster-risk/current-investment.ts +++ b/apps/api/src/models/rules/currency-cluster-risk/current-investment.ts @@ -1,4 +1,4 @@ -import { CurrentPositions } from '@ghostfolio/api/app/core/interfaces/current-positions.interface'; +import { CurrentPositions } from '@ghostfolio/api/app/portfolio/interfaces/current-positions.interface'; import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface'; import { UserSettings } from '@ghostfolio/api/models/interfaces/user-settings.interface'; import { Currency } from '@prisma/client'; diff --git a/apps/api/src/models/rules/currency-cluster-risk/initial-investment.ts b/apps/api/src/models/rules/currency-cluster-risk/initial-investment.ts index 3ce70a1e6..993e39247 100644 --- a/apps/api/src/models/rules/currency-cluster-risk/initial-investment.ts +++ b/apps/api/src/models/rules/currency-cluster-risk/initial-investment.ts @@ -1,4 +1,4 @@ -import { CurrentPositions } from '@ghostfolio/api/app/core/interfaces/current-positions.interface'; +import { CurrentPositions } from '@ghostfolio/api/app/portfolio/interfaces/current-positions.interface'; import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface'; import { UserSettings } from '@ghostfolio/api/models/interfaces/user-settings.interface'; import { Currency } from '@prisma/client';