avoid breaking change by casting boolean value all the time

This commit is contained in:
Pierre Noël 2022-02-11 18:07:05 +01:00
parent ef0cb82192
commit 62f7b1dc20
2 changed files with 6 additions and 7 deletions

View File

@ -8,7 +8,6 @@ const { has, isEmpty, isObject, cloneDeep, get } = require('lodash/fp');
const _ = require('lodash');
const parseType = require('./parse-type');
const contentTypesUtils = require('./content-types');
const { ApplicationError } = require('./errors');
const { PUBLISHED_AT_ATTRIBUTE } = contentTypesUtils.constants;
@ -291,11 +290,7 @@ const convertAndSanitizeFilters = (filters, schema) => {
if (isObject(value)) {
filters[key] = convertAndSanitizeFilters(value, schema);
} else if (['$null', '$notNull'].includes(key)) {
try {
filters[key] = parseType({ type: 'boolean', value: filters[key] });
} catch (e) {
throw new ApplicationError(e.message);
}
filters[key] = parseType({ type: 'boolean', value: filters[key], forceCast: true });
}
}

View File

@ -57,7 +57,7 @@ const parseDateTimeOrTimestamp = value => {
* @param {string} options.type - type of the atribute
* @param {*} options.value - value tu cast
*/
const parseType = ({ type, value }) => {
const parseType = ({ type, value, forceCast = false }) => {
switch (type) {
case 'boolean': {
if (typeof value === 'boolean') return value;
@ -70,6 +70,10 @@ const parseType = ({ type, value }) => {
return false;
}
if (forceCast) {
return Boolean(value);
}
throw new Error('Invalid boolean input. Expected "t","1","true","false","0","f"');
}
case 'integer':