UNPKG

slonik-utilities

Version:

Utilities for manipulating data in PostgreSQL database using Slonik.

34 lines (33 loc) 1.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateDistinct = void 0; const slonik_1 = require("slonik"); const utilities_1 = require("../utilities"); const updateDistinct = async (connection, tableName, namedAssignmentPayload, booleanExpressionValues = {}) => { let booleanExpression = slonik_1.sql.join(Object.entries(namedAssignmentPayload).map(([key, value,]) => { return slonik_1.sql.fragment `${slonik_1.sql.identifier([ (0, utilities_1.normalizeIdentifier)(key), ])} IS DISTINCT FROM ${value}`; }), slonik_1.sql.fragment ` OR `); if (Object.keys(booleanExpressionValues).length) { booleanExpression = slonik_1.sql.join([ booleanExpression, slonik_1.sql.join(Object.entries(booleanExpressionValues).map(([key, value,]) => { return slonik_1.sql.fragment `${slonik_1.sql.identifier([ (0, utilities_1.normalizeIdentifier)(key), ])} = ${value}`; }), slonik_1.sql.fragment ` AND `), ], slonik_1.sql.fragment ` AND `); } const result = await connection.query(slonik_1.sql.unsafe ` UPDATE ${slonik_1.sql.identifier([ tableName, ])} SET ${(0, utilities_1.assignmentList)(namedAssignmentPayload)} WHERE ${booleanExpression} `); return { rowCount: result.rowCount, }; }; exports.updateDistinct = updateDistinct;