From 0e44676226bc846d3f74eab0ea9937c5354a8e63 Mon Sep 17 00:00:00 2001 From: Benjamin Toby Date: Sat, 21 Feb 2026 22:18:18 +0100 Subject: [PATCH] Updates --- .../functions/dsql/sql/sql-generator.js | 13 +++++++++++++ dist/package-shared/types/index.d.ts | 6 +++++- .../functions/dsql/sql/sql-generator.ts | 17 +++++++++++++++++ package-shared/types/index.ts | 6 +++++- package.json | 2 +- 5 files changed, 41 insertions(+), 3 deletions(-) diff --git a/dist/package-shared/functions/dsql/sql/sql-generator.js b/dist/package-shared/functions/dsql/sql/sql-generator.js index 1fba24b..8c5c8ac 100644 --- a/dist/package-shared/functions/dsql/sql/sql-generator.js +++ b/dist/package-shared/functions/dsql/sql/sql-generator.js @@ -101,6 +101,19 @@ function sqlGenerator({ tableName, genObject, dbFullName, count }) { return str; } function generateJoinStr(mtch, join) { + if (mtch.__batch) { + let btch_mtch = ``; + btch_mtch += `(`; + for (let i = 0; i < mtch.__batch.matches.length; i++) { + const __mtch = mtch.__batch.matches[i]; + btch_mtch += `${generateJoinStr(__mtch, join)}`; + if (i < mtch.__batch.matches.length - 1) { + btch_mtch += ` ${mtch.__batch.operator || "OR"} `; + } + } + btch_mtch += `)`; + return btch_mtch; + } return `${finalDbName}${typeof mtch.source == "object" ? mtch.source.tableName : tableName}.${typeof mtch.source == "object" ? mtch.source.fieldName : mtch.source}=${(() => { if (mtch.targetLiteral) { return `'${mtch.targetLiteral}'`; diff --git a/dist/package-shared/types/index.d.ts b/dist/package-shared/types/index.d.ts index 9d77e03..96427d0 100644 --- a/dist/package-shared/types/index.d.ts +++ b/dist/package-shared/types/index.d.ts @@ -1039,11 +1039,15 @@ export type ServerQueryParamsJoinMatchObject = { /** Field name from the **Root Table** */ - source: string | ServerQueryParamsJoinMatchSourceTargetObject; + source?: string | ServerQueryParamsJoinMatchSourceTargetObject; /** Field name from the **Join Table** */ target?: keyof Field | ServerQueryParamsJoinMatchSourceTargetObject; /** A literal value: No source and target Needed! */ targetLiteral?: string; + __batch?: { + matches: Omit, "__batch">[]; + operator: "AND" | "OR"; + }; }; export type ServerQueryParamsJoinMatchSourceTargetObject = { tableName: string; diff --git a/package-shared/functions/dsql/sql/sql-generator.ts b/package-shared/functions/dsql/sql/sql-generator.ts index 515bd2d..8742abc 100644 --- a/package-shared/functions/dsql/sql/sql-generator.ts +++ b/package-shared/functions/dsql/sql/sql-generator.ts @@ -146,6 +146,23 @@ export default function sqlGenerator< mtch: ServerQueryParamsJoinMatchObject, join: ServerQueryParamsJoin, ) { + if (mtch.__batch) { + let btch_mtch = ``; + btch_mtch += `(`; + + for (let i = 0; i < mtch.__batch.matches.length; i++) { + const __mtch = mtch.__batch.matches[i]; + btch_mtch += `${generateJoinStr(__mtch, join)}`; + if (i < mtch.__batch.matches.length - 1) { + btch_mtch += ` ${mtch.__batch.operator || "OR"} `; + } + } + + btch_mtch += `)`; + + return btch_mtch; + } + return `${finalDbName}${ typeof mtch.source == "object" ? mtch.source.tableName : tableName }.${ diff --git a/package-shared/types/index.ts b/package-shared/types/index.ts index afae03e..3d7e2a2 100644 --- a/package-shared/types/index.ts +++ b/package-shared/types/index.ts @@ -1258,11 +1258,15 @@ export type ServerQueryParamsJoinMatchObject< Field extends object = { [key: string]: any }, > = { /** Field name from the **Root Table** */ - source: string | ServerQueryParamsJoinMatchSourceTargetObject; + source?: string | ServerQueryParamsJoinMatchSourceTargetObject; /** Field name from the **Join Table** */ target?: keyof Field | ServerQueryParamsJoinMatchSourceTargetObject; /** A literal value: No source and target Needed! */ targetLiteral?: string; + __batch?: { + matches: Omit, "__batch">[]; + operator: "AND" | "OR"; + }; }; export type ServerQueryParamsJoinMatchSourceTargetObject = { diff --git a/package.json b/package.json index 2d3ebe6..7034a33 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@moduletrace/datasquirel", - "version": "5.7.55", + "version": "5.7.56", "description": "Cloud-based SQL data management tool", "main": "dist/index.js", "bin": {