// IMPORT LIBRARY import { Controller, Post, UseAuth, Req, Request, Res, Response, HeaderParams, BodyParams, Get, PathParams } from '@tsed/common'; import { Docs } from '@tsed/swagger'; import Joi from '@hapi/joi'; // IMPORT CUSTOM import { ConfigurationService } from './../../services/ConfigurationService'; import { VerificationJWT } from '../../middleware/auth/VerificationJWT'; import { Validator } from '../../middleware/validator/Validator'; import { Configuration, ConfigurationParams } from '../../entity/Configuration'; @Controller("/admin/configuration") @Docs("docs_admin") export class ConfigurationController { constructor(private configurationService: ConfigurationService) { } // =====================GET LIST===================== @Get('') @UseAuth(VerificationJWT) @Validator({}) async findAll( @HeaderParams("token") token: string, @Req() req: Request, @Res() res: Response ) { const configurations = await Configuration.find() return res.sendOK(configurations) } // =====================CREATE ITEM===================== @Post('') @UseAuth(VerificationJWT) @Validator({ configuration: Joi.required(), }) async create( @Req() req: Request, @Res() res: Response, @HeaderParams("token") token: string, @BodyParams("configuration") configuration: Configuration, ) { await configuration.save() return res.sendOK(configuration) } // =====================UPDATE ITEM===================== @Post('/:configurationId/update') @UseAuth(VerificationJWT) @Validator({ configuration: Joi.required(), configurationId: Joi.number().required() }) async update( @Req() req: Request, @Res() res: Response, @HeaderParams("token") token: string, @BodyParams("configuration") configuration: Configuration, @PathParams("configurationId") configurationId: number, ) { // This will check and throw error if not exist await Configuration.findOneOrThrowId(configurationId) configuration.id = +configurationId await configuration.save() return res.sendOK(configuration) } // =====================INIT===================== @Post('/init') @UseAuth(VerificationJWT) @Validator({}) async init( @Req() req: Request, @Res() res: Response, @HeaderParams("token") token: string, ) { this.configurationService.initParam(1, ConfigurationParams.MinPrice, '10000') return res.sendOK({}, "Init success") } } // END FILE