MCPcopy Create free account
hub / github.com/IceClusters/icmysql / ExecuteTransaction

Function ExecuteTransaction

src/db/Query.js:68–109  ·  view source on GitHub ↗
(dbId, queries, params, callback)

Source from the content-addressed store, hash-verified

66}
67
68async function ExecuteTransaction(dbId, queries, params, callback) {
69 const connection = await GetConnection(dbId);
70 await connection.beginTransaction();
71 try {
72 const queryPromises = queries.map((queryObject) => {
73 if (queryObject["query"].includes("@")) {
74 queryObject["query"] = ReplaceNamedParams(queryObject["query"], queryObject["values"] == null ? (params != null ? params : []) : queryObject["values"])
75 queryObject["values"] = null;
76 }
77 return connection.query(queryObject["query"], queryObject["values"] == null ? (params != null ? params : []) : queryObject["values"]);
78 });
79 const results = await Promise.allSettled(queryPromises);
80 const hasErrors = results.some((result) => {
81 if (result.reason && result.reason.message) {
82 ParseError(`Error while executing query: ${result.reason.message} `);
83 }
84 return result.status === "rejected"
85 });
86 if (hasErrors) {
87 await connection.rollback();
88 ParseError("Some queries failed while executing transaction.");
89 if (typeof callback === "function") {
90 callback(false);
91 }
92 return false;
93 }
94 await connection.commit();
95 connection.release();
96 if (typeof callback === "function") {
97 callback(true);
98 }
99 return true;
100 } catch (err) {
101 await connection.rollback();
102 connection.release();
103 ParseError(`Error while executing transaction: ${err.message} `);
104 if (typeof callback === "function") {
105 callback(false);
106 }
107 return false;
108 }
109}
110
111function AddMethod(type) {
112 const method = async function(dbId, query, values, callback, cache) {

Callers 2

AwaitTransactionFunction · 0.85
TransactionFunction · 0.85

Calls 3

GetConnectionFunction · 0.85
ReplaceNamedParamsFunction · 0.85
ParseErrorFunction · 0.85

Tested by

no test coverage detected