datasquirel/dist/package-shared/functions/dsql/sql/sql-delete-generator.js
Benjamin Toby 7e8bb37c09 Updates
2025-07-05 14:59:30 +01:00

49 lines
1.7 KiB
JavaScript

import sqlEqualityParser from "../../../utils/sql-equality-parser";
/**
* # SQL Delete Generator
*/
export default function sqlDeleteGenerator({ tableName, deleteKeyValues, dbFullName, data, }) {
const finalDbName = dbFullName ? `${dbFullName}.` : "";
try {
let queryStr = `DELETE FROM ${finalDbName}${tableName}`;
let deleteBatch = [];
let queryArr = [];
if (data) {
Object.keys(data).forEach((ky) => {
let value = data[ky];
const parsedValue = typeof value == "number" ? String(value) : value;
if (!parsedValue)
return;
if (parsedValue.match(/%/)) {
deleteBatch.push(`${ky} LIKE ?`);
queryArr.push(parsedValue);
}
else {
deleteBatch.push(`${ky}=?`);
queryArr.push(parsedValue);
}
});
}
else if (deleteKeyValues) {
deleteKeyValues.forEach((ky) => {
let value = ky.value;
const parsedValue = typeof value == "number" ? String(value) : value;
if (!parsedValue)
return;
const operator = sqlEqualityParser(ky.operator || "EQUAL");
deleteBatch.push(`${ky.key} ${operator} ?`);
queryArr.push(parsedValue);
});
}
queryStr += ` WHERE ${deleteBatch.join(" AND ")}`;
return {
query: queryStr,
values: queryArr,
};
}
catch (error) {
console.log(`SQL delete gen ERROR: ${error.message}`);
return undefined;
}
}