|
|
@ -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( |
|
|
|