Cast to number for joi between (#12666)

* Cast to number for joi between

* Fix between range as inclusive

* Update unit test
This commit is contained in:
ian
2022-04-11 21:50:07 +08:00
committed by GitHub
parent 7c36fa42a6
commit 28fe1b243f
2 changed files with 5 additions and 5 deletions

View File

@@ -365,7 +365,7 @@ describe(`generateJoi`, () => {
it(`returns the correct schema for an _between number match`, () => {
const mockFieldFilter = { field: { _between: [1, 3] } } as FieldFilter;
const mockSchema = Joi.object({
field: Joi.number().greater(1).less(3),
field: Joi.number().min(1).max(3),
})
.unknown()
.describe();
@@ -375,7 +375,7 @@ describe(`generateJoi`, () => {
it(`returns the correct schema for an _between date match`, () => {
const mockFieldFilter = { field: { _between: [date, compareDate] } } as FieldFilter;
const mockSchema = Joi.object({
field: Joi.date().greater(date).less(compareDate),
field: Joi.date().min(date).max(compareDate),
})
.unknown()
.describe();

View File

@@ -217,17 +217,17 @@ export function generateJoi(filter: FieldFilter, options?: JoiOptions): AnySchem
if (operator === '_between') {
if (compareValue.every((value: any) => Number.isSafeInteger(Number(value instanceof Date ? NaN : value)))) {
const values = compareValue as [number, number];
schema[key] = getNumberSchema().greater(values[0]).less(values[1]);
schema[key] = getNumberSchema().min(Number(values[0])).max(Number(values[1]));
} else {
const values = compareValue as [string, string];
schema[key] = getDateSchema().greater(values[0]).less(values[1]);
schema[key] = getDateSchema().min(values[0]).max(values[1]);
}
}
if (operator === '_nbetween') {
if (compareValue.every((value: any) => Number.isSafeInteger(Number(value instanceof Date ? NaN : value)))) {
const values = compareValue as [number, number];
schema[key] = getNumberSchema().less(values[0]).greater(values[1]);
schema[key] = getNumberSchema().less(Number(values[0])).greater(Number(values[1]));
} else {
const values = compareValue as [string, string];
schema[key] = getDateSchema().less(values[0]).greater(values[1]);