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; } }