import sqlDeleteGenerator from "../../functions/dsql/sql/sql-delete-generator"; 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"; export default async function dsqlCrud(params) { const { action, data, table, targetValue, sanitize, targetField, targetId, dbFullName, deleteData, batchData, deleteKeyValues, } = params; const finalData = (sanitize ? sanitize({ data }) : data); const finalBatchData = (sanitize ? sanitize({ batchData }) : batchData); const DB_CONN = global.DSQL_READ_ONLY_DB_CONN || global.DSQL_DB_CONN; switch (action) { case "get": return await dsqlCrudGet(params); // case "batch-get": // return await dsqlCrudBatchGet(params); case "insert": const INSERT_RESULT = await addDbEntry({ data: finalData, batchData: finalBatchData, tableName: table, dbFullName, }); return INSERT_RESULT; case "update": data === null || data === void 0 ? true : delete data.id; const UPDATE_RESULT = await updateDbEntry({ data: finalData, tableName: table, dbFullName, identifierColumnName: (targetField || "id"), identifierValue: String(targetValue || targetId), }); return UPDATE_RESULT; case "delete": const deleteQuery = sqlDeleteGenerator({ data: targetId ? { id: targetId } : targetField && targetValue ? { [targetField]: targetValue } : deleteData, tableName: table, dbFullName, deleteKeyValues, }); const res = (await connDbHandler(DB_CONN, deleteQuery === null || deleteQuery === void 0 ? void 0 : deleteQuery.query, deleteQuery === null || deleteQuery === void 0 ? void 0 : deleteQuery.values)); return { success: Boolean(res.affectedRows), payload: res, queryObject: { sql: (deleteQuery === null || deleteQuery === void 0 ? void 0 : deleteQuery.query) || "", params: (deleteQuery === null || deleteQuery === void 0 ? void 0 : deleteQuery.values) || [], }, }; default: return { success: false, payload: undefined, msg: "Invalid action", }; } }