This commit is contained in:
Benjamin Toby
2025-02-19 08:42:23 +01:00
parent 2e0b6d0a70
commit c08db13f3d
4 changed files with 26 additions and 34 deletions
@@ -10,12 +10,10 @@ type Param<T extends { [key: string]: any } = { [key: string]: any }> = {
dbFullName?: string;
};
type Return =
| {
string: string;
values: string[];
}
| undefined;
type Return = {
string: string;
values: string[];
};
/**
* # SQL Query Generator
@@ -24,8 +22,6 @@ type Return =
export default function sqlGenerator<
T extends { [key: string]: any } = { [key: string]: any }
>({ tableName, genObject, dbFullName }: Param<T>): Return {
if (!genObject) return undefined;
const finalQuery = genObject?.query ? genObject.query : undefined;
const queryKeys = finalQuery ? Object.keys(finalQuery) : undefined;
@@ -109,7 +105,7 @@ export default function sqlGenerator<
return genSqlSrchStr({
queryObj: newSubQueryObj,
field: _field,
join: genObject.join,
join: genObject?.join,
});
});
@@ -120,7 +116,7 @@ export default function sqlGenerator<
);
}
return genSqlSrchStr({ queryObj, field, join: genObject.join });
return genSqlSrchStr({ queryObj, field, join: genObject?.join });
});
function generateJoinStr(
@@ -162,7 +158,7 @@ export default function sqlGenerator<
let queryString = (() => {
let str = "SELECT";
if (genObject.selectFields?.[0]) {
if (genObject?.selectFields?.[0]) {
if (genObject.join) {
str += ` ${genObject.selectFields
?.map((fld) => `${finalDbName}${tableName}.${fld}`)
@@ -171,15 +167,14 @@ export default function sqlGenerator<
str += ` ${genObject.selectFields?.join(",")}`;
}
} else {
if (genObject.join) {
if (genObject?.join) {
str += ` ${finalDbName}${tableName}.*`;
} else {
str += " *";
}
}
if (genObject.join) {
/** @type {string[]} */
if (genObject?.join) {
const existingJoinTableNames: string[] = [tableName];
str +=
@@ -219,7 +214,7 @@ export default function sqlGenerator<
str += ` FROM ${finalDbName}${tableName}`;
if (genObject.join) {
if (genObject?.join) {
str +=
" " +
genObject.join
@@ -262,18 +257,18 @@ export default function sqlGenerator<
if (sqlSearhString?.[0] && sqlSearhString.find((str) => str)) {
const stringOperator = genObject?.searchOperator || "AND";
queryString += ` WHERE ${sqlSearhString.join(` ${stringOperator} `)} `;
queryString += ` WHERE ${sqlSearhString.join(` ${stringOperator} `)}`;
}
if (genObject.order)
if (genObject?.order)
queryString += ` ORDER BY ${
genObject.join
? `${finalDbName}${tableName}.${String(genObject.order.field)}`
: String(genObject.order.field)
} ${genObject.order.strategy}`;
if (genObject.limit) queryString += ` LIMIT ${genObject.limit}`;
if (genObject.offset) queryString += ` OFFSET ${genObject.offset}`;
if (genObject?.limit) queryString += ` LIMIT ${genObject.limit}`;
if (genObject?.offset) queryString += ` OFFSET ${genObject.offset}`;
return {
string: queryString,