This commit is contained in:
Benjamin Toby 2026-02-21 22:18:18 +01:00
parent a68e42beab
commit 0e44676226
5 changed files with 41 additions and 3 deletions

View File

@ -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}'`;

View File

@ -1039,11 +1039,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<ServerQueryParamsJoinMatchObject<Field>, "__batch">[];
operator: "AND" | "OR";
};
};
export type ServerQueryParamsJoinMatchSourceTargetObject = {
tableName: string;

View File

@ -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
}.${

View File

@ -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<ServerQueryParamsJoinMatchObject<Field>, "__batch">[];
operator: "AND" | "OR";
};
};
export type ServerQueryParamsJoinMatchSourceTargetObject = {

View File

@ -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": {