From 2e23a0e4ceb60de68bb9f054554211219299e1ba Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 5 Aug 2024 12:33:44 +0200 Subject: [PATCH] Implement SQL and/or --- packages/backend-core/src/sql/sql.ts | 19 +++++++++++++++++++ .../src/api/routes/tests/search.spec.ts | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/backend-core/src/sql/sql.ts b/packages/backend-core/src/sql/sql.ts index 76c86b2b62..f58ddbac6a 100644 --- a/packages/backend-core/src/sql/sql.ts +++ b/packages/backend-core/src/sql/sql.ts @@ -369,6 +369,25 @@ class InternalBuilder { } } + if (filters.$and) { + iterate(filters.$and, (key: string, conditions: any[]) => { + query = query.where(x => { + for (const condition of conditions) { + x = this.addFilters(x, condition, table, opts) + } + }) + }) + } + + if (filters.$or) { + const { $or } = filters + query = query.where(x => { + for (const condition of $or.conditions) { + x = this.addFilters(x, { ...condition, allOr: true }, table, opts) + } + }) + } + if (filters.oneOf) { const fnc = allOr ? "orWhereIn" : "whereIn" iterate( diff --git a/packages/server/src/api/routes/tests/search.spec.ts b/packages/server/src/api/routes/tests/search.spec.ts index 3a54ec9035..9243ec6b6e 100644 --- a/packages/server/src/api/routes/tests/search.spec.ts +++ b/packages/server/src/api/routes/tests/search.spec.ts @@ -2807,7 +2807,7 @@ describe.each([ $or: { conditions: [ { range: { age: { low: 1, high: 9 } } }, - { string: { name: "Ja" } }, + { string: { name: "Jan" } }, ], }, }).toContainExactly([