diff --git a/src/Controllers/ParameterController.ts b/src/Controllers/ParameterController.ts index bf37397b196d8bd1ea56e971e357b85a690416bb..2fc04f00f65704449e2f085cc22ebb5726d6648d 100644 --- a/src/Controllers/ParameterController.ts +++ b/src/Controllers/ParameterController.ts @@ -1,83 +1,84 @@ -import { - Handler, Request, Response, Router, -} from 'express'; -import { Validator } from 'express-json-validator-middleware'; -import ParameterType from '../Enum/ParameterType'; -import logger from '../Logger/logger'; -import updateParameterValueBody from '../Schemas/updateParameterValueBody'; -import ParameterService from '../Services/ParameterService'; - -const router = Router(); - -const { validate } = new Validator({}); - -const getParameters: Handler = async (req: Request, res: Response) => { - try { - const parameters = await ParameterService.getParameters(); - return res.status(200).send(parameters); - } catch (error) { - const e = error as Error; - logger.info(e.message); - return res.status(400).json({ error: e.message }); - } -}; - -const getDefaultWeights: Handler = async (req: Request, res: Response) => { - try { - const weights = await ParameterService.getDefaultWeights(); - return res.status(200).send(weights); - } catch (error) { - const e = error as Error; - logger.info(e.message); - return res.status(400).json({ error: e.message }); - } -}; - -const getDefaultExtraData: Handler = async (req: Request, res: Response) => { - try { - const weights = await ParameterService.getDefaultExtraData(); - return res.status(200).send(weights); - } catch (error) { - const e = error as Error; - logger.info(e.message); - return res.status(400).json({ error: e.message }); - } -}; - -const updateParameterValue: Handler = async (req: Request, res: Response) => { - const { parameter } = req.body; - try { - switch (parameter.parameterType) { - case ParameterType.DefaultWeight: - await ParameterService.updateDefaultWeight( - parameter.ageRange, parameter.sex, parameter.value, - ); - break; - case ParameterType.MinorPAL: - case ParameterType.AdultPAL: - case ParameterType.Maternity: - await ParameterService.updateExtraData(parameter.id, parameter.value); - break; - case ParameterType.TEE: - case ParameterType.BMR: - await ParameterService.updateEquationConstant( - parameter.ageRange, parameter.sex, parameter.order, parameter.value, - ); - break; - default: - break; - } - return res.status(200).send(); - } catch (error) { - const e = error as Error; - logger.info(e.message); - return res.status(400).json({ error: e.message }); - } -}; - -router.get('/', getParameters); -router.post('/weights/', getDefaultWeights); -router.post('/extraData/', getDefaultExtraData); -router.put('/parameterUpdate/', validate({ body: updateParameterValueBody }), updateParameterValue); - -export default router; +import { + Handler, Request, Response, Router, +} from 'express'; +import { Validator } from 'express-json-validator-middleware'; +import ParameterType from '../Enum/ParameterType'; +import logger from '../Logger/logger'; +import updateParameterValueBody from '../Schemas/updateParameterValueBody'; +import ParameterService from '../Services/ParameterService'; + +const router = Router(); + +const { validate } = new Validator({}); + +const getParameters: Handler = async (req: Request, res: Response) => { + try { + const parameters = await ParameterService.getParameters(); + return res.status(200).send(parameters); + } catch (error) { + const e = error as Error; + logger.info(e.message); + return res.status(400).json({ error: e.message }); + } +}; + +const getDefaultWeights: Handler = async (req: Request, res: Response) => { + try { + const weights = await ParameterService.getDefaultWeights(); + return res.status(200).send(weights); + } catch (error) { + const e = error as Error; + logger.info(e.message); + return res.status(400).json({ error: e.message }); + } +}; + +const getDefaultExtraData: Handler = async (req: Request, res: Response) => { + try { + const weights = await ParameterService.getDefaultExtraData(); + return res.status(200).send(weights); + } catch (error) { + const e = error as Error; + logger.info(e.message); + return res.status(400).json({ error: e.message }); + } +}; + +const updateParameterValue: Handler = async (req: Request, res: Response) => { + const { parameter } = req.body; + try { + switch (parameter.parameterType) { + case ParameterType.DefaultWeight: + await ParameterService.updateDefaultWeight( + parameter.ageRange, parameter.sex, parameter.value, + ); + break; + case ParameterType.MinorPAL: + case ParameterType.AdultPAL: + case ParameterType.Maternity: + await ParameterService.updateExtraData(parameter.id, parameter.value); + break; + case ParameterType.TEE: + case ParameterType.BMR: + case ParameterType.GrowthEnergy: + await ParameterService.updateEquationConstant( + parameter.ageRange, parameter.sex, parameter.order, parameter.value, + ); + break; + default: + break; + } + return res.status(200).send(); + } catch (error) { + const e = error as Error; + logger.info(e.message); + return res.status(400).json({ error: e.message }); + } +}; + +router.get('/', getParameters); +router.post('/weights/', getDefaultWeights); +router.post('/extraData/', getDefaultExtraData); +router.put('/parameterUpdate/', validate({ body: updateParameterValueBody }), updateParameterValue); + +export default router; diff --git a/src/Schemas/updateParameterValueBody.ts b/src/Schemas/updateParameterValueBody.ts index 538a0c4a94ec0f1f6b57f7cbc1942584196cff5f..d46e0e29c5c0c28b60a10bdf0166bc1b24acfb1f 100644 --- a/src/Schemas/updateParameterValueBody.ts +++ b/src/Schemas/updateParameterValueBody.ts @@ -4,8 +4,13 @@ const updateParameterValueBody = { properties: { parameter: { type: 'object' as const, - required: ['id', 'value', 'parameterType', 'order', 'description'], properties: { + ageRange: { + type: 'string' as const, + }, + sex: { + type: 'string' as const, + }, id: { type: 'string' as const, }, @@ -22,8 +27,18 @@ const updateParameterValueBody = { type: 'string' as const, }, }, + oneOf: [ + { + required: ['parameterType', 'ageRange', 'sex', 'value'], + }, + { + required: ['parameterType', 'id', 'value'], + }, + { + required: ['parameterType', 'ageRange', 'sex', 'order', 'value'], + }, + ], }, - }, };