From 70a4697f54bc86958d220496647e0976e98472af Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Tue, 20 May 2025 08:22:49 +0100
Subject: [PATCH] Feature/remove deprecated endpoints in admin controller
 (#4687)

* Remove deprecated endpoints

* Update changelog
---
 CHANGELOG.md                               |  3 +
 apps/api/src/app/admin/admin.controller.ts | 70 ----------------------
 2 files changed, 3 insertions(+), 70 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 87d833bf..5b9c056d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,6 +17,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 - Extended the data providers management of the admin control panel by the asset profile count
 - Restricted the permissions of the demo user
 - Renamed `Order` to `activities` in the `User` database schema
+- Removed the deprecated endpoint `GET api/v1/admin/market-data/:dataSource/:symbol`
+- Removed the deprecated endpoint `POST api/v1/admin/market-data/:dataSource/:symbol`
+- Removed the deprecated endpoint `PUT api/v1/admin/market-data/:dataSource/:symbol/:dateString`
 - Improved the language localization for Catalan (`ca`)
 - Improved the language localization for Chinese (`zh`)
 - Improved the language localization for Dutch (`nl`)
diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts
index d8507bbb..736f6da3 100644
--- a/apps/api/src/app/admin/admin.controller.ts
+++ b/apps/api/src/app/admin/admin.controller.ts
@@ -3,7 +3,6 @@ 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 { ApiService } from '@ghostfolio/api/services/api/api.service';
 import { ManualService } from '@ghostfolio/api/services/data-provider/manual/manual.service';
-import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service';
 import { PropertyDto } from '@ghostfolio/api/services/property/property.dto';
 import { DataGatheringService } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.service';
 import {
@@ -16,7 +15,6 @@ import { getAssetProfileIdentifier } from '@ghostfolio/common/helper';
 import {
   AdminData,
   AdminMarketData,
-  AdminMarketDataDetails,
   AdminUsers,
   EnhancedSymbolProfile
 } from '@ghostfolio/common/interfaces';
@@ -50,8 +48,6 @@ import { StatusCodes, getReasonPhrase } from 'http-status-codes';
 
 import { AdminService } from './admin.service';
 import { UpdateAssetProfileDto } from './update-asset-profile.dto';
-import { UpdateBulkMarketDataDto } from './update-bulk-market-data.dto';
-import { UpdateMarketDataDto } from './update-market-data.dto';
 
 @Controller('admin')
 export class AdminController {
@@ -60,7 +56,6 @@ export class AdminController {
     private readonly apiService: ApiService,
     private readonly dataGatheringService: DataGatheringService,
     private readonly manualService: ManualService,
-    private readonly marketDataService: MarketDataService,
     @Inject(REQUEST) private readonly request: RequestWithUser
   ) {}
 
@@ -214,19 +209,6 @@ export class AdminController {
     });
   }
 
-  /**
-   * @deprecated
-   */
-  @Get('market-data/:dataSource/:symbol')
-  @HasPermission(permissions.accessAdminControl)
-  @UseGuards(AuthGuard('jwt'), HasPermissionGuard)
-  public async getMarketDataBySymbol(
-    @Param('dataSource') dataSource: DataSource,
-    @Param('symbol') symbol: string
-  ): Promise<AdminMarketDataDetails> {
-    return this.adminService.getMarketDataBySymbol({ dataSource, symbol });
-  }
-
   @HasPermission(permissions.accessAdminControl)
   @Post('market-data/:dataSource/:symbol/test')
   @UseGuards(AuthGuard('jwt'), HasPermissionGuard)
@@ -253,58 +235,6 @@ export class AdminController {
     }
   }
 
-  /**
-   * @deprecated
-   */
-  @HasPermission(permissions.accessAdminControl)
-  @Post('market-data/:dataSource/:symbol')
-  @UseGuards(AuthGuard('jwt'), HasPermissionGuard)
-  public async updateMarketData(
-    @Body() data: UpdateBulkMarketDataDto,
-    @Param('dataSource') dataSource: DataSource,
-    @Param('symbol') symbol: string
-  ) {
-    const dataBulkUpdate: Prisma.MarketDataUpdateInput[] = data.marketData.map(
-      ({ date, marketPrice }) => ({
-        dataSource,
-        marketPrice,
-        symbol,
-        date: parseISO(date),
-        state: 'CLOSE'
-      })
-    );
-
-    return this.marketDataService.updateMany({
-      data: dataBulkUpdate
-    });
-  }
-
-  /**
-   * @deprecated
-   */
-  @HasPermission(permissions.accessAdminControl)
-  @Put('market-data/:dataSource/:symbol/:dateString')
-  @UseGuards(AuthGuard('jwt'), HasPermissionGuard)
-  public async update(
-    @Param('dataSource') dataSource: DataSource,
-    @Param('dateString') dateString: string,
-    @Param('symbol') symbol: string,
-    @Body() data: UpdateMarketDataDto
-  ) {
-    const date = parseISO(dateString);
-
-    return this.marketDataService.updateMarketData({
-      data: { marketPrice: data.marketPrice, state: 'CLOSE' },
-      where: {
-        dataSource_date_symbol: {
-          dataSource,
-          date,
-          symbol
-        }
-      }
-    });
-  }
-
   @HasPermission(permissions.accessAdminControl)
   @Post('profile-data/:dataSource/:symbol')
   @UseGuards(AuthGuard('jwt'), HasPermissionGuard)