Update .gitignore, add dist directory
This commit is contained in:
+25
@@ -0,0 +1,25 @@
|
||||
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(", ")}`;
|
||||
}
|
||||
Reference in New Issue
Block a user