This commit is contained in:
2025-12-22 07:18:57 +01:00
parent 0d9f313dc0
commit cfcd08680f
46 changed files with 1338 additions and 98 deletions
+11 -5
View File
@@ -107,11 +107,17 @@ export default async function <
const parsedRes = checkArrayDepth(res, 2)
? parseDbResults({ unparsedResults: res[0], tableSchema })
: res[0];
const parsedBatchRes = checkArrayDepth(res, 3)
? res.map((_r: any[][]) => {
return parseDbResults({ unparsedResults: _r[0], tableSchema });
})
: res;
const parsedBatchRes =
connQueries.length > 1
? checkArrayDepth(res, 3)
? res.map((_r: any[][]) => {
return parseDbResults({
unparsedResults: _r[0],
tableSchema,
});
})
: res
: undefined;
const isSuccess = Array.isArray(res) && Array.isArray(res[0]);
+59 -24
View File
@@ -9,6 +9,8 @@ import dsqlCrudGet from "./crud-get";
import connDbHandler from "../db/conn-db-handler";
import addDbEntry from "../../functions/backend/db/addDbEntry";
import updateDbEntry from "../../functions/backend/db/updateDbEntry";
import sqlGenerator from "../../functions/dsql/sql/sql-generator";
import deleteDbEntry from "../../functions/backend/db/deleteDbEntry";
export default async function dsqlCrud<
T extends { [key: string]: any } = { [key: string]: any },
@@ -30,6 +32,7 @@ export default async function dsqlCrud<
tableSchema,
deleteKeyValuesOperator,
dbConfig,
query,
} = params;
const finalData = (sanitize ? sanitize({ data }) : data) as T;
@@ -37,6 +40,25 @@ export default async function dsqlCrud<
sanitize ? sanitize({ batchData }) : batchData
) as T[];
const queryObject = query
? sqlGenerator({
tableName: table,
genObject: query,
dbFullName,
})
: undefined;
const whereClause = queryObject?.string.replace(/^.*?( WHERE )/, "$1");
const whereClauseObject = whereClause
? {
clause: whereClause!,
params: queryObject?.values
.filter((v) => typeof v == "string" || typeof v == "number")
.map((v) => String(v)),
}
: undefined;
switch (action) {
case "get":
return await dsqlCrudGet<T, K>(params);
@@ -68,37 +90,50 @@ export default async function dsqlCrud<
debug,
tableSchema,
dbConfig,
whereClauseObject,
});
return UPDATE_RESULT;
case "delete":
const deleteQuery = sqlDeleteGenerator({
data: targetId
? { id: targetId }
: targetField && targetValue
? { [targetField]: targetValue }
: deleteData,
tableName: table,
dbFullName,
deleteKeyValues,
deleteKeyValuesOperator,
});
let res: PostInsertReturn;
const res = (await connDbHandler({
query: deleteQuery?.query,
values: deleteQuery?.values,
dsqlConnOpts: { config: dbConfig },
})) as PostInsertReturn;
if (whereClauseObject) {
const DELETE_RES = await deleteDbEntry({
whereClauseObject,
tableName: table,
dbFullName,
});
return {
success: Boolean(res.affectedRows),
payload: res,
queryObject: {
sql: format(deleteQuery?.query || ""),
params: deleteQuery?.values || [],
},
};
return DELETE_RES;
} else {
const deleteQuery = sqlDeleteGenerator({
data: targetId
? { id: targetId }
: targetField && targetValue
? { [targetField]: targetValue }
: deleteData,
tableName: table,
dbFullName,
deleteKeyValues,
deleteKeyValuesOperator,
});
res = (await connDbHandler({
query: deleteQuery?.query,
values: deleteQuery?.values,
dsqlConnOpts: { config: dbConfig },
})) as PostInsertReturn;
return {
success: Boolean(res.affectedRows),
payload: res,
queryObject: {
sql: format(deleteQuery?.query || ""),
params: deleteQuery?.values || [],
},
};
}
default:
return {