From 231fd568f22a28fd91010fd9a35785f913ffa8bc Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 27 Oct 2026 20:28:37 +0100 Subject: [PATCH] Task/move account and account balance services to services (#8317) Move account and account balance services to services --- .../account-balance.controller.ts | 5 ++--- .../account-balance/account-balance.module.ts | 16 +++------------ .../api/src/app/account/account.controller.ts | 4 ++-- apps/api/src/app/account/account.module.ts | 15 ++++---------- .../src/app/activities/activities.module.ts | 8 +++++--- .../app/activities/activities.service.spec.ts | 2 +- .../src/app/activities/activities.service.ts | 6 +++--- apps/api/src/app/app.module.ts | 2 ++ .../endpoints/benchmarks/benchmarks.module.ts | 10 ++++------ .../src/app/endpoints/export/export.module.ts | 2 +- .../app/endpoints/export/export.service.ts | 2 +- apps/api/src/app/endpoints/mcp/mcp.module.ts | 4 ++-- .../src/app/endpoints/mcp/mcp.service.spec.ts | 4 ++-- apps/api/src/app/endpoints/mcp/mcp.service.ts | 4 ++-- .../src/app/endpoints/public/public.module.ts | 12 ++++------- .../roai/portfolio-calculator-cash.spec.ts | 4 ++-- .../roi/portfolio-calculator-cash.spec.ts | 4 ++-- .../api/src/app/portfolio/portfolio.module.ts | 12 ++++------- .../app/portfolio/portfolio.service.spec.ts | 6 +++--- .../src/app/portfolio/portfolio.service.ts | 6 +++--- .../account-balance/account-balance.module.ts | 13 ++++++++++++ .../account-balance.service.ts | 0 .../src/services/account/account.module.ts | 20 +++++++++++++++++++ .../account/account.service.ts | 2 +- .../interfaces/cash-details.interface.ts | 0 apps/api/src/services/import/import.module.ts | 2 +- .../services/import/import.service.spec.ts | 2 +- .../api/src/services/import/import.service.ts | 2 +- .../portfolio-snapshot.module.ts | 2 +- .../portfolio-snapshot.processor.ts | 2 +- 30 files changed, 91 insertions(+), 82 deletions(-) create mode 100644 apps/api/src/services/account-balance/account-balance.module.ts rename apps/api/src/{app => services}/account-balance/account-balance.service.ts (100%) create mode 100644 apps/api/src/services/account/account.module.ts rename apps/api/src/{app => services}/account/account.service.ts (98%) rename apps/api/src/{app => services}/account/interfaces/cash-details.interface.ts (100%) diff --git a/apps/api/src/app/account-balance/account-balance.controller.ts b/apps/api/src/app/account-balance/account-balance.controller.ts index a37001bc34..a588de7621 100644 --- a/apps/api/src/app/account-balance/account-balance.controller.ts +++ b/apps/api/src/app/account-balance/account-balance.controller.ts @@ -1,8 +1,9 @@ -import { AccountService } from '@ghostfolio/api/app/account/account.service'; import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator'; import { Impersonation } from '@ghostfolio/api/decorators/impersonation.decorator'; import { RequiresScope } from '@ghostfolio/api/decorators/requires-scope.decorator'; import { RedactValuesInResponseInterceptor } from '@ghostfolio/api/interceptors/redact-values-in-response/redact-values-in-response.interceptor'; +import { AccountBalanceService } from '@ghostfolio/api/services/account-balance/account-balance.service'; +import { AccountService } from '@ghostfolio/api/services/account/account.service'; import { CreateAccountBalanceDto } from '@ghostfolio/common/dtos'; import { permissions } from '@ghostfolio/common/permissions'; import { scopes } from '@ghostfolio/common/scopes'; @@ -20,8 +21,6 @@ import { import { AccountBalance } from '@prisma/client'; import { StatusCodes, getReasonPhrase } from 'http-status-codes'; -import { AccountBalanceService } from './account-balance.service'; - @Controller('account-balance') export class AccountBalanceController { public constructor( diff --git a/apps/api/src/app/account-balance/account-balance.module.ts b/apps/api/src/app/account-balance/account-balance.module.ts index edb0f4debc..9e08924ca0 100644 --- a/apps/api/src/app/account-balance/account-balance.module.ts +++ b/apps/api/src/app/account-balance/account-balance.module.ts @@ -1,23 +1,13 @@ -import { AccountService } from '@ghostfolio/api/app/account/account.service'; -import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; +import { AccountBalanceModule as AccountBalanceServiceModule } from '@ghostfolio/api/services/account-balance/account-balance.module'; +import { AccountModule } from '@ghostfolio/api/services/account/account.module'; import { ImpersonationModule } from '@ghostfolio/api/services/impersonation/impersonation.module'; -import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; -import { TagModule } from '@ghostfolio/api/services/tag/tag.module'; import { Module } from '@nestjs/common'; import { AccountBalanceController } from './account-balance.controller'; -import { AccountBalanceService } from './account-balance.service'; @Module({ controllers: [AccountBalanceController], - exports: [AccountBalanceService], - imports: [ - ExchangeRateDataModule, - ImpersonationModule, - PrismaModule, - TagModule - ], - providers: [AccountBalanceService, AccountService] + imports: [AccountBalanceServiceModule, AccountModule, ImpersonationModule] }) export class AccountBalanceModule {} diff --git a/apps/api/src/app/account/account.controller.ts b/apps/api/src/app/account/account.controller.ts index f2ef1a9596..f8ee15503b 100644 --- a/apps/api/src/app/account/account.controller.ts +++ b/apps/api/src/app/account/account.controller.ts @@ -1,10 +1,11 @@ -import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service'; import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator'; import { Impersonation } from '@ghostfolio/api/decorators/impersonation.decorator'; import { RequiresScope } from '@ghostfolio/api/decorators/requires-scope.decorator'; import { RedactValuesInResponseInterceptor } from '@ghostfolio/api/interceptors/redact-values-in-response/redact-values-in-response.interceptor'; import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor'; +import { AccountBalanceService } from '@ghostfolio/api/services/account-balance/account-balance.service'; +import { AccountService } from '@ghostfolio/api/services/account/account.service'; import { ApiService } from '@ghostfolio/api/services/api/api.service'; import { CreateAccountDto, @@ -35,7 +36,6 @@ import { import { Account as AccountModel } from '@prisma/client'; import { StatusCodes, getReasonPhrase } from 'http-status-codes'; -import { AccountService } from './account.service'; import { GetAllAccountsDto } from './get-all-accounts.dto'; @Controller('account') diff --git a/apps/api/src/app/account/account.module.ts b/apps/api/src/app/account/account.module.ts index 47b859ba34..c2ba8b625a 100644 --- a/apps/api/src/app/account/account.module.ts +++ b/apps/api/src/app/account/account.module.ts @@ -1,34 +1,27 @@ -import { AccountBalanceModule } from '@ghostfolio/api/app/account-balance/account-balance.module'; import { PortfolioModule } from '@ghostfolio/api/app/portfolio/portfolio.module'; import { UserModule } from '@ghostfolio/api/app/user/user.module'; import { RedactValuesInResponseModule } from '@ghostfolio/api/interceptors/redact-values-in-response/redact-values-in-response.module'; +import { AccountBalanceModule } from '@ghostfolio/api/services/account-balance/account-balance.module'; +import { AccountModule as AccountServiceModule } from '@ghostfolio/api/services/account/account.module'; import { ApiModule } from '@ghostfolio/api/services/api/api.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; -import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; import { ImpersonationModule } from '@ghostfolio/api/services/impersonation/impersonation.module'; -import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; -import { TagModule } from '@ghostfolio/api/services/tag/tag.module'; import { Module } from '@nestjs/common'; import { AccountController } from './account.controller'; -import { AccountService } from './account.service'; @Module({ controllers: [AccountController], - exports: [AccountService], imports: [ AccountBalanceModule, + AccountServiceModule, ApiModule, ConfigurationModule, - ExchangeRateDataModule, ImpersonationModule, PortfolioModule, - PrismaModule, RedactValuesInResponseModule, - TagModule, UserModule - ], - providers: [AccountService] + ] }) export class AccountModule {} diff --git a/apps/api/src/app/activities/activities.module.ts b/apps/api/src/app/activities/activities.module.ts index 6eb437af87..9890de08f0 100644 --- a/apps/api/src/app/activities/activities.module.ts +++ b/apps/api/src/app/activities/activities.module.ts @@ -1,8 +1,8 @@ -import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; -import { AccountService } from '@ghostfolio/api/app/account/account.service'; import { RedactValuesInResponseModule } from '@ghostfolio/api/interceptors/redact-values-in-response/redact-values-in-response.module'; import { TransformDataSourceInRequestModule } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.module'; import { TransformDataSourceInResponseModule } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.module'; +import { AccountBalanceModule } from '@ghostfolio/api/services/account-balance/account-balance.module'; +import { AccountModule } from '@ghostfolio/api/services/account/account.module'; import { ApiModule } from '@ghostfolio/api/services/api/api.module'; import { AssetProfileSplitModule } from '@ghostfolio/api/services/asset-profile-split/asset-profile-split.module'; import { BenchmarkModule } from '@ghostfolio/api/services/benchmark/benchmark.module'; @@ -25,6 +25,8 @@ import { ActivitiesService } from './activities.service'; controllers: [ActivitiesController], exports: [ActivitiesService], imports: [ + AccountBalanceModule, + AccountModule, ApiModule, AssetProfileSplitModule, BenchmarkModule, @@ -41,6 +43,6 @@ import { ActivitiesService } from './activities.service'; TransformDataSourceInRequestModule, TransformDataSourceInResponseModule ], - providers: [AccountBalanceService, AccountService, ActivitiesService] + providers: [ActivitiesService] }) export class ActivitiesModule {} diff --git a/apps/api/src/app/activities/activities.service.spec.ts b/apps/api/src/app/activities/activities.service.spec.ts index b32d209ad0..a91ca439da 100644 --- a/apps/api/src/app/activities/activities.service.spec.ts +++ b/apps/api/src/app/activities/activities.service.spec.ts @@ -1,9 +1,9 @@ -import { AccountService } from '@ghostfolio/api/app/account/account.service'; import { activityDummyData, assetProfileDummyData } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator-test-utils'; import { WHERE_ACTIVITY_NOT_DRAFT } from '@ghostfolio/api/helper/activity.helper'; +import { AccountService } from '@ghostfolio/api/services/account/account.service'; import { AssetProfileSplitService } from '@ghostfolio/api/services/asset-profile-split/asset-profile-split.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; diff --git a/apps/api/src/app/activities/activities.service.ts b/apps/api/src/app/activities/activities.service.ts index 4a20658f97..a6f6f09353 100644 --- a/apps/api/src/app/activities/activities.service.ts +++ b/apps/api/src/app/activities/activities.service.ts @@ -1,6 +1,3 @@ -import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; -import { AccountService } from '@ghostfolio/api/app/account/account.service'; -import { CashDetails } from '@ghostfolio/api/app/account/interfaces/cash-details.interface'; import { AssetProfileChangedEvent } from '@ghostfolio/api/events/asset-profile-changed.event'; import { PortfolioChangedEvent } from '@ghostfolio/api/events/portfolio-changed.event'; import { WHERE_ACCOUNT_NOT_EXCLUDED } from '@ghostfolio/api/helper/account.helper'; @@ -11,6 +8,9 @@ import { WHERE_ACTIVITY_NOT_DRAFT } from '@ghostfolio/api/helper/activity.helper'; import { LogPerformance } from '@ghostfolio/api/interceptors/performance-logging/performance-logging.interceptor'; +import { AccountBalanceService } from '@ghostfolio/api/services/account-balance/account-balance.service'; +import { AccountService } from '@ghostfolio/api/services/account/account.service'; +import { CashDetails } from '@ghostfolio/api/services/account/interfaces/cash-details.interface'; import { adjustActivityBySplits } from '@ghostfolio/api/services/asset-profile-split/asset-profile-split.helper'; import { AssetProfileSplitService } from '@ghostfolio/api/services/asset-profile-split/asset-profile-split.service'; import { BenchmarkService } from '@ghostfolio/api/services/benchmark/benchmark.service'; diff --git a/apps/api/src/app/app.module.ts b/apps/api/src/app/app.module.ts index 2bcbbdaf4a..03972300b5 100644 --- a/apps/api/src/app/app.module.ts +++ b/apps/api/src/app/app.module.ts @@ -35,6 +35,7 @@ import { ThrottlerModule } from '@nestjs/throttler'; import { getReasonPhrase, StatusCodes } from 'http-status-codes'; import { join } from 'node:path'; +import { AccountBalanceModule } from './account-balance/account-balance.module'; import { AccountModule } from './account/account.module'; import { ActivitiesModule } from './activities/activities.module'; import { AdminModule } from './admin/admin.module'; @@ -72,6 +73,7 @@ import { UserModule } from './user/user.module'; imports: [ AdminModule, AccessesModule, + AccountBalanceModule, AccountModule, ActivitiesModule, AiModule, diff --git a/apps/api/src/app/endpoints/benchmarks/benchmarks.module.ts b/apps/api/src/app/endpoints/benchmarks/benchmarks.module.ts index 29dc7190d0..96d860adf1 100644 --- a/apps/api/src/app/endpoints/benchmarks/benchmarks.module.ts +++ b/apps/api/src/app/endpoints/benchmarks/benchmarks.module.ts @@ -1,5 +1,3 @@ -import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; -import { AccountService } from '@ghostfolio/api/app/account/account.service'; import { ActivitiesModule } from '@ghostfolio/api/app/activities/activities.module'; import { PortfolioCalculatorFactory } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator.factory'; import { CurrentRateService } from '@ghostfolio/api/app/portfolio/current-rate.service'; @@ -9,6 +7,8 @@ import { SymbolModule } from '@ghostfolio/api/app/symbol/symbol.module'; import { UserModule } from '@ghostfolio/api/app/user/user.module'; import { TransformDataSourceInRequestModule } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.module'; import { TransformDataSourceInResponseModule } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.module'; +import { AccountBalanceModule } from '@ghostfolio/api/services/account-balance/account-balance.module'; +import { AccountModule } from '@ghostfolio/api/services/account/account.module'; import { ApiModule } from '@ghostfolio/api/services/api/api.module'; import { BenchmarkService } from '@ghostfolio/api/services/benchmark/benchmark.service'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; @@ -23,7 +23,6 @@ import { PropertyModule } from '@ghostfolio/api/services/property/property.modul import { PortfolioSnapshotQueueModule } from '@ghostfolio/api/services/queues/portfolio-snapshot/portfolio-snapshot.module'; import { RedisCacheModule } from '@ghostfolio/api/services/redis-cache/redis-cache.module'; import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile/symbol-profile.module'; -import { TagModule } from '@ghostfolio/api/services/tag/tag.module'; import { Module } from '@nestjs/common'; @@ -33,6 +32,8 @@ import { BenchmarksService } from './benchmarks.service'; @Module({ controllers: [BenchmarksController], imports: [ + AccountBalanceModule, + AccountModule, ActivitiesModule, ApiModule, ConfigurationModule, @@ -47,14 +48,11 @@ import { BenchmarksService } from './benchmarks.service'; RedisCacheModule, SymbolModule, SymbolProfileModule, - TagModule, TransformDataSourceInRequestModule, TransformDataSourceInResponseModule, UserModule ], providers: [ - AccountBalanceService, - AccountService, BenchmarkService, BenchmarksService, CurrentRateService, diff --git a/apps/api/src/app/endpoints/export/export.module.ts b/apps/api/src/app/endpoints/export/export.module.ts index 6158fe043c..b95476e77d 100644 --- a/apps/api/src/app/endpoints/export/export.module.ts +++ b/apps/api/src/app/endpoints/export/export.module.ts @@ -1,6 +1,6 @@ -import { AccountModule } from '@ghostfolio/api/app/account/account.module'; import { ActivitiesModule } from '@ghostfolio/api/app/activities/activities.module'; import { TransformDataSourceInRequestModule } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.module'; +import { AccountModule } from '@ghostfolio/api/services/account/account.module'; import { ApiModule } from '@ghostfolio/api/services/api/api.module'; import { MarketDataModule } from '@ghostfolio/api/services/market-data/market-data.module'; import { TagModule } from '@ghostfolio/api/services/tag/tag.module'; diff --git a/apps/api/src/app/endpoints/export/export.service.ts b/apps/api/src/app/endpoints/export/export.service.ts index db08f62052..415d7be589 100644 --- a/apps/api/src/app/endpoints/export/export.service.ts +++ b/apps/api/src/app/endpoints/export/export.service.ts @@ -1,6 +1,6 @@ -import { AccountService } from '@ghostfolio/api/app/account/account.service'; import { ActivitiesService } from '@ghostfolio/api/app/activities/activities.service'; import { environment } from '@ghostfolio/api/environments/environment'; +import { AccountService } from '@ghostfolio/api/services/account/account.service'; import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; import { TagService } from '@ghostfolio/api/services/tag/tag.service'; import { diff --git a/apps/api/src/app/endpoints/mcp/mcp.module.ts b/apps/api/src/app/endpoints/mcp/mcp.module.ts index 345da24f24..1c32b7754c 100644 --- a/apps/api/src/app/endpoints/mcp/mcp.module.ts +++ b/apps/api/src/app/endpoints/mcp/mcp.module.ts @@ -1,5 +1,3 @@ -import { AccountBalanceModule } from '@ghostfolio/api/app/account-balance/account-balance.module'; -import { AccountModule } from '@ghostfolio/api/app/account/account.module'; import { SymbolModule } from '@ghostfolio/api/app/symbol/symbol.module'; import { UserModule } from '@ghostfolio/api/app/user/user.module'; import { environment } from '@ghostfolio/api/environments/environment'; @@ -7,6 +5,8 @@ import { getMcpUserOfBearerToken, hasLimitsOfBasicSubscriptionOfBearerToken } from '@ghostfolio/api/helper/bearer-token.helper'; +import { AccountBalanceModule } from '@ghostfolio/api/services/account-balance/account-balance.module'; +import { AccountModule } from '@ghostfolio/api/services/account/account.module'; import { ApiModule } from '@ghostfolio/api/services/api/api.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; diff --git a/apps/api/src/app/endpoints/mcp/mcp.service.spec.ts b/apps/api/src/app/endpoints/mcp/mcp.service.spec.ts index df5bcec384..3df77226ce 100644 --- a/apps/api/src/app/endpoints/mcp/mcp.service.spec.ts +++ b/apps/api/src/app/endpoints/mcp/mcp.service.spec.ts @@ -1,9 +1,9 @@ -import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; -import { AccountService } from '@ghostfolio/api/app/account/account.service'; import { SymbolService } from '@ghostfolio/api/app/symbol/symbol.service'; import { UserService } from '@ghostfolio/api/app/user/user.service'; import { CallerFacingError } from '@ghostfolio/api/errors/caller-facing.error'; import { encodeDataSource } from '@ghostfolio/api/helper/data-source.helper'; +import { AccountBalanceService } from '@ghostfolio/api/services/account-balance/account-balance.service'; +import { AccountService } from '@ghostfolio/api/services/account/account.service'; import { ApiService } from '@ghostfolio/api/services/api/api.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { ImportValidationError } from '@ghostfolio/api/services/import/errors/import-validation.error'; diff --git a/apps/api/src/app/endpoints/mcp/mcp.service.ts b/apps/api/src/app/endpoints/mcp/mcp.service.ts index 9661d3041e..486e954e9e 100644 --- a/apps/api/src/app/endpoints/mcp/mcp.service.ts +++ b/apps/api/src/app/endpoints/mcp/mcp.service.ts @@ -1,5 +1,3 @@ -import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; -import { AccountService } from '@ghostfolio/api/app/account/account.service'; import { SymbolService } from '@ghostfolio/api/app/symbol/symbol.service'; import { UserService } from '@ghostfolio/api/app/user/user.service'; import { CallerFacingError } from '@ghostfolio/api/errors/caller-facing.error'; @@ -7,6 +5,8 @@ import { transformDataSourceInRequest, transformDataSourceInResponse } from '@ghostfolio/api/helper/data-source.helper'; +import { AccountBalanceService } from '@ghostfolio/api/services/account-balance/account-balance.service'; +import { AccountService } from '@ghostfolio/api/services/account/account.service'; import { ApiService } from '@ghostfolio/api/services/api/api.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { ImportService } from '@ghostfolio/api/services/import/import.service'; diff --git a/apps/api/src/app/endpoints/public/public.module.ts b/apps/api/src/app/endpoints/public/public.module.ts index 34b94e378b..64ffee58f3 100644 --- a/apps/api/src/app/endpoints/public/public.module.ts +++ b/apps/api/src/app/endpoints/public/public.module.ts @@ -1,5 +1,3 @@ -import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; -import { AccountService } from '@ghostfolio/api/app/account/account.service'; import { ActivitiesModule } from '@ghostfolio/api/app/activities/activities.module'; import { PortfolioCalculatorFactory } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator.factory'; import { CurrentRateService } from '@ghostfolio/api/app/portfolio/current-rate.service'; @@ -8,17 +6,17 @@ import { RulesService } from '@ghostfolio/api/app/portfolio/rules.service'; import { UserModule } from '@ghostfolio/api/app/user/user.module'; import { TransformDataSourceInRequestModule } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.module'; import { AccessModule } from '@ghostfolio/api/services/access/access.module'; +import { AccountBalanceModule } from '@ghostfolio/api/services/account-balance/account-balance.module'; +import { AccountModule } from '@ghostfolio/api/services/account/account.module'; import { BenchmarkModule } from '@ghostfolio/api/services/benchmark/benchmark.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; import { I18nModule } from '@ghostfolio/api/services/i18n/i18n.module'; import { ImpersonationModule } from '@ghostfolio/api/services/impersonation/impersonation.module'; import { MarketDataModule } from '@ghostfolio/api/services/market-data/market-data.module'; -import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; import { PortfolioSnapshotQueueModule } from '@ghostfolio/api/services/queues/portfolio-snapshot/portfolio-snapshot.module'; import { RedisCacheModule } from '@ghostfolio/api/services/redis-cache/redis-cache.module'; import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile/symbol-profile.module'; -import { TagModule } from '@ghostfolio/api/services/tag/tag.module'; import { Module } from '@nestjs/common'; @@ -29,6 +27,8 @@ import { PublicService } from './public.service'; controllers: [PublicController], imports: [ AccessModule, + AccountBalanceModule, + AccountModule, ActivitiesModule, BenchmarkModule, DataProviderModule, @@ -37,16 +37,12 @@ import { PublicService } from './public.service'; ImpersonationModule, MarketDataModule, PortfolioSnapshotQueueModule, - PrismaModule, RedisCacheModule, SymbolProfileModule, - TagModule, TransformDataSourceInRequestModule, UserModule ], providers: [ - AccountBalanceService, - AccountService, CurrentRateService, PortfolioCalculatorFactory, PortfolioService, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-cash.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-cash.spec.ts index 67aa90899e..720c1c196c 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-cash.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-cash.spec.ts @@ -1,5 +1,3 @@ -import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; -import { AccountService } from '@ghostfolio/api/app/account/account.service'; import { ActivitiesService } from '@ghostfolio/api/app/activities/activities.service'; import { activityDummyData, @@ -9,6 +7,8 @@ import { import { PortfolioCalculatorFactory } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator.factory'; import { CurrentRateService } from '@ghostfolio/api/app/portfolio/current-rate.service'; import { CurrentRateServiceMock } from '@ghostfolio/api/app/portfolio/current-rate.service.mock'; +import { AccountBalanceService } from '@ghostfolio/api/services/account-balance/account-balance.service'; +import { AccountService } from '@ghostfolio/api/services/account/account.service'; import { AssetProfileSplitService } from '@ghostfolio/api/services/asset-profile-split/asset-profile-split.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; diff --git a/apps/api/src/app/portfolio/calculator/roi/portfolio-calculator-cash.spec.ts b/apps/api/src/app/portfolio/calculator/roi/portfolio-calculator-cash.spec.ts index 1f44b6ce2b..b02f87751c 100644 --- a/apps/api/src/app/portfolio/calculator/roi/portfolio-calculator-cash.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roi/portfolio-calculator-cash.spec.ts @@ -1,5 +1,3 @@ -import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; -import { AccountService } from '@ghostfolio/api/app/account/account.service'; import { ActivitiesService } from '@ghostfolio/api/app/activities/activities.service'; import { activityDummyData, @@ -10,6 +8,8 @@ import { import { PortfolioCalculatorFactory } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator.factory'; import { CurrentRateService } from '@ghostfolio/api/app/portfolio/current-rate.service'; import { CurrentRateServiceMock } from '@ghostfolio/api/app/portfolio/current-rate.service.mock'; +import { AccountBalanceService } from '@ghostfolio/api/services/account-balance/account-balance.service'; +import { AccountService } from '@ghostfolio/api/services/account/account.service'; import { AssetProfileSplitService } from '@ghostfolio/api/services/asset-profile-split/asset-profile-split.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; diff --git a/apps/api/src/app/portfolio/portfolio.module.ts b/apps/api/src/app/portfolio/portfolio.module.ts index f533c83158..c8b3236709 100644 --- a/apps/api/src/app/portfolio/portfolio.module.ts +++ b/apps/api/src/app/portfolio/portfolio.module.ts @@ -1,5 +1,3 @@ -import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; -import { AccountService } from '@ghostfolio/api/app/account/account.service'; import { ActivitiesModule } from '@ghostfolio/api/app/activities/activities.module'; import { UserModule } from '@ghostfolio/api/app/user/user.module'; import { PerformanceLoggingModule } from '@ghostfolio/api/interceptors/performance-logging/performance-logging.module'; @@ -7,6 +5,8 @@ import { RedactValuesInResponseModule } from '@ghostfolio/api/interceptors/redac import { TransformDataSourceInRequestModule } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.module'; import { TransformDataSourceInResponseModule } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.module'; import { AccessModule } from '@ghostfolio/api/services/access/access.module'; +import { AccountBalanceModule } from '@ghostfolio/api/services/account-balance/account-balance.module'; +import { AccountModule } from '@ghostfolio/api/services/account/account.module'; import { ApiModule } from '@ghostfolio/api/services/api/api.module'; import { BenchmarkModule } from '@ghostfolio/api/services/benchmark/benchmark.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; @@ -15,12 +15,10 @@ import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-d import { I18nModule } from '@ghostfolio/api/services/i18n/i18n.module'; import { ImpersonationModule } from '@ghostfolio/api/services/impersonation/impersonation.module'; import { MarketDataModule } from '@ghostfolio/api/services/market-data/market-data.module'; -import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; import { DataGatheringQueueModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; import { PortfolioSnapshotQueueModule } from '@ghostfolio/api/services/queues/portfolio-snapshot/portfolio-snapshot.module'; import { RedisCacheModule } from '@ghostfolio/api/services/redis-cache/redis-cache.module'; import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile/symbol-profile.module'; -import { TagModule } from '@ghostfolio/api/services/tag/tag.module'; import { Module } from '@nestjs/common'; @@ -35,6 +33,8 @@ import { RulesService } from './rules.service'; exports: [PortfolioService], imports: [ AccessModule, + AccountBalanceModule, + AccountModule, ActivitiesModule, ApiModule, BenchmarkModule, @@ -47,18 +47,14 @@ import { RulesService } from './rules.service'; MarketDataModule, PerformanceLoggingModule, PortfolioSnapshotQueueModule, - PrismaModule, RedactValuesInResponseModule, RedisCacheModule, SymbolProfileModule, - TagModule, TransformDataSourceInRequestModule, TransformDataSourceInResponseModule, UserModule ], providers: [ - AccountBalanceService, - AccountService, CurrentRateService, PortfolioCalculatorFactory, PortfolioService, diff --git a/apps/api/src/app/portfolio/portfolio.service.spec.ts b/apps/api/src/app/portfolio/portfolio.service.spec.ts index 12d2b3147e..7e74e5a287 100644 --- a/apps/api/src/app/portfolio/portfolio.service.spec.ts +++ b/apps/api/src/app/portfolio/portfolio.service.spec.ts @@ -1,12 +1,12 @@ -import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; -import { AccountService } from '@ghostfolio/api/app/account/account.service'; -import { CashDetails } from '@ghostfolio/api/app/account/interfaces/cash-details.interface'; import { ActivitiesService } from '@ghostfolio/api/app/activities/activities.service'; import { PortfolioCalculator } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator'; import { userDummyData } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator-test-utils'; import { PortfolioCalculatorFactory } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator.factory'; import { CurrentRateService } from '@ghostfolio/api/app/portfolio/current-rate.service'; import { UserService } from '@ghostfolio/api/app/user/user.service'; +import { AccountBalanceService } from '@ghostfolio/api/services/account-balance/account-balance.service'; +import { AccountService } from '@ghostfolio/api/services/account/account.service'; +import { CashDetails } from '@ghostfolio/api/services/account/interfaces/cash-details.interface'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index a8a3fc6740..cba3e644ed 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -1,6 +1,3 @@ -import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; -import { AccountService } from '@ghostfolio/api/app/account/account.service'; -import { CashDetails } from '@ghostfolio/api/app/account/interfaces/cash-details.interface'; import { ActivitiesService } from '@ghostfolio/api/app/activities/activities.service'; import { UserService } from '@ghostfolio/api/app/user/user.service'; import { getFactor } from '@ghostfolio/api/helper/portfolio.helper'; @@ -21,6 +18,9 @@ import { RegionalMarketClusterRiskEmergingMarkets } from '@ghostfolio/api/models import { RegionalMarketClusterRiskEurope } from '@ghostfolio/api/models/rules/regional-market-cluster-risk/europe'; import { RegionalMarketClusterRiskJapan } from '@ghostfolio/api/models/rules/regional-market-cluster-risk/japan'; import { RegionalMarketClusterRiskNorthAmerica } from '@ghostfolio/api/models/rules/regional-market-cluster-risk/north-america'; +import { AccountBalanceService } from '@ghostfolio/api/services/account-balance/account-balance.service'; +import { AccountService } from '@ghostfolio/api/services/account/account.service'; +import { CashDetails } from '@ghostfolio/api/services/account/interfaces/cash-details.interface'; import { BenchmarkService } from '@ghostfolio/api/services/benchmark/benchmark.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; diff --git a/apps/api/src/services/account-balance/account-balance.module.ts b/apps/api/src/services/account-balance/account-balance.module.ts new file mode 100644 index 0000000000..21a55c038f --- /dev/null +++ b/apps/api/src/services/account-balance/account-balance.module.ts @@ -0,0 +1,13 @@ +import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; +import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; + +import { Module } from '@nestjs/common'; + +import { AccountBalanceService } from './account-balance.service'; + +@Module({ + exports: [AccountBalanceService], + imports: [ExchangeRateDataModule, PrismaModule], + providers: [AccountBalanceService] +}) +export class AccountBalanceModule {} diff --git a/apps/api/src/app/account-balance/account-balance.service.ts b/apps/api/src/services/account-balance/account-balance.service.ts similarity index 100% rename from apps/api/src/app/account-balance/account-balance.service.ts rename to apps/api/src/services/account-balance/account-balance.service.ts diff --git a/apps/api/src/services/account/account.module.ts b/apps/api/src/services/account/account.module.ts new file mode 100644 index 0000000000..35767d86f0 --- /dev/null +++ b/apps/api/src/services/account/account.module.ts @@ -0,0 +1,20 @@ +import { AccountBalanceModule } from '@ghostfolio/api/services/account-balance/account-balance.module'; +import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; +import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; +import { TagModule } from '@ghostfolio/api/services/tag/tag.module'; + +import { Module } from '@nestjs/common'; + +import { AccountService } from './account.service'; + +@Module({ + exports: [AccountService], + imports: [ + AccountBalanceModule, + ExchangeRateDataModule, + PrismaModule, + TagModule + ], + providers: [AccountService] +}) +export class AccountModule {} diff --git a/apps/api/src/app/account/account.service.ts b/apps/api/src/services/account/account.service.ts similarity index 98% rename from apps/api/src/app/account/account.service.ts rename to apps/api/src/services/account/account.service.ts index ebf7a1ab70..4cbc7cd648 100644 --- a/apps/api/src/app/account/account.service.ts +++ b/apps/api/src/services/account/account.service.ts @@ -1,9 +1,9 @@ -import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; import { PortfolioChangedEvent } from '@ghostfolio/api/events/portfolio-changed.event'; import { getWhereAccountBalanceNotInFuture, WHERE_ACCOUNT_NOT_EXCLUDED } from '@ghostfolio/api/helper/account.helper'; +import { AccountBalanceService } from '@ghostfolio/api/services/account-balance/account-balance.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; import { TagService } from '@ghostfolio/api/services/tag/tag.service'; diff --git a/apps/api/src/app/account/interfaces/cash-details.interface.ts b/apps/api/src/services/account/interfaces/cash-details.interface.ts similarity index 100% rename from apps/api/src/app/account/interfaces/cash-details.interface.ts rename to apps/api/src/services/account/interfaces/cash-details.interface.ts diff --git a/apps/api/src/services/import/import.module.ts b/apps/api/src/services/import/import.module.ts index d45dcd86d7..1faca48b3d 100644 --- a/apps/api/src/services/import/import.module.ts +++ b/apps/api/src/services/import/import.module.ts @@ -1,6 +1,6 @@ -import { AccountModule } from '@ghostfolio/api/app/account/account.module'; import { ActivitiesModule } from '@ghostfolio/api/app/activities/activities.module'; import { PortfolioModule } from '@ghostfolio/api/app/portfolio/portfolio.module'; +import { AccountModule } from '@ghostfolio/api/services/account/account.module'; import { ApiModule } from '@ghostfolio/api/services/api/api.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; diff --git a/apps/api/src/services/import/import.service.spec.ts b/apps/api/src/services/import/import.service.spec.ts index d6d41134a5..4e0bea8629 100644 --- a/apps/api/src/services/import/import.service.spec.ts +++ b/apps/api/src/services/import/import.service.spec.ts @@ -1,6 +1,6 @@ -import { AccountService } from '@ghostfolio/api/app/account/account.service'; import { ActivitiesService } from '@ghostfolio/api/app/activities/activities.service'; import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service'; +import { AccountService } from '@ghostfolio/api/services/account/account.service'; import { ApiService } from '@ghostfolio/api/services/api/api.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; diff --git a/apps/api/src/services/import/import.service.ts b/apps/api/src/services/import/import.service.ts index 57132691bd..720c4b74ef 100644 --- a/apps/api/src/services/import/import.service.ts +++ b/apps/api/src/services/import/import.service.ts @@ -1,8 +1,8 @@ -import { AccountService } from '@ghostfolio/api/app/account/account.service'; import { ActivitiesService } from '@ghostfolio/api/app/activities/activities.service'; import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service'; import { getTagsWithDraftTag } from '@ghostfolio/api/helper/activity.helper'; import { getMaskedGhostfolioDataSource } from '@ghostfolio/api/helper/data-source.helper'; +import { AccountService } from '@ghostfolio/api/services/account/account.service'; import { ApiService } from '@ghostfolio/api/services/api/api.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; diff --git a/apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.module.ts b/apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.module.ts index 617bf1aae4..b4c2ab40bf 100644 --- a/apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.module.ts +++ b/apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.module.ts @@ -1,7 +1,7 @@ -import { AccountBalanceModule } from '@ghostfolio/api/app/account-balance/account-balance.module'; import { ActivitiesModule } from '@ghostfolio/api/app/activities/activities.module'; import { PortfolioCalculatorFactory } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator.factory'; import { CurrentRateService } from '@ghostfolio/api/app/portfolio/current-rate.service'; +import { AccountBalanceModule } from '@ghostfolio/api/services/account-balance/account-balance.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; diff --git a/apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.processor.ts b/apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.processor.ts index b9628f9447..c82fc6ac9d 100644 --- a/apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.processor.ts +++ b/apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.processor.ts @@ -1,7 +1,7 @@ -import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; import { ActivitiesService } from '@ghostfolio/api/app/activities/activities.service'; import { PortfolioCalculatorFactory } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator.factory'; import { PortfolioSnapshotValue } from '@ghostfolio/api/app/portfolio/interfaces/snapshot-value.interface'; +import { AccountBalanceService } from '@ghostfolio/api/services/account-balance/account-balance.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { RedisCacheService } from '@ghostfolio/api/services/redis-cache/redis-cache.service'; import {