UNPKG

@mwcp/kmore

Version:

midway component for knex, supports declarative transaction and OpenTelemetry

70 lines 4.96 kB
import { IMidwayContainer } from '@midwayjs/core'; import { type TraceContext, TraceService } from '@mwcp/otel'; import type { ScopeType } from '@mwcp/share'; import { Kmore, KmoreQueryBuilder, KmoreTransaction, PropagationType, TrxPropagateOptions } from 'kmore'; import { CallerService } from './caller.service.js'; import { CallerKey, CallerKeyPropagationMapIndex, DbSourceName, EntryCallerKeyTrxMapIndex, PropagatingOptions, PropagatingRet, RegisterTrxPropagateOptions, StartNewTrxOptions } from './propagation/trx-status.types.js'; /** * Declarative transaction status manager */ export declare class TrxStatusService { readonly applicationContext: IMidwayContainer; readonly appDir: string; protected readonly traceSvc: TraceService; protected readonly callerSvc: CallerService; readonly scope2TraceContextMap: WeakMap<ScopeType, TraceContext>; protected readonly dbInstanceList: Map<string, Kmore<any>>; protected readonly callerKeyPropagationMapIndex: CallerKeyPropagationMapIndex; protected readonly entryCallerKeyTrxMapIndex: EntryCallerKeyTrxMapIndex; getName(): string; registerDbInstance(dbId: string, db: Kmore): void; /** * If dbId is undefined or empty * - return the only on instance * - throw error if multiple instance exists */ getDbInstance(dbId: string | undefined): Kmore | undefined; getDbInstanceCount(): number; listDbInstanceNames(): DbSourceName[]; unregisterDbInstance(dbId: string): void; registerPropagation(options: RegisterTrxPropagateOptions): CallerKey; retrieveUniqueTopCallerKey(sourceName: DbSourceName | undefined, scope: ScopeType, key: CallerKey): CallerKey | undefined; /** * Is decorator `Transactional()` registered with current scope and callerKey */ isRegistered(dbSourceName: DbSourceName, scope: ScopeType, key: CallerKey): boolean; startNewTrx(this: TrxStatusService, options: StartNewTrxOptions): Promise<KmoreTransaction>; /** * Only top caller can commit */ tryCommitTrxIfKeyIsEntryTop(sourceName: DbSourceName | undefined, scope: ScopeType, callerKey: CallerKey): Promise<void>; trxRollbackEntry(sourceName: DbSourceName | undefined, scope: ScopeType, callerKey: CallerKey): Promise<void>; bindBuilderPropagationData(dbSourceName: DbSourceName, builder: KmoreQueryBuilder, distance?: number): void; propagating(options: PropagatingOptions): Promise<PropagatingRet>; protected _propagatingRequired(options: PropagatingOptions, trxPropagateOptions: TrxPropagateOptions): Promise<KmoreTransaction>; protected _propagatingSupports(options: PropagatingOptions, trxPropagateOptions: TrxPropagateOptions): Promise<KmoreTransaction | undefined>; cleanAfterRequestFinished(scope: ScopeType): void; protected cleanAfterTrx(dbSourceName: DbSourceName | undefined, scope: ScopeType, callerKey: CallerKey): void; protected builderLinkTrx(options: PropagatingOptions, trx: KmoreTransaction | undefined): void; protected getTrxArrayByEntryKey(dbSourceName: DbSourceName, scope: ScopeType, key: CallerKey): KmoreTransaction[] | undefined; protected getCurrentTrxByEntryKey(dbSourceName: DbSourceName, scope: ScopeType, key: CallerKey): KmoreTransaction | undefined; protected updateEntryCallerKeyTrxMap(dbSourceName: DbSourceName, scope: ScopeType, key: CallerKey, trx: KmoreTransaction): void; protected removeEntryCallerKeyTrxMap(scope: ScopeType): void; protected cleanEntryCallerKeyTrxMapByKey(dbSourceName: DbSourceName, scope: ScopeType, key: CallerKey): void; protected removeTrxFromEntryCallerKeyTrxMap(dbSourceName: DbSourceName, scope: ScopeType, trxId: symbol): void; getCurrentTrxId(dbSourceName: DbSourceName, scope: ScopeType, callerKey: CallerKey): symbol | undefined; getCurrentTrx(dbSourceName: DbSourceName, scope: ScopeType, callerKey: CallerKey): KmoreTransaction | undefined; protected getPropagationOptions(dbSourceName: DbSourceName, scope: ScopeType, key: CallerKey): RegisterTrxPropagateOptions | undefined; protected setPropagationOptions(key: CallerKey, options: RegisterTrxPropagateOptions): void; protected getPropagationOptionsCount(dbSourceName: DbSourceName, scope: ScopeType): number; protected getPropagationType(dbSourceName: DbSourceName, scope: ScopeType, key: CallerKey): PropagationType | undefined; protected delPropagationOptions(dbSourceName: DbSourceName, scope: ScopeType, key: CallerKey): void; protected retrieveRegisteredTopCallerKeyFromCallStack(dbSourceName: DbSourceName, scope: ScopeType, limit?: number): CallerKey | undefined; getTraceContextByScope(scope: ScopeType): TraceContext | undefined; /** * @param scope kmoreTrxId or kmoreQueryId */ setTraceContextByScope(scope: ScopeType, traceContext: TraceContext): void; removeTraceContextByScope(scope: ScopeType): void; } //# sourceMappingURL=trx-status.service.d.ts.map