diff --git a/src/paginate.ts b/src/paginate.ts index f608217..22a9e49 100644 --- a/src/paginate.ts +++ b/src/paginate.ts @@ -298,23 +298,16 @@ export async function paginate( new Brackets((qb: SelectQueryBuilder) => { for (const column of searchBy) { const propertyPath = (column as string).split('.') - if (propertyPath.length > 1) { - const alias = queryBuilder.expressionMap.mainAlias.metadata.hasRelationWithPropertyPath( - propertyPath[0] - ) - ? `${qb.alias}_${column}` - : `${qb.alias}.${column}` - const condition: WherePredicateOperator = { - operator: 'ilike', - parameters: [alias, `:${column}`], - } - qb.orWhere(qb['createWhereConditionExpression'](condition), { - [column]: `%${query.search}%`, - }) + const hasRelation = + propertyPath.length > 1 && + queryBuilder.expressionMap.mainAlias.metadata.hasRelationWithPropertyPath(propertyPath[0]) + + const aliasColumn = hasRelation ? `${qb.alias}_${column}` : `${qb.alias}.${column}` + + if (['postgres', 'cockroachdb'].includes(queryBuilder.connection.options.type)) { + qb.orWhere(`${aliasColumn}::text ILIKE '%${query.search}%'`) } else { - qb.orWhere({ - [column]: ILike(`%${query.search}%`), - }) + qb.orWhere(`UPPER(${aliasColumn}) LIKE UPPER('%${query.search}%')`) } } })