Skip to content
Snippets Groups Projects
Commit 75c2ee2c authored by Agustin's avatar Agustin
Browse files

update parameter validator fixes

Also adds a parameter type that wasnt taken into account in the function
parent 0e2355d0
No related branches found
No related tags found
No related merge requests found
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;
......@@ -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'],
},
],
},
},
};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment