@ultipa-graph/ultipa-driver
Version:
NodeJS SDK for Ultipa GQL
50 lines (49 loc) • 1.77 kB
TypeScript
/**
* Transaction management for GQLDB Node.js driver.
*/
/** Represents an active database transaction */
export interface Transaction {
id: number;
sessionId: number;
graphName: string;
readOnly: boolean;
createdAt: number;
timeout: number;
committed: boolean;
rolledBack: boolean;
/**
* Stable per-client logical session id surfaced under the
* transaction-branch model. Distinct from `sessionId: number` (the
* legacy uint64 from Login). Always populated by the driver. See
* TRANSACTIONS_DRIVER_GUIDE.md §2.0–2.1.
*/
clientSessionId: string;
}
/** Manages transactions for the client */
export declare class TransactionManager {
private transactions;
/** Create a new transaction */
begin(txId: number, sessionId: number, graphName: string, readOnly: boolean, timeout: number, clientSessionId?: string): Transaction;
/** Mark a transaction as committed */
commit(txId: number): void;
/** Mark a transaction as rolled back */
rollback(txId: number): void;
/** Get a transaction by ID */
get(txId: number): Transaction | undefined;
/** Get all active transactions */
getActive(): Transaction[];
/** Get all active transactions for a session */
getActiveForSession(sessionId: number): Transaction[];
/** Check if there are any active transactions */
hasActive(): boolean;
/** Get the number of active transactions */
count(): number;
/** Clear all transactions */
clearAll(): void;
/** Check if a transaction is active */
isActive(txId: number): boolean;
/** Check if a transaction has expired */
isExpired(txId: number): boolean;
/** Get transaction age in milliseconds */
age(txId: number): number;
}