UNPKG

@justalk/covid19ph-api

Version:

API for COVID 19 Cases in the Philippines

100 lines (89 loc) 3.49 kB
const constants = require('../libs/consts'); module.exports = { check_limit_parameter: (parameter, errors) => { return parameter ? module.exports.check_number_parameter(parameter, errors, Number(process.env.CASES_LIMIT_GETTER)) : Number(process.env.CASES_LIMIT_GETTER); }, check_number_parameter: (parameter, errors, default_parameter = constants.no_parameter_found) => { return module.exports.check_parameter(parameter, parameter => { if (isNaN(parameter)) { errors[parameter] = 'This parameter is not a number.'; return default_parameter; } return Number(parameter); }); }, check_date_parameter: (parameter, errors) => { return module.exports.check_parameter(parameter, parameter => { const date = new Date(parameter + ' 00:00:00'); if (date instanceof Date && !isNaN(date.getTime())) { return date; } errors[parameter] = 'This parameter is not a date of the format : MM/DD/YYYY'; return constants.no_parameter_found; }); }, check_boolean_parameter: (parameter, errors) => { return module.exports.check_parameter(parameter, parameter => { parameter = parameter.toString(); const parameter_boolean_true = constants.TRUE_PARAMETERS.find(boolean => boolean === parameter.toUpperCase()); if (parameter_boolean_true) { return true; } const parameter_boolean_false = constants.FALSE_PARAMETERS.find(boolean => boolean === parameter.toUpperCase()); if (parameter_boolean_false) { return false; } errors[parameter] = 'This parameter does not exist. The only possible values are : ' + constants.TRUE_PARAMETERS.join(', ') + ' or ' + constants.FALSE_PARAMETERS.join(', '); return constants.no_parameter_found; }); }, check_enum_parameter: (parameter, enum_parameters, errors) => { return module.exports.check_parameter(parameter, parameter => { const parameter_enum = enum_parameters.find(value => value === parameter); if (parameter_enum === undefined) { errors[parameter] = 'This parameter does not exist. The only possible values are : ' + enum_parameters.join(', '); } return parameter_enum ? parameter_enum : constants.no_parameter_found; }); }, check_parameter: (parameter, fn) => { const parameter_exist = parameter === undefined || parameter === null ? null : parameter; if (parameter_exist === null) { return constants.no_parameter_found; } return fn(parameter); }, is_valid_parameter: parameter => { if (parameter.length !== 3) { return false; } if (parameter[2] === 'lower_upper') { return parameter[1][0] !== null && parameter[1][1] !== null; } return parameter[1] !== null; }, create_parameter: (filters, key, value, mongoose_filter) => { const find = filters.find(filter => filter[0] === key && filter[1] !== null && filter[1][0] !== null && filter[1][1] !== null && filter[2] === 'lower_upper'); return find ? null : filters.push([key, value, mongoose_filter]); }, create_sort: (sort_key, sort_order) => { if (sort_key === null || sort_order === null) { return null; } return {[sort_key]: sort_order}; }, create_mongoose_parameters: filter => { switch (filter[2]) { case 'lower_upper': return {[filter[0]]: {$gte: filter[1][0], $lte: filter[1][1]}}; case 'lower': return {[filter[0]]: {$gte: filter[1]}}; case 'upper': return {[filter[0]]: {$lte: filter[1]}}; case 'equal': return {[filter[0]]: {$eq: filter[1]}}; default: return {[filter[0]]: {$eq: filter[1]}}; } } };