From 47d1f25eccd4c24cfed53d02028cb7254a0eb81e Mon Sep 17 00:00:00 2001 From: Olivier Cadoret Date: Tue, 28 Jan 2025 16:13:40 +0100 Subject: [PATCH] Add conditions with array operators --- src/db/conditions.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/db/conditions.ts b/src/db/conditions.ts index 5d0a57d..727b9ab 100644 --- a/src/db/conditions.ts +++ b/src/db/conditions.ts @@ -62,6 +62,10 @@ export const or = (...conditions: (SQLFragment | Whereable)[]) => sql export const and = (...conditions: (SQLFragment | Whereable)[]) => sql`(${mapWithSeparator(conditions, sql` AND `, c => c)})`; export const not = (condition: SQLFragment | Whereable) => sql`(NOT ${condition})`; +export const arrayContains = (a: T[] | ParentColumn) => sql`${self} @> ${conditionalParam(a)}`; +export const arrayContainedIn = (a: T[] | ParentColumn) => sql`${self} <@ ${conditionalParam(a)}`; +export const arrayOverlaps = (a: T[] | ParentColumn) => sql`${self} && ${conditionalParam(a)}`; + // things that aren't genuinely conditions type PluralisingIntervalUnit = 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year' | 'decade'; type IntervalUnit = PluralisingIntervalUnit | `${PluralisingIntervalUnit}s` | 'century' | 'centuries' | 'millennium' | 'millennia';