@mwcp/kmore
Version:
midway component for knex, supports declarative transaction and OpenTelemetry
48 lines • 1.62 kB
JavaScript
import assert from 'node:assert';
import { genISO8601String } from '@waiting/shared-core';
export function processTrxCommitAndRollback(options, decoratorContext, data) {
const { hook, op, stage, eventName } = data;
const { kmore, trx } = options;
const time = genISO8601String();
const { traceService, traceSpan } = decoratorContext;
assert(traceService, 'traceService is empty');
assert(traceSpan, 'traceSpan is empty');
const attrs = { op };
const events = {
event: eventName,
dbId: kmore.dbId,
time,
kmoreTrxId: trx.kmoreTrxId.toString(),
};
const ret = { attrs, events };
if (trx.trxPropagateOptions?.entryKey) { // end span for propagated trx, current trx is the entry trx
ret.endSpanAfterTraceLog = true;
return ret;
}
const { traceScope } = decoratorContext;
if (traceScope) {
const scopeRootSpan2 = traceService.getRootSpan(traceScope);
if (scopeRootSpan2) {
if (scopeRootSpan2 === traceSpan) {
ret.endSpanAfterTraceLog = true;
}
}
else {
ret.endSpanAfterTraceLog = true;
}
return ret;
}
const { scope } = trx;
assert(scope, `${hook}.${stage}-${op.toUpperCase()} trx.scope is empty`);
const scopeRootSpan = traceService.getRootSpan(scope);
if (scopeRootSpan) {
if (scopeRootSpan === traceSpan) {
ret.endSpanAfterTraceLog = true;
}
}
else {
ret.endSpanAfterTraceLog = true;
}
return ret;
}
//# sourceMappingURL=db-hook.trx.helper.js.map