UNPKG

@mwcp/kmore

Version:

midway component for knex, supports declarative transaction and OpenTelemetry

48 lines 1.62 kB
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