UNPKG

@dbnx/mysql

Version:

A powerful and enhanced ORM library for MySQL, offering query execution, model creation, and full relational management.

45 lines (44 loc) 1.44 kB
import { escape } from "../utils/index.js"; export function insert(table, values, { onDuplicateUpdateFields = [], uniqueColumn }) { if (!values) { throw new Error("❌ Insert data array is empty"); } let col = ""; let val = ""; const sanitizedValues = (values) => Object.values(values) .map((value) => { if (value === "CURRENT_TIMESTAMP") { return value; } if (value == null || value == undefined) { return "NULL"; } if (typeof value === "string") { return escape(value); } return value; }) ?.join(", "); if (Array.isArray(values)) { col = `(${Object.keys(values[0]).join(", ")})`; val = values.map((row) => `(${sanitizedValues(row)})`).join(", "); } else { col = `(${Object.keys(values).join(", ")})`; val = `(${sanitizedValues(values)})`; } let sql = ""; if (uniqueColumn) { sql = `INSERT IGNORE INTO ${table} ${col} VALUES ${val};`; } else if (onDuplicateUpdateFields.length > 0) { const updateFields = onDuplicateUpdateFields .map((field) => `${field} = VALUES(${field})`) .join(", "); sql = `INSERT INTO ${table} ${col} VALUES ${val} ON DUPLICATE KEY UPDATE ${updateFields};`; } else { sql = `INSERT INTO ${table} ${col} VALUES ${val};`; } return sql; }