diff --git a/src/filter.ts b/src/filter.ts index 047ee394..087883d0 100644 --- a/src/filter.ts +++ b/src/filter.ts @@ -21,7 +21,7 @@ import { PaginateQuery } from './decorator' import { checkIsArray, checkIsEmbedded, - checkIsJsonb, + checkIsJson, checkIsNestedRelation, checkIsRelation, extractVirtualProperty, @@ -251,7 +251,7 @@ function fixColumnFilterValue(column: string, qb: SelectQueryBuilder, isJs return new Date(value) } - if ((columnType === Number || isJsonb) && !Number.isNaN(value)) { + if ((columnType === Number || isJsonb) && !Number.isNaN(Number(value))) { return Number(value) } @@ -308,7 +308,7 @@ export function parseFilter( const fixValue = fixColumnFilterValue(column, qb) const columnProperties = getPropertiesByColumnName(column) - const isJsonb = checkIsJsonb(qb, columnProperties.column) + const isJsonb = checkIsJson(qb, columnProperties.column) switch (token.operator) { case FilterOperator.BTW: diff --git a/src/helper.ts b/src/helper.ts index 39616b3a..14a7158e 100644 --- a/src/helper.ts +++ b/src/helper.ts @@ -196,7 +196,7 @@ export function checkIsArray(qb: SelectQueryBuilder, propertyName: stri return !!qb?.expressionMap?.mainAlias?.metadata.findColumnWithPropertyName(propertyName)?.isArray } -export function checkIsJsonb(qb: SelectQueryBuilder, propertyName: string): boolean { +export function checkIsJson(qb: SelectQueryBuilder, propertyName: string): boolean { if (!qb || !propertyName) { return false } @@ -205,10 +205,12 @@ export function checkIsJsonb(qb: SelectQueryBuilder, propertyName: stri const parts = propertyName.split('.') const dbColumnName = parts[parts.length - 2] - return qb?.expressionMap?.mainAlias?.metadata.findColumnWithPropertyName(dbColumnName)?.type === 'jsonb' + const columnType = qb?.expressionMap?.mainAlias?.metadata.findColumnWithPropertyName(dbColumnName)?.type + return columnType === 'jsonb' || columnType === 'json' } - return qb?.expressionMap?.mainAlias?.metadata.findColumnWithPropertyName(propertyName)?.type === 'jsonb' + const columnType = qb?.expressionMap?.mainAlias?.metadata.findColumnWithPropertyName(propertyName)?.type + return columnType === 'jsonb' || columnType === 'json' } // This function is used to fix the column alias when using relation, embedded or virtual properties