UNPKG

@dataql/node

Version:

DataQL core SDK for unified data management with MongoDB and GraphQL - Production Multi-Cloud Ready

61 lines (60 loc) 1.99 kB
export interface WALEntry { id: string; timestamp: Date; sessionId: string; collection: string; operation: "create" | "update" | "delete" | "transaction"; data: any; previousData?: any; transactionId?: string; status: "pending" | "committed" | "rollback"; checksum?: string; metadata?: { clientId?: string; userId?: string; context?: any; }; } export interface WALTransaction { id: string; sessionId: string; timestamp: Date; operations: WALEntry[]; status: "pending" | "committed" | "rollback"; } export interface WALRecoveryPoint { id: string; timestamp: Date; walEntryId: string; sessionId: string; } export interface WALInterface { writeEntry(entry: Omit<WALEntry, "id" | "timestamp" | "status">): Promise<WALEntry>; writeTransaction(transaction: Omit<WALTransaction, "id" | "timestamp" | "status">): Promise<WALTransaction>; commitEntry(entryId: string): Promise<void>; commitTransaction(transactionId: string): Promise<void>; rollbackEntry(entryId: string): Promise<void>; rollbackTransaction(transactionId: string): Promise<void>; getUncommittedEntries(sessionId?: string): Promise<WALEntry[]>; getEntriesSince(timestamp: Date, sessionId?: string): Promise<WALEntry[]>; createRecoveryPoint(sessionId: string, walEntryId: string): Promise<WALRecoveryPoint>; purgeCommittedEntries(olderThan: Date): Promise<number>; purgeSession(sessionId: string): Promise<void>; } export interface WALConfig { maxRetentionDays: number; autoCommit: boolean; checksumEnabled: boolean; batchSize: number; enableRecovery: boolean; } export declare class WALError extends Error { code: string; entry?: WALEntry | undefined; constructor(message: string, code: string, entry?: WALEntry | undefined); } export type MutationWithWAL<T = any> = { walEntry: WALEntry; result: T; rollback: () => Promise<void>; };