@mwcp/kmore
Version:
midway component for knex, supports declarative transaction and OpenTelemetry
71 lines • 2.48 kB
TypeScript
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