diff --git a/apps/api/src/app/app.module.ts b/apps/api/src/app/app.module.ts index 3d262814fe..0c332f504a 100644 --- a/apps/api/src/app/app.module.ts +++ b/apps/api/src/app/app.module.ts @@ -50,6 +50,9 @@ import { BenchmarksModule } from './endpoints/benchmarks/benchmarks.module'; import { CacheModule } from './endpoints/cache/cache.module'; import { GhostfolioModule } from './endpoints/data-providers/ghostfolio/ghostfolio.module'; import { ExchangeRatesModule } from './endpoints/exchange-rates/exchange-rates.module'; +import { ExportModule } from './endpoints/export/export.module'; +import { HealthModule } from './endpoints/health/health.module'; +import { ImportModule } from './endpoints/import/import.module'; import { InfoModule } from './endpoints/info/info.module'; import { LogoModule } from './endpoints/logo/logo.module'; import { MarketDataModule } from './endpoints/market-data/market-data.module'; @@ -59,9 +62,6 @@ import { PublicModule } from './endpoints/public/public.module'; import { SitemapModule } from './endpoints/sitemap/sitemap.module'; import { TagsModule } from './endpoints/tags/tags.module'; import { WatchlistModule } from './endpoints/watchlist/watchlist.module'; -import { ExportModule } from './export/export.module'; -import { HealthModule } from './health/health.module'; -import { ImportModule } from './import/import.module'; import { PortfolioModule } from './portfolio/portfolio.module'; import { SubscriptionModule } from './subscription/subscription.module'; import { SymbolModule } from './symbol/symbol.module'; diff --git a/apps/api/src/app/export/export.controller.ts b/apps/api/src/app/endpoints/export/export.controller.ts similarity index 100% rename from apps/api/src/app/export/export.controller.ts rename to apps/api/src/app/endpoints/export/export.controller.ts diff --git a/apps/api/src/app/export/export.module.ts b/apps/api/src/app/endpoints/export/export.module.ts similarity index 100% rename from apps/api/src/app/export/export.module.ts rename to apps/api/src/app/endpoints/export/export.module.ts diff --git a/apps/api/src/app/export/export.service.ts b/apps/api/src/app/endpoints/export/export.service.ts similarity index 100% rename from apps/api/src/app/export/export.service.ts rename to apps/api/src/app/endpoints/export/export.service.ts diff --git a/apps/api/src/app/export/get-export.dto.ts b/apps/api/src/app/endpoints/export/get-export.dto.ts similarity index 100% rename from apps/api/src/app/export/get-export.dto.ts rename to apps/api/src/app/endpoints/export/get-export.dto.ts diff --git a/apps/api/src/app/health/health.controller.ts b/apps/api/src/app/endpoints/health/health.controller.ts similarity index 100% rename from apps/api/src/app/health/health.controller.ts rename to apps/api/src/app/endpoints/health/health.controller.ts diff --git a/apps/api/src/app/health/health.module.ts b/apps/api/src/app/endpoints/health/health.module.ts similarity index 100% rename from apps/api/src/app/health/health.module.ts rename to apps/api/src/app/endpoints/health/health.module.ts diff --git a/apps/api/src/app/health/health.service.ts b/apps/api/src/app/endpoints/health/health.service.ts similarity index 100% rename from apps/api/src/app/health/health.service.ts rename to apps/api/src/app/endpoints/health/health.service.ts diff --git a/apps/api/src/app/import/import.controller.ts b/apps/api/src/app/endpoints/import/import.controller.ts similarity index 95% rename from apps/api/src/app/import/import.controller.ts rename to apps/api/src/app/endpoints/import/import.controller.ts index 79fde28003..846914bd03 100644 --- a/apps/api/src/app/import/import.controller.ts +++ b/apps/api/src/app/endpoints/import/import.controller.ts @@ -2,6 +2,8 @@ import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorat import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor'; import { TransformDataSourceInResponseInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor'; +import { ImportDataDto } from '@ghostfolio/api/services/import/import-data.dto'; +import { ImportService } from '@ghostfolio/api/services/import/import.service'; import { ImportResponse } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import type { RequestWithUser } from '@ghostfolio/common/types'; @@ -24,9 +26,6 @@ import { AuthGuard } from '@nestjs/passport'; import { DataSource } from '@prisma/client'; import { StatusCodes, getReasonPhrase } from 'http-status-codes'; -import { ImportDataDto } from './import-data.dto'; -import { ImportService } from './import.service'; - @Controller('import') export class ImportController { private readonly logger = new Logger(ImportController.name); diff --git a/apps/api/src/app/endpoints/import/import.module.ts b/apps/api/src/app/endpoints/import/import.module.ts new file mode 100644 index 0000000000..c0d870a4f0 --- /dev/null +++ b/apps/api/src/app/endpoints/import/import.module.ts @@ -0,0 +1,17 @@ +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 { ImportModule as ImportServiceModule } from '@ghostfolio/api/services/import/import.module'; + +import { Module } from '@nestjs/common'; + +import { ImportController } from './import.controller'; + +@Module({ + controllers: [ImportController], + imports: [ + ImportServiceModule, + TransformDataSourceInRequestModule, + TransformDataSourceInResponseModule + ] +}) +export class ImportModule {} diff --git a/apps/api/src/app/endpoints/mcp/mcp.module.ts b/apps/api/src/app/endpoints/mcp/mcp.module.ts index c1e2885b7f..efa8917404 100644 --- a/apps/api/src/app/endpoints/mcp/mcp.module.ts +++ b/apps/api/src/app/endpoints/mcp/mcp.module.ts @@ -1,6 +1,5 @@ import { AccountBalanceModule } from '@ghostfolio/api/app/account-balance/account-balance.module'; import { AccountModule } from '@ghostfolio/api/app/account/account.module'; -import { ImportModule } from '@ghostfolio/api/app/import/import.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'; @@ -8,6 +7,7 @@ import { getMcpUserOfBearerToken } from '@ghostfolio/api/helper/bearer-token.hel 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'; +import { ImportModule } from '@ghostfolio/api/services/import/import.module'; import { PortfolioTableModule } from '@ghostfolio/api/services/portfolio-table/portfolio-table.module'; import { PortfolioTableService } from '@ghostfolio/api/services/portfolio-table/portfolio-table.service'; import { MCP_ENDPOINT } from '@ghostfolio/common/config'; 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 d89af1a84d..41f5cd5f6c 100644 --- a/apps/api/src/app/endpoints/mcp/mcp.service.spec.ts +++ b/apps/api/src/app/endpoints/mcp/mcp.service.spec.ts @@ -1,13 +1,13 @@ import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; import { AccountService } from '@ghostfolio/api/app/account/account.service'; -import { ImportValidationError } from '@ghostfolio/api/app/import/errors/import-validation.error'; -import { ImportService } from '@ghostfolio/api/app/import/import.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 { 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'; +import { ImportService } from '@ghostfolio/api/services/import/import.service'; import { PortfolioTableService } from '@ghostfolio/api/services/portfolio-table/portfolio-table.service'; import { DEFAULT_LANGUAGE_CODE, diff --git a/apps/api/src/app/endpoints/mcp/mcp.service.ts b/apps/api/src/app/endpoints/mcp/mcp.service.ts index c3aa289dd5..780e41e31d 100644 --- a/apps/api/src/app/endpoints/mcp/mcp.service.ts +++ b/apps/api/src/app/endpoints/mcp/mcp.service.ts @@ -1,6 +1,5 @@ import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; import { AccountService } from '@ghostfolio/api/app/account/account.service'; -import { ImportService } from '@ghostfolio/api/app/import/import.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'; @@ -10,6 +9,7 @@ import { } from '@ghostfolio/api/helper/data-source.helper'; 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'; import { PortfolioTableService } from '@ghostfolio/api/services/portfolio-table/portfolio-table.service'; import { getIntervalFromDateRange } from '@ghostfolio/common/calculation-helper'; import { DEFAULT_LANGUAGE_CODE } from '@ghostfolio/common/config'; diff --git a/apps/api/src/filters/mcp-tool-exception.filter.spec.ts b/apps/api/src/filters/mcp-tool-exception.filter.spec.ts index 23eb6ff92b..b24bf6e5c6 100644 --- a/apps/api/src/filters/mcp-tool-exception.filter.spec.ts +++ b/apps/api/src/filters/mcp-tool-exception.filter.spec.ts @@ -1,5 +1,5 @@ -import { ImportValidationError } from '@ghostfolio/api/app/import/errors/import-validation.error'; import { PortfolioSnapshotComputationError } from '@ghostfolio/api/app/portfolio/errors/portfolio-snapshot-computation.error'; +import { ImportValidationError } from '@ghostfolio/api/services/import/errors/import-validation.error'; import { ForbiddenException, Logger } from '@nestjs/common'; import { getReasonPhrase, StatusCodes } from 'http-status-codes'; diff --git a/apps/api/src/services/data-provider/data-provider.service.ts b/apps/api/src/services/data-provider/data-provider.service.ts index 826e14d16a..526637891e 100644 --- a/apps/api/src/services/data-provider/data-provider.service.ts +++ b/apps/api/src/services/data-provider/data-provider.service.ts @@ -1,8 +1,8 @@ -import { ImportValidationError } from '@ghostfolio/api/app/import/errors/import-validation.error'; -import { ImportDataDto } from '@ghostfolio/api/app/import/import-data.dto'; import { getMaskedGhostfolioDataSource } from '@ghostfolio/api/helper/data-source.helper'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-provider.interface'; +import { ImportValidationError } from '@ghostfolio/api/services/import/errors/import-validation.error'; +import { ImportDataDto } from '@ghostfolio/api/services/import/import-data.dto'; import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; import { PropertyService } from '@ghostfolio/api/services/property/property.service'; diff --git a/apps/api/src/app/import/errors/import-validation.error.ts b/apps/api/src/services/import/errors/import-validation.error.ts similarity index 100% rename from apps/api/src/app/import/errors/import-validation.error.ts rename to apps/api/src/services/import/errors/import-validation.error.ts diff --git a/apps/api/src/app/import/import-data.dto.spec.ts b/apps/api/src/services/import/import-data.dto.spec.ts similarity index 100% rename from apps/api/src/app/import/import-data.dto.spec.ts rename to apps/api/src/services/import/import-data.dto.spec.ts diff --git a/apps/api/src/app/import/import-data.dto.ts b/apps/api/src/services/import/import-data.dto.ts similarity index 100% rename from apps/api/src/app/import/import-data.dto.ts rename to apps/api/src/services/import/import-data.dto.ts diff --git a/apps/api/src/app/import/import.module.ts b/apps/api/src/services/import/import.module.ts similarity index 68% rename from apps/api/src/app/import/import.module.ts rename to apps/api/src/services/import/import.module.ts index 00a386b6e2..d45dcd86d7 100644 --- a/apps/api/src/app/import/import.module.ts +++ b/apps/api/src/services/import/import.module.ts @@ -1,27 +1,21 @@ 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 { 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 { 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'; 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 { PlatformModule } from '@ghostfolio/api/services/platform/platform.module'; -import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; import { DataGatheringQueueModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.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'; -import { ImportController } from './import.controller'; import { ImportService } from './import.service'; @Module({ - controllers: [ImportController], exports: [ImportService], imports: [ AccountModule, @@ -34,12 +28,8 @@ import { ImportService } from './import.service'; MarketDataModule, PlatformModule, PortfolioModule, - PrismaModule, - RedisCacheModule, SymbolProfileModule, - TagModule, - TransformDataSourceInRequestModule, - TransformDataSourceInResponseModule + TagModule ], providers: [ImportService] }) diff --git a/apps/api/src/app/import/import.service.spec.ts b/apps/api/src/services/import/import.service.spec.ts similarity index 100% rename from apps/api/src/app/import/import.service.spec.ts rename to apps/api/src/services/import/import.service.spec.ts diff --git a/apps/api/src/app/import/import.service.ts b/apps/api/src/services/import/import.service.ts similarity index 100% rename from apps/api/src/app/import/import.service.ts rename to apps/api/src/services/import/import.service.ts diff --git a/apps/api/src/app/import/interfaces/asset-profile-to-create.interface.ts b/apps/api/src/services/import/interfaces/asset-profile-to-create.interface.ts similarity index 100% rename from apps/api/src/app/import/interfaces/asset-profile-to-create.interface.ts rename to apps/api/src/services/import/interfaces/asset-profile-to-create.interface.ts