Merge pull request 'patches v1.5.4' (#104) from fix/queryBuilder into main

Reviewed-on: #104
This commit is contained in:
Julian Krauser 2025-05-22 08:03:29 +00:00
commit 3a82c74829

View file

@ -1,4 +1,4 @@
import { Brackets, DataSource, NotBrackets, ObjectLiteral, SelectQueryBuilder, WhereExpressionBuilder } from "typeorm"; import { Brackets, NotBrackets, ObjectLiteral, SelectQueryBuilder, WhereExpressionBuilder } from "typeorm";
import { dataSource } from "../data-source"; import { dataSource } from "../data-source";
import { ConditionStructure, DynamicQueryStructure, FieldType, QueryResult } from "../type/dynamicQueries"; import { ConditionStructure, DynamicQueryStructure, FieldType, QueryResult } from "../type/dynamicQueries";
import { TableMeta } from "../type/tableMeta"; import { TableMeta } from "../type/tableMeta";
@ -63,7 +63,7 @@ export default abstract class DynamicQueryBuilder {
count?: number; count?: number;
noLimit?: boolean; noLimit?: boolean;
}): SelectQueryBuilder<ObjectLiteral> { }): SelectQueryBuilder<ObjectLiteral> {
let affix = queryObj.id ?? StringHelper.random(10); let affix = queryObj.id.replaceAll("-", "") ?? StringHelper.random(10);
let query = dataSource.getRepository(queryObj.table).createQueryBuilder(`${affix}_${queryObj.table}`); let query = dataSource.getRepository(queryObj.table).createQueryBuilder(`${affix}_${queryObj.table}`);
this.buildDynamicQuery(query, queryObj, affix); this.buildDynamicQuery(query, queryObj, affix);
@ -116,7 +116,7 @@ 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.replaceAll("-", "") ?? StringHelper.random(10);
if (join.type == undefined) join.type = "defined"; if (join.type == undefined) join.type = "defined";
if (join.type == "defined") { if (join.type == "defined") {
query.innerJoin(`${alias}.${join.foreignColumn}`, `${subaffix}_${join.table}`); query.innerJoin(`${alias}.${join.foreignColumn}`, `${subaffix}_${join.table}`);
@ -272,8 +272,15 @@ export default abstract class DynamicQueryBuilder {
}); });
}); });
results = tempResults; results = tempResults;
} else if (value && typeof value === "object" && !Array.isArray(value) && !(value instanceof Date)) { } else if (
const objResults = flatten(value as QueryResult, newKey); value &&
typeof value === "object" &&
!Array.isArray(value) &&
!(value instanceof Date) &&
!(value instanceof Buffer) &&
!Object.keys(value).every((k) => ["years", "months", "days"].includes(k))
) {
const objResults = flatten(value, newKey);
const tempResults: Array<{ [key: string]: FieldType }> = []; const tempResults: Array<{ [key: string]: FieldType }> = [];
results.forEach((res) => { results.forEach((res) => {
objResults.forEach((objRes) => { objResults.forEach((objRes) => {
@ -283,7 +290,19 @@ export default abstract class DynamicQueryBuilder {
results = tempResults; results = tempResults;
} else { } else {
results.forEach((res) => { results.forEach((res) => {
if (String(value) != "undefined") res[newKey] = String(value); if (typeof value === "object" && value instanceof Date) {
res[newKey] = new Date(value).toISOString();
} else if (typeof value === "object" && !Array.isArray(value) && !(value instanceof Buffer)) {
let string = "";
for (const key of Object.keys(value)) {
string += `${value[key]} ${key} `;
}
res[newKey] = string.trim();
// JSON.stringify(value).replace(/["\\{}]/g, "").replaceAll(",", ", ");
} else if (String(value) != "undefined") {
res[newKey] = String(value);
}
}); });
} }
} }
@ -366,7 +385,7 @@ export default abstract class DynamicQueryBuilder {
stats: "error", stats: "error",
sql: error.sql, sql: error.sql,
code: error.code, code: error.code,
msg: error.sqlMessage, msg: error.sqlMessage ?? error.message,
}; };
} }
}); });
@ -375,7 +394,7 @@ export default abstract class DynamicQueryBuilder {
stats: "error", stats: "error",
sql: error.sql, sql: error.sql,
code: error.code, code: error.code,
msg: error.sqlMessage, msg: error.sqlMessage ?? error.message,
}; };
} }
} else { } else {
@ -395,7 +414,7 @@ export default abstract class DynamicQueryBuilder {
stats: "error", stats: "error",
sql: error.sql, sql: error.sql,
code: error.code, code: error.code,
msg: error.sqlMessage, msg: error.sqlMessage ?? error.message,
}; };
} }
} }