@mwcp/kmore
Version:
midway component for knex, supports declarative transaction and OpenTelemetry
58 lines • 2.1 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
import { Inject, Middleware } from '@midwayjs/core';
import { ConfigKey, TrxStatusService } from '../lib/index.js';
import { processUnCommittedTransaction } from '../util/database.js';
let KmoreMiddleware = class KmoreMiddleware {
trxStatusSvc;
static getName() {
const name = ConfigKey.middlewareName;
return name;
}
match(ctx) {
const flag = !!ctx;
return flag;
}
resolve() {
return (ctx, next) => {
return middleware(ctx, next, this.trxStatusSvc);
};
}
};
__decorate([
Inject(),
__metadata("design:type", TrxStatusService)
], KmoreMiddleware.prototype, "trxStatusSvc", void 0);
KmoreMiddleware = __decorate([
Middleware()
], KmoreMiddleware);
export { KmoreMiddleware };
/**
* Rollback all uncommitted transaction stored on ctx.dbTransactions
*/
async function middleware(ctx, next, trxStatusService) {
try {
await next();
}
// catch (ex) {
// console.warn('error inner kmore middleware', ex)
// throw ex
// }
finally {
try {
await processUnCommittedTransaction(ctx);
}
catch (ex) {
console.error('error rollbackAndCleanCtxTransactions', ex);
}
trxStatusService.cleanAfterRequestFinished(ctx);
}
}
//# sourceMappingURL=db-trx.middleware.js.map