From e870e350026b28b1d0a5f1aa393e525fd0e62076 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard Date: Tue, 29 Apr 2025 04:27:10 +0400 Subject: [PATCH] consolidated filtering functions into one --- backend/src/lib/knex/index.ts | 58 +++++-------------- .../secret-v2-bridge/secret-v2-bridge-dal.ts | 3 +- 2 files changed, 14 insertions(+), 47 deletions(-) diff --git a/backend/src/lib/knex/index.ts b/backend/src/lib/knex/index.ts index c5dccc4bf..55d4bf399 100644 --- a/backend/src/lib/knex/index.ts +++ b/backend/src/lib/knex/index.ts @@ -28,72 +28,40 @@ export type TFindFilter = Partial & { $complex?: TKnexDynamicOperator; }; -export const buildStrictFindFilter = +export const buildFindFilter = ( { $in, $notNull, $search, $complex, ...filter }: TFindFilter, - tableName: TableName, + tableName?: TableName, excludeKeys?: Array ) => (bd: Knex.QueryBuilder) => { - const strictFilter = Object.fromEntries( - Object.entries(filter) - .filter(([key]) => !excludeKeys || !excludeKeys.includes(key as keyof R)) - .map(([key, value]) => [`${tableName}.${key}`, value]) - ); + const processedFilter = tableName + ? Object.fromEntries( + Object.entries(filter) + .filter(([key]) => !excludeKeys || !excludeKeys.includes(key as keyof R)) + .map(([key, value]) => [`${tableName}.${key}`, value]) + ) + : filter; - void bd.where(strictFilter); + void bd.where(processedFilter); if ($in) { Object.entries($in).forEach(([key, val]) => { if (val) { - void bd.whereIn([`${tableName}.${key}`] as never, val as never); + void bd.whereIn([`${tableName ? `${tableName}.` : ""}${key}`] as never, val as never); } }); } if ($notNull?.length) { $notNull.forEach((key) => { - void bd.whereNotNull([`${tableName}.${key as string}`] as never); + void bd.whereNotNull([`${tableName ? `${tableName}.` : ""}${key as string}`] as never); }); } if ($search) { Object.entries($search).forEach(([key, val]) => { if (val) { - void bd.whereILike([`${tableName}.${key}`] as never, val as never); - } - }); - } - if ($complex) { - return buildDynamicKnexQuery(bd, $complex); - } - return bd; - }; - -/** - * @deprecated Use `buildStrictFindFilter` instead - */ -export const buildFindFilter = - ({ $in, $notNull, $search, $complex, ...filter }: TFindFilter) => - (bd: Knex.QueryBuilder) => { - void bd.where(filter); - if ($in) { - Object.entries($in).forEach(([key, val]) => { - if (val) { - void bd.whereIn(key as never, val as never); - } - }); - } - - if ($notNull?.length) { - $notNull.forEach((key) => { - void bd.whereNotNull(key as never); - }); - } - - if ($search) { - Object.entries($search).forEach(([key, val]) => { - if (val) { - void bd.whereILike(key as never, val as never); + void bd.whereILike([`${tableName ? `${tableName}.` : ""}${key}`] as never, val as never); } }); } diff --git a/backend/src/services/secret-v2-bridge/secret-v2-bridge-dal.ts b/backend/src/services/secret-v2-bridge/secret-v2-bridge-dal.ts index 69b1bc7c0..27a3c94e5 100644 --- a/backend/src/services/secret-v2-bridge/secret-v2-bridge-dal.ts +++ b/backend/src/services/secret-v2-bridge/secret-v2-bridge-dal.ts @@ -10,7 +10,6 @@ import { generateCacheKeyFromData } from "@app/lib/crypto/cache"; import { BadRequestError, DatabaseError, NotFoundError } from "@app/lib/errors"; import { buildFindFilter, - buildStrictFindFilter, ormify, selectAllTableCols, sqlNestRelationships, @@ -65,7 +64,7 @@ export const secretV2BridgeDALFactory = ({ db, keyStore }: TSecretV2DalArg) => { try { const docs = await (tx || db)(TableName.SecretV2) // eslint-disable-next-line @typescript-eslint/no-misused-promises - .where(buildStrictFindFilter(filter, TableName.SecretV2)) + .where(buildFindFilter(filter, TableName.SecretV2)) .leftJoin( TableName.SecretV2JnTag, `${TableName.SecretV2}.id`,