function quoteIdentifier(identifier) { return `\`${identifier.replace(/`/g, "``")}\``; } export default async function ({ sql: passedSql, table, data }) { const config = global.CONFIG; const dbSchema = global.DB_SCHEMA; const tableSchema = dbSchema?.tables.find((t) => t.tableName == table); if (!tableSchema?.tableName) { return passedSql; } const dataObject = Array.isArray(data) ? data[0] : data; const dataKeys = Object.keys(dataObject || {}); if (dataKeys.length === 0) { return passedSql; } const hasUniqueField = tableSchema.fields.some((field) => field.unique) || Boolean(tableSchema.uniqueConstraints?.length); if (!hasUniqueField) { return passedSql; } const setSql = dataKeys .filter((field) => field !== "updated_at") .map((field) => `${quoteIdentifier(field)} = VALUES(${quoteIdentifier(field)})`); setSql.push(`updated_at = ${Date.now()}`); return `${passedSql} ON DUPLICATE KEY UPDATE ${setSql.join(", ")}`; }