import dbHandler from "../db-handler"; import sqlInsertGenerator from "../../utils/sql-insert-generator"; import grabDuplicateSafeInsertSql from "../grab-duplicate-safe-insert-sql"; export default async function DbInsert({ table, data, update_on_duplicate, config, }) { let sqlObj = null; try { const finalData = data.map((d) => ({ created_at: Date.now(), updated_at: Date.now(), ...d, })); sqlObj = sqlInsertGenerator({ tableName: table, data: finalData, }) || null; let sql = sqlObj?.query || ""; if (update_on_duplicate && data[0]) { sql = await grabDuplicateSafeInsertSql({ data, table, sql }); } (sqlObj || {}).query = sql; const res = dbHandler({ query: sql, values: sqlObj?.values || [], config, }); if (!res.success) { return { ...res, debug: { sqlObj } }; } return { success: Boolean(res.postInsertReturn?.insertId), postInsertReturn: res.postInsertReturn, debug: { sqlObj, }, }; } catch (error) { return { success: false, error: error.message, debug: { sqlObj, }, }; } }