diff --git a/src/helpers/dynamicQueryBuilder.ts b/src/helpers/dynamicQueryBuilder.ts index 580bbd2..159f518 100644 --- a/src/helpers/dynamicQueryBuilder.ts +++ b/src/helpers/dynamicQueryBuilder.ts @@ -117,16 +117,7 @@ export default abstract class DynamicQueryBuilder { if (queryObject.join) { for (const join of queryObject.join) { let subaffix = join.id ?? StringHelper.random(10); - if (join.type == undefined) join.type = "defined"; - if (join.type == "defined") { - query.innerJoin(`${alias}.${join.foreignColumn}`, `${subaffix}_${join.table}`); - } else { - let condition = join.condition - .replaceAll(`${join.table}.`, `${subaffix}_${join.table}.`) - .replaceAll(`${queryObject.table}.`, `${alias}.`); - - query.innerJoin(join.table, `${subaffix}_${join.table}`, condition); - } + query.leftJoin(`${alias}.${join.foreignColumn}`, `${subaffix}_${join.table}`); this.buildDynamicQuery(query, join, subaffix, depth + 1); } @@ -138,6 +129,7 @@ export default abstract class DynamicQueryBuilder { conditions: Array, alias: string ): void { + console.log(conditions, alias); for (const condition of conditions) { if (condition.structureType == "condition") { const whereClause = this.buildConditionClause(condition, alias); @@ -247,6 +239,8 @@ export default abstract class DynamicQueryBuilder { parameters[`${parameterKey}_end`] = new Date(new Date().getFullYear() - (condition.value as number), 11, 31); } + console.log(query, parameters); + return { query, parameters }; } @@ -423,7 +417,6 @@ const memberByRunningMembershipQuery: DynamicQueryStructure = { table: "membership", where: [{ structureType: "condition", concat: "_", operation: "null", column: "end", value: "" }], foreignColumn: "memberships", - type: "defined", }, ], orderBy: [ diff --git a/src/type/dynamicQueries.ts b/src/type/dynamicQueries.ts index 2d870b7..ca6a7e5 100644 --- a/src/type/dynamicQueries.ts +++ b/src/type/dynamicQueries.ts @@ -3,7 +3,7 @@ export interface DynamicQueryStructure { select: string[] | "*"; table: string; where?: Array; - join?: Array; + join?: Array; orderBy?: Array; // only at top level } @@ -48,8 +48,6 @@ export type WhereOperation = | "timespanEq"; // Date before x years (YYYY-01-01 YYYY-12-31) // TODO: age between | age equals | age greater | age smaller -export type JoinStructure = { foreignColumn: string; type: "defined" } | { condition: string; type: "custom" }; - export type OrderByStructure = { id: string; depth: number; @@ -103,21 +101,18 @@ export const exampleQuery: DynamicQueryStructure = { select: "*", table: "communication", foreignColumn: "sendNewsletter", - type: "defined", }, { id: "91011", select: "*", table: "membership", foreignColumn: "memberships", - type: "defined", join: [ { id: "121314", select: "*", table: "membership_status", foreignColumn: "status", - type: "defined", where: [ { structureType: "condition",