feature/#42-query-builder-joins #88
1 changed files with 11 additions and 4 deletions
|
@ -117,7 +117,16 @@ export default abstract class DynamicQueryBuilder {
|
||||||
if (queryObject.join) {
|
if (queryObject.join) {
|
||||||
for (const join of queryObject.join) {
|
for (const join of queryObject.join) {
|
||||||
let subaffix = join.id ?? StringHelper.random(10);
|
let subaffix = join.id ?? StringHelper.random(10);
|
||||||
query.leftJoin(`${alias}.${join.foreignColumn}`, `${subaffix}_${join.table}`);
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
this.buildDynamicQuery(query, join, subaffix, depth + 1);
|
this.buildDynamicQuery(query, join, subaffix, depth + 1);
|
||||||
}
|
}
|
||||||
|
@ -129,7 +138,6 @@ export default abstract class DynamicQueryBuilder {
|
||||||
conditions: Array<ConditionStructure>,
|
conditions: Array<ConditionStructure>,
|
||||||
alias: string
|
alias: string
|
||||||
): void {
|
): void {
|
||||||
console.log(conditions, alias);
|
|
||||||
for (const condition of conditions) {
|
for (const condition of conditions) {
|
||||||
if (condition.structureType == "condition") {
|
if (condition.structureType == "condition") {
|
||||||
const whereClause = this.buildConditionClause(condition, alias);
|
const whereClause = this.buildConditionClause(condition, alias);
|
||||||
|
@ -239,8 +247,6 @@ export default abstract class DynamicQueryBuilder {
|
||||||
parameters[`${parameterKey}_end`] = new Date(new Date().getFullYear() - (condition.value as number), 11, 31);
|
parameters[`${parameterKey}_end`] = new Date(new Date().getFullYear() - (condition.value as number), 11, 31);
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(query, parameters);
|
|
||||||
|
|
||||||
return { query, parameters };
|
return { query, parameters };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -417,6 +423,7 @@ const memberByRunningMembershipQuery: DynamicQueryStructure = {
|
||||||
table: "membership",
|
table: "membership",
|
||||||
where: [{ structureType: "condition", concat: "_", operation: "null", column: "end", value: "" }],
|
where: [{ structureType: "condition", concat: "_", operation: "null", column: "end", value: "" }],
|
||||||
foreignColumn: "memberships",
|
foreignColumn: "memberships",
|
||||||
|
type: "defined",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
orderBy: [
|
orderBy: [
|
||||||
|
|
Loading…
Add table
Reference in a new issue