Add default returning record on db insert and update
This commit is contained in:
Vendored
+28
-3
@@ -1,15 +1,20 @@
|
||||
import dbHandler from "../db-handler";
|
||||
import _ from "lodash";
|
||||
import init from "../../functions/init";
|
||||
import sqlGenerator from "../../utils/sql-generator";
|
||||
import { sqlValue } from "../../utils/sql-insert-generator";
|
||||
import { sqlIdent } from "../../utils/sql-safe";
|
||||
export default async function DbUpdate({ table, data, query, targetId, config, }) {
|
||||
export default async function DbUpdate({ table, data, query, targetId, returning = true, config, }) {
|
||||
let sqlObj = {
|
||||
string: "",
|
||||
values: [],
|
||||
};
|
||||
try {
|
||||
const finalQuery = query || {};
|
||||
const { dbSchema } = init();
|
||||
const isVectorTable = dbSchema.tables.find((t) => t.tableName === table)?.isVector ===
|
||||
true;
|
||||
const useReturning = returning && !isVectorTable;
|
||||
const sqlQueryObj = sqlGenerator({
|
||||
tableName: table,
|
||||
genObject: _.pick(finalQuery, ["query", "searchOperator"]),
|
||||
@@ -36,6 +41,9 @@ export default async function DbUpdate({ table, data, query, targetId, config, }
|
||||
}
|
||||
}
|
||||
sql += ` ${whereClause}`;
|
||||
if (useReturning) {
|
||||
sql += " RETURNING *";
|
||||
}
|
||||
values = [...values, ...sqlQueryObj.where.values];
|
||||
sqlObj.string = sql;
|
||||
sqlObj.values = values;
|
||||
@@ -43,9 +51,26 @@ export default async function DbUpdate({ table, data, query, targetId, config, }
|
||||
if (!res.success) {
|
||||
return { ...res, debug: { sqlObj } };
|
||||
}
|
||||
if (!useReturning) {
|
||||
return {
|
||||
success: Boolean(res.postInsertReturn?.affectedRows),
|
||||
postInsertReturn: res.postInsertReturn,
|
||||
debug: {
|
||||
sqlObj,
|
||||
},
|
||||
};
|
||||
}
|
||||
const rows = res.payload || [];
|
||||
return {
|
||||
success: Boolean(res.postInsertReturn?.affectedRows),
|
||||
postInsertReturn: res.postInsertReturn,
|
||||
success: rows.length > 0,
|
||||
payload: rows,
|
||||
singleRes: rows[0] ?? null,
|
||||
postInsertReturn: {
|
||||
affectedRows: rows.length,
|
||||
insertId: rows.length
|
||||
? Number(rows[rows.length - 1]?.id)
|
||||
: undefined,
|
||||
},
|
||||
debug: {
|
||||
sqlObj,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user