swc/crates/swc_bundler/tests/.cache/untrusted/77e7f08de124ba150f7e8db03d7d777c9299c52b.ts
2021-11-09 20:42:49 +09:00

51 lines
1.4 KiB
TypeScript

// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/dialects/mysql2/transaction.js
import Transaction from '../../transaction.js';
import debuglib from '../../deps/debug@4.1.1/src/index.js';
const debug = debuglib('knex:tx');
class Transaction_MySQL2 extends Transaction {}
Object.assign(Transaction_MySQL2.prototype, {
query(conn, sql, status, value) {
const t = this;
const q = this.trxClient
.query(conn, sql)
.catch((err) => {
if (err.code === 'ER_SP_DOES_NOT_EXIST') {
this.trxClient.logger.warn(
'Transaction was implicitly committed, do not mix transactions and ' +
'DDL with MySQL (#805)'
);
return;
}
status = 2;
value = err;
t._completed = true;
debug('%s error running transaction query', t.txid);
})
.then(function (res) {
if (status === 1) t._resolver(value);
if (status === 2) {
if (value === undefined) {
if (t.doNotRejectOnRollback && /^ROLLBACK\b/i.test(sql)) {
t._resolver();
return;
}
value = new Error(`Transaction rejected with non-error: ${value}`);
}
t._rejecter(value);
return res;
}
});
if (status === 1 || status === 2) {
t._completed = true;
}
return q;
},
});
export default Transaction_MySQL2;