@ -1,6 +1,6 @@
import { DataGatheringService } from '@ghostfolio/api/services/data-gathering.service' ;
import { MarketDataService } from '@ghostfolio/api/services/market-data.service' ;
import { PropertyDto } from '@ghostfolio/api/services/property/property.dto' ;
import { PropertyService } from '@ghostfolio/api/services/property/property.service' ;
import {
AdminData ,
AdminMarketData ,
@ -22,16 +22,18 @@ import {
import { REQUEST } from '@nestjs/core' ;
import { AuthGuard } from '@nestjs/passport' ;
import { DataSource , MarketData } from '@prisma/client' ;
import { isDate , isValid } from 'date-fns' ;
import { isDate } from 'date-fns' ;
import { StatusCodes , getReasonPhrase } from 'http-status-codes' ;
import { AdminService } from './admin.service' ;
import { UpdateMarketDataDto } from './update-market-data.dto' ;
@Controller ( 'admin' )
export class AdminController {
public constructor (
private readonly adminService : AdminService ,
private readonly dataGatheringService : DataGatheringService ,
private readonly marketDataService : MarketDataService ,
@Inject ( REQUEST ) private readonly request : RequestWithUser
) { }
@ -173,7 +175,7 @@ export class AdminController {
@Get ( 'market-data/:symbol' )
@UseGuards ( AuthGuard ( 'jwt' ) )
public async getMarketDataBySymbol (
@Param ( 'symbol' ) symbol
@Param ( 'symbol' ) symbol : string
) : Promise < AdminMarketDataDetails > {
if (
! hasPermission (
@ -190,6 +192,39 @@ export class AdminController {
return this . adminService . getMarketDataBySymbol ( symbol ) ;
}
@Put ( 'market-data/:dataSource/:symbol/:dateString' )
@UseGuards ( AuthGuard ( 'jwt' ) )
public async update (
@Param ( 'dataSource' ) dataSource : DataSource ,
@Param ( 'dateString' ) dateString : string ,
@Param ( 'symbol' ) symbol : string ,
@Body ( ) data : UpdateMarketDataDto
) {
if (
! hasPermission (
this . request . user . permissions ,
permissions . accessAdminControl
)
) {
throw new HttpException (
getReasonPhrase ( StatusCodes . FORBIDDEN ) ,
StatusCodes . FORBIDDEN
) ;
}
const date = new Date ( dateString ) ;
return this . marketDataService . updateMarketData ( {
data ,
where : {
date_symbol : {
date ,
symbol
}
}
} ) ;
}
@Put ( 'settings/:key' )
@UseGuards ( AuthGuard ( 'jwt' ) )
public async updateProperty (