Browse Source

Refactoring

pull/6981/head
Thomas Kaul 3 months ago
parent
commit
248f01234f
  1. 20
      apps/api/src/app/endpoints/asset-profiles/asset-profiles.controller.ts
  2. 3
      apps/api/src/app/endpoints/asset-profiles/asset-profiles.module.ts
  3. 2
      apps/api/src/app/endpoints/asset-profiles/asset-profiles.service.ts

20
apps/api/src/app/endpoints/asset-profiles/asset-profiles.controller.ts

@ -1,38 +1,48 @@
import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator'; import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator';
import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; 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 { UpdateAssetProfileDataDto } from '@ghostfolio/common/dtos'; import { UpdateAssetProfileDataDto } from '@ghostfolio/common/dtos';
import { EnhancedSymbolProfile } from '@ghostfolio/common/interfaces'; import { EnhancedSymbolProfile } from '@ghostfolio/common/interfaces';
import { permissions } from '@ghostfolio/common/permissions'; import { permissions } from '@ghostfolio/common/permissions';
import { RequestWithUser } from '@ghostfolio/common/types';
import { import {
Body, Body,
Controller, Controller,
HttpException,
Inject,
Param, Param,
Patch, Patch,
UseGuards, UseGuards
UseInterceptors
} from '@nestjs/common'; } from '@nestjs/common';
import { REQUEST } from '@nestjs/core';
import { AuthGuard } from '@nestjs/passport'; import { AuthGuard } from '@nestjs/passport';
import { DataSource } from '@prisma/client'; import { DataSource } from '@prisma/client';
import { StatusCodes, getReasonPhrase } from 'http-status-codes';
import { AssetProfilesService } from './asset-profiles.service'; import { AssetProfilesService } from './asset-profiles.service';
@Controller('asset-profiles') @Controller('asset-profiles')
export class AssetProfilesController { export class AssetProfilesController {
public constructor( public constructor(
private readonly assetProfilesService: AssetProfilesService private readonly assetProfilesService: AssetProfilesService,
@Inject(REQUEST) private readonly request: RequestWithUser
) {} ) {}
@HasPermission(permissions.accessAdminControl) @HasPermission(permissions.accessAdminControl)
@Patch(':dataSource/:symbol') @Patch(':dataSource/:symbol')
@UseGuards(AuthGuard('jwt'), HasPermissionGuard) @UseGuards(AuthGuard('jwt'), HasPermissionGuard)
@UseInterceptors(TransformDataSourceInRequestInterceptor)
public async updateAssetProfileData( public async updateAssetProfileData(
@Body() assetProfileData: UpdateAssetProfileDataDto, @Body() assetProfileData: UpdateAssetProfileDataDto,
@Param('dataSource') dataSource: DataSource, @Param('dataSource') dataSource: DataSource,
@Param('symbol') symbol: string @Param('symbol') symbol: string
): Promise<EnhancedSymbolProfile> { ): Promise<EnhancedSymbolProfile> {
if (!this.request.user.settings.settings.isExperimentalFeatures) {
throw new HttpException(
getReasonPhrase(StatusCodes.NOT_FOUND),
StatusCodes.NOT_FOUND
);
}
return this.assetProfilesService.updateAssetProfileData( return this.assetProfilesService.updateAssetProfileData(
{ dataSource, symbol }, { dataSource, symbol },
assetProfileData assetProfileData

3
apps/api/src/app/endpoints/asset-profiles/asset-profiles.module.ts

@ -1,4 +1,3 @@
import { TransformDataSourceInRequestModule } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.module';
import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile/symbol-profile.module'; import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile/symbol-profile.module';
import { Module } from '@nestjs/common'; import { Module } from '@nestjs/common';
@ -8,7 +7,7 @@ import { AssetProfilesService } from './asset-profiles.service';
@Module({ @Module({
controllers: [AssetProfilesController], controllers: [AssetProfilesController],
imports: [SymbolProfileModule, TransformDataSourceInRequestModule], imports: [SymbolProfileModule],
providers: [AssetProfilesService] providers: [AssetProfilesService]
}) })
export class AssetProfilesModule {} export class AssetProfilesModule {}

2
apps/api/src/app/endpoints/asset-profiles/asset-profiles.service.ts

@ -27,7 +27,7 @@ export class AssetProfilesService {
if (!assetProfile) { if (!assetProfile) {
throw new NotFoundException( throw new NotFoundException(
`Asset profile with data source ${dataSource} and symbol ${symbol} not found` `Could not find the asset profile for ${symbol} (${dataSource})`
); );
} }

Loading…
Cancel
Save