diff --git a/packages/core/database/lib/query/helpers/where.js b/packages/core/database/lib/query/helpers/where.js index 0d367f65cf..b66375d4f2 100644 --- a/packages/core/database/lib/query/helpers/where.js +++ b/packages/core/database/lib/query/helpers/where.js @@ -19,8 +19,6 @@ const OPERATORS = [ '$null', '$notNull', '$between', - // '$like', - // '$regexp', '$startsWith', '$endsWith', '$contains', @@ -214,17 +212,6 @@ const applyOperator = (qb, column, operator, value) => { qb.whereBetween(column, value); break; } - // case '$regexp': { - // // TODO: - // - // break; - // } - // // string - // // TODO: use $case to make it case insensitive - // case '$like': { - // qb.where(column, 'like', value); - // break; - // } // TODO: add casting logic case '$startsWith': { @@ -316,9 +303,10 @@ const applyWhere = (qb, where) => { const fieldLowerFn = qb => { // Postgres requires string to be passed - if (qb.client.config.client === 'pg') { + if (qb.client.config.client === 'postgres') { return 'LOWER(CAST(?? AS VARCHAR))'; } + return 'LOWER(??)'; }; diff --git a/packages/core/database/lib/query/query-builder.js b/packages/core/database/lib/query/query-builder.js index 62feafc7b9..e21148141b 100644 --- a/packages/core/database/lib/query/query-builder.js +++ b/packages/core/database/lib/query/query-builder.js @@ -253,10 +253,12 @@ const createQueryBuilder = (uid, db) => { qb.groupBy(state.groupBy); } + // if there are joins and it is a delete or update use a sub query if (state.where) { helpers.applyWhere(qb, state.where); } + // if there are joins and it is a delete or update use a sub query if (state.search) { qb.where(subQb => { helpers.applySearch(subQb, state.search, { alias: this.alias, db, uid }); diff --git a/packages/core/strapi/tests/filtering.test.e2e.js b/packages/core/strapi/tests/filtering.test.e2e.js index e3b7c0e7fa..b180e970dc 100644 --- a/packages/core/strapi/tests/filtering.test.e2e.js +++ b/packages/core/strapi/tests/filtering.test.e2e.js @@ -236,7 +236,7 @@ describe('Filtering API', () => { qs: { filters: { name: { - $contains: 'product', + $containsi: 'product', }, }, }, @@ -252,7 +252,7 @@ describe('Filtering API', () => { qs: { filters: { name: { - $contains: 'PrOdUct', + $containsi: 'PrOdUct', }, }, }, @@ -268,7 +268,7 @@ describe('Filtering API', () => { qs: { filters: { name: { - $contains: 'production', + $containsi: 'production', }, }, }, @@ -282,7 +282,7 @@ describe('Filtering API', () => { qs: { filters: { name: { - $contains: 'ProdUctIon', + $containsi: 'ProdUctIon', }, }, }, @@ -300,7 +300,7 @@ describe('Filtering API', () => { qs: { filters: { name: { - $notContains: 'production', + $notContainsi: 'production', }, }, }, @@ -315,7 +315,7 @@ describe('Filtering API', () => { url: '/products', qs: { filters: { - name: { $notContains: 'ProdUctIon' }, + name: { $notContainsi: 'ProdUctIon' }, }, }, }); @@ -329,7 +329,7 @@ describe('Filtering API', () => { url: '/products', qs: { filters: { - name: { $notContains: 'product' }, + name: { $notContainsi: 'product' }, }, }, }); @@ -341,7 +341,7 @@ describe('Filtering API', () => { url: '/products', qs: { filters: { - name: { $notContains: 'ProDuCt' }, + name: { $notContainsi: 'ProDuCt' }, }, }, });