UNPKG

@mwcp/kmore

Version:

midway component for knex, supports declarative transaction and OpenTelemetry

71 lines 2.48 kB
import type { ScopeType } from '@mwcp/share'; import type { Kmore, KmoreQueryBuilder, KmoreTransaction, KmoreTransactionConfig, PropagationType, RowLockLevel, TrxPropagateOptions } from 'kmore'; export interface StartNewTrxOptions extends KmoreTransactionConfig { db: Kmore; scope: ScopeType; trxPropagateOptions: TrxPropagateOptions; kmoreTrxId?: symbol | undefined; } export interface PropagatingOptions { builder: KmoreQueryBuilder; db: Kmore; } export interface PropagatingRet { /** * undefined if propagated already, trx present */ kmoreTrxId: symbol | undefined; } export type DbSourceName = string; export type CallerKeyFileMapIndex = Map<ScopeType, SourceCallerKeyFileMap>; type SourceCallerKeyFileMap = Map<DbSourceName, CallerKeyFileMap>; type CallerKeyFileMap = Map<CallerKey, FilePath>; export type CallerKeyPropagationMapIndex = Map<ScopeType, SourceCallerKeyPropagationMap>; type SourceCallerKeyPropagationMap = Map<DbSourceName, CallerKeyPropagationMap>; type CallerKeyPropagationMap = Map<CallerKey, RegisterTrxPropagateOptions>; export type EntryCallerKeyTrxMapIndex = Map<ScopeType, SourceCallerKeyTrxMap>; type SourceCallerKeyTrxMap = Map<DbSourceName, CallerKeyTrxArrayMap>; type CallerKeyTrxArrayMap = Map<CallerKey, KmoreTransaction[]>; export type CallerTreeMapIndex = Map<ScopeType, SourceCallerTreeMap>; type SourceCallerTreeMap = Map<DbSourceName, CallerTreeMap>; type CallerTreeMap = Map<CallerKey, CallerKeyArray>; export type CallerKeyArray = CallerKey[]; export type RegId = symbol; /** * CallerKey: `${ClassName}:${FuncName}` */ export type CallerKey = string; export type ClassName = string; export type MethodName = string; export type FuncName = string; export type FilePath = string; export interface RegisterTrxPropagateOptions { dbSourceName: DbSourceName | undefined; scope: ScopeType; type: PropagationType; className: string; funcName: string; /** * @default {@link RowLockLevel.ForShare} */ readRowLockLevel: RowLockLevel; /** * @default {@link RowLockLevel.ForUpdate} */ writeRowLockLevel: RowLockLevel; } export interface TrxCallerInfo { path: FilePath; className: ClassName; funcName: FuncName; methodName: MethodName; line: number; column: number; } export declare enum TransactionalEntryType { top = "top", sub = "sub", savepoint = "savepoint" } export {}; //# sourceMappingURL=trx-status.types.d.ts.map