From 76f7166dc5cb9cae90dae760aa5a3328037621c9 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 10 Apr 2026 20:27:59 +0200 Subject: [PATCH] Refactoring --- apps/api/src/app/activities/activities.module.ts | 4 ++-- apps/api/src/app/admin/admin.module.ts | 4 ++-- apps/api/src/app/admin/queue/queue.module.ts | 8 ++++---- apps/api/src/app/app.module.ts | 8 ++------ .../src/app/endpoints/watchlist/watchlist.module.ts | 4 ++-- apps/api/src/app/import/import.module.ts | 4 ++-- apps/api/src/app/info/info.module.ts | 4 ++-- apps/api/src/app/portfolio/portfolio.module.ts | 4 ++-- apps/api/src/events/events.module.ts | 4 ++-- apps/api/src/services/cron/cron.module.ts | 10 ++++------ apps/api/src/services/cron/cron.service.ts | 7 ++++--- .../queues/data-gathering/data-gathering.module.ts | 2 +- .../statistics-gathering.module.ts | 2 +- 13 files changed, 30 insertions(+), 35 deletions(-) diff --git a/apps/api/src/app/activities/activities.module.ts b/apps/api/src/app/activities/activities.module.ts index 7476ad66a..f4e592c3f 100644 --- a/apps/api/src/app/activities/activities.module.ts +++ b/apps/api/src/app/activities/activities.module.ts @@ -10,7 +10,7 @@ import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data- 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 { DataGatheringModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; +import { DataGatheringQueueModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile/symbol-profile.module'; import { Module } from '@nestjs/common'; @@ -24,7 +24,7 @@ import { ActivitiesService } from './activities.service'; imports: [ ApiModule, CacheModule, - DataGatheringModule, + DataGatheringQueueModule, DataProviderModule, ExchangeRateDataModule, ImpersonationModule, diff --git a/apps/api/src/app/admin/admin.module.ts b/apps/api/src/app/admin/admin.module.ts index 960a36629..e87df9e74 100644 --- a/apps/api/src/app/admin/admin.module.ts +++ b/apps/api/src/app/admin/admin.module.ts @@ -9,7 +9,7 @@ import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-d import { MarketDataModule } from '@ghostfolio/api/services/market-data/market-data.module'; import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; import { PropertyModule } from '@ghostfolio/api/services/property/property.module'; -import { DataGatheringModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; +import { DataGatheringQueueModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile/symbol-profile.module'; import { Module } from '@nestjs/common'; @@ -24,7 +24,7 @@ import { QueueModule } from './queue/queue.module'; ApiModule, BenchmarkModule, ConfigurationModule, - DataGatheringModule, + DataGatheringQueueModule, DataProviderModule, DemoModule, ExchangeRateDataModule, diff --git a/apps/api/src/app/admin/queue/queue.module.ts b/apps/api/src/app/admin/queue/queue.module.ts index a7cc37715..4cfb79492 100644 --- a/apps/api/src/app/admin/queue/queue.module.ts +++ b/apps/api/src/app/admin/queue/queue.module.ts @@ -1,6 +1,6 @@ -import { DataGatheringModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.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 { StatisticsGatheringModule } from '@ghostfolio/api/services/queues/statistics-gathering/statistics-gathering.module'; +import { StatisticsGatheringQueueModule } from '@ghostfolio/api/services/queues/statistics-gathering/statistics-gathering.module'; import { Module } from '@nestjs/common'; @@ -10,9 +10,9 @@ import { QueueService } from './queue.service'; @Module({ controllers: [QueueController], imports: [ - DataGatheringModule, + DataGatheringQueueModule, PortfolioSnapshotQueueModule, - StatisticsGatheringModule + StatisticsGatheringQueueModule ], providers: [QueueService] }) diff --git a/apps/api/src/app/app.module.ts b/apps/api/src/app/app.module.ts index fb2965b46..3316f9ce4 100644 --- a/apps/api/src/app/app.module.ts +++ b/apps/api/src/app/app.module.ts @@ -8,9 +8,8 @@ import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-d import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service'; import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; import { PropertyModule } from '@ghostfolio/api/services/property/property.module'; -import { DataGatheringModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.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 { StatisticsGatheringModule } from '@ghostfolio/api/services/queues/statistics-gathering/statistics-gathering.module'; import { BULL_BOARD_ROUTE, DEFAULT_LANGUAGE_CODE, @@ -110,7 +109,7 @@ import { UserModule } from './user/user.module'; ConfigModule.forRoot(), ConfigurationModule, CronModule, - DataGatheringModule, + DataGatheringQueueModule, DataProviderModule, EventEmitterModule.forRoot(), EventsModule, @@ -166,9 +165,6 @@ import { UserModule } from './user/user.module'; serveRoot: '/.well-known' }), SitemapModule, - ...(process.env.ENABLE_FEATURE_STATISTICS === 'true' - ? [StatisticsGatheringModule] - : []), SubscriptionModule, SymbolModule, TagsModule, diff --git a/apps/api/src/app/endpoints/watchlist/watchlist.module.ts b/apps/api/src/app/endpoints/watchlist/watchlist.module.ts index ce9ae12bb..9b4b960a0 100644 --- a/apps/api/src/app/endpoints/watchlist/watchlist.module.ts +++ b/apps/api/src/app/endpoints/watchlist/watchlist.module.ts @@ -5,7 +5,7 @@ import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data- 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 { DataGatheringModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; +import { DataGatheringQueueModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile/symbol-profile.module'; import { Module } from '@nestjs/common'; @@ -17,7 +17,7 @@ import { WatchlistService } from './watchlist.service'; controllers: [WatchlistController], imports: [ BenchmarkModule, - DataGatheringModule, + DataGatheringQueueModule, DataProviderModule, ImpersonationModule, MarketDataModule, diff --git a/apps/api/src/app/import/import.module.ts b/apps/api/src/app/import/import.module.ts index ca9b5667b..8aebcfa08 100644 --- a/apps/api/src/app/import/import.module.ts +++ b/apps/api/src/app/import/import.module.ts @@ -12,7 +12,7 @@ import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data- import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; import { MarketDataModule } from '@ghostfolio/api/services/market-data/market-data.module'; import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; -import { DataGatheringModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; +import { DataGatheringQueueModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile/symbol-profile.module'; import { TagModule } from '@ghostfolio/api/services/tag/tag.module'; @@ -29,7 +29,7 @@ import { ImportService } from './import.service'; ApiModule, CacheModule, ConfigurationModule, - DataGatheringModule, + DataGatheringQueueModule, DataProviderModule, ExchangeRateDataModule, MarketDataModule, diff --git a/apps/api/src/app/info/info.module.ts b/apps/api/src/app/info/info.module.ts index 9ded44600..e33c5e0c2 100644 --- a/apps/api/src/app/info/info.module.ts +++ b/apps/api/src/app/info/info.module.ts @@ -8,7 +8,7 @@ import { ConfigurationModule } from '@ghostfolio/api/services/configuration/conf 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 { PropertyModule } from '@ghostfolio/api/services/property/property.module'; -import { DataGatheringModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; +import { DataGatheringQueueModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile/symbol-profile.module'; import { Module } from '@nestjs/common'; @@ -22,7 +22,7 @@ import { InfoService } from './info.service'; imports: [ BenchmarkModule, ConfigurationModule, - DataGatheringModule, + DataGatheringQueueModule, DataProviderModule, ExchangeRateDataModule, JwtModule.register({ diff --git a/apps/api/src/app/portfolio/portfolio.module.ts b/apps/api/src/app/portfolio/portfolio.module.ts index 65a9b71aa..d818195ca 100644 --- a/apps/api/src/app/portfolio/portfolio.module.ts +++ b/apps/api/src/app/portfolio/portfolio.module.ts @@ -17,7 +17,7 @@ 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 { DataGatheringModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.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 { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile/symbol-profile.module'; @@ -38,7 +38,7 @@ import { RulesService } from './rules.service'; ApiModule, BenchmarkModule, ConfigurationModule, - DataGatheringModule, + DataGatheringQueueModule, DataProviderModule, ExchangeRateDataModule, I18nModule, diff --git a/apps/api/src/events/events.module.ts b/apps/api/src/events/events.module.ts index 772766945..df943a3c9 100644 --- a/apps/api/src/events/events.module.ts +++ b/apps/api/src/events/events.module.ts @@ -3,7 +3,7 @@ import { RedisCacheModule } from '@ghostfolio/api/app/redis-cache/redis-cache.mo 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'; -import { DataGatheringModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; +import { DataGatheringQueueModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; import { Module } from '@nestjs/common'; @@ -14,7 +14,7 @@ import { PortfolioChangedListener } from './portfolio-changed.listener'; imports: [ ActivitiesModule, ConfigurationModule, - DataGatheringModule, + DataGatheringQueueModule, DataProviderModule, ExchangeRateDataModule, RedisCacheModule diff --git a/apps/api/src/services/cron/cron.module.ts b/apps/api/src/services/cron/cron.module.ts index 9867517c1..bcc9d3360 100644 --- a/apps/api/src/services/cron/cron.module.ts +++ b/apps/api/src/services/cron/cron.module.ts @@ -2,8 +2,8 @@ import { UserModule } from '@ghostfolio/api/app/user/user.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; import { PropertyModule } from '@ghostfolio/api/services/property/property.module'; -import { DataGatheringModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; -import { StatisticsGatheringModule } from '@ghostfolio/api/services/queues/statistics-gathering/statistics-gathering.module'; +import { DataGatheringQueueModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; +import { StatisticsGatheringQueueModule } from '@ghostfolio/api/services/queues/statistics-gathering/statistics-gathering.module'; import { TwitterBotModule } from '@ghostfolio/api/services/twitter-bot/twitter-bot.module'; import { Module } from '@nestjs/common'; @@ -13,12 +13,10 @@ import { CronService } from './cron.service'; @Module({ imports: [ ConfigurationModule, - DataGatheringModule, + DataGatheringQueueModule, ExchangeRateDataModule, PropertyModule, - ...(process.env.ENABLE_FEATURE_STATISTICS === 'true' - ? [StatisticsGatheringModule] - : []), + StatisticsGatheringQueueModule, TwitterBotModule, UserModule ], diff --git a/apps/api/src/services/cron/cron.service.ts b/apps/api/src/services/cron/cron.service.ts index 735c83044..e680f0063 100644 --- a/apps/api/src/services/cron/cron.service.ts +++ b/apps/api/src/services/cron/cron.service.ts @@ -13,7 +13,7 @@ import { } from '@ghostfolio/common/config'; import { getAssetProfileIdentifier } from '@ghostfolio/common/helper'; -import { Injectable, Optional } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { Cron, CronExpression } from '@nestjs/schedule'; @Injectable() @@ -26,7 +26,6 @@ export class CronService { private readonly dataGatheringService: DataGatheringService, private readonly exchangeRateDataService: ExchangeRateDataService, private readonly propertyService: PropertyService, - @Optional() private readonly statisticsGatheringService: StatisticsGatheringService, private readonly twitterBotService: TwitterBotService, private readonly userService: UserService @@ -34,7 +33,9 @@ export class CronService { @Cron(CronExpression.EVERY_HOUR) public async runEveryHour() { - await this.statisticsGatheringService?.addJobsToQueue(); + if (this.configurationService.get('ENABLE_FEATURE_STATISTICS')) { + await this.statisticsGatheringService.addJobsToQueue(); + } } @Cron(CronService.EVERY_HOUR_AT_RANDOM_MINUTE) diff --git a/apps/api/src/services/queues/data-gathering/data-gathering.module.ts b/apps/api/src/services/queues/data-gathering/data-gathering.module.ts index f251c8d0c..d163f0d29 100644 --- a/apps/api/src/services/queues/data-gathering/data-gathering.module.ts +++ b/apps/api/src/services/queues/data-gathering/data-gathering.module.ts @@ -50,4 +50,4 @@ import { DataGatheringProcessor } from './data-gathering.processor'; providers: [DataGatheringProcessor, DataGatheringService], exports: [BullModule, DataEnhancerModule, DataGatheringService] }) -export class DataGatheringModule {} +export class DataGatheringQueueModule {} diff --git a/apps/api/src/services/queues/statistics-gathering/statistics-gathering.module.ts b/apps/api/src/services/queues/statistics-gathering/statistics-gathering.module.ts index f23e8c77a..1818dd4ec 100644 --- a/apps/api/src/services/queues/statistics-gathering/statistics-gathering.module.ts +++ b/apps/api/src/services/queues/statistics-gathering/statistics-gathering.module.ts @@ -33,4 +33,4 @@ import { StatisticsGatheringService } from './statistics-gathering.service'; ], providers: [StatisticsGatheringProcessor, StatisticsGatheringService] }) -export class StatisticsGatheringModule {} +export class StatisticsGatheringQueueModule {}