UNPKG

@dataql/node

Version:

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

42 lines (41 loc) 2.45 kB
import { WALInterface, WALEntry, WALTransaction, WALRecoveryPoint, WALConfig, MutationWithWAL } from "./types.js"; export declare abstract class BaseWAL implements WALInterface { protected config: WALConfig; constructor(config?: Partial<WALConfig>); protected abstract persistEntry(entry: WALEntry): Promise<void>; protected abstract persistTransaction(transaction: WALTransaction): Promise<void>; protected abstract updateEntryStatus(entryId: string, status: WALEntry["status"]): Promise<void>; protected abstract updateTransactionStatus(transactionId: string, status: WALTransaction["status"]): Promise<void>; protected abstract fetchUncommittedEntries(sessionId?: string): Promise<WALEntry[]>; protected abstract fetchEntriesSince(timestamp: Date, sessionId?: string): Promise<WALEntry[]>; protected abstract persistRecoveryPoint(recoveryPoint: WALRecoveryPoint): Promise<void>; protected abstract deleteCommittedEntries(olderThan: Date): Promise<number>; protected abstract deleteSessionEntries(sessionId: string): Promise<void>; writeEntry(entryData: Omit<WALEntry, "id" | "timestamp" | "status">): Promise<WALEntry>; writeTransaction(transactionData: 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>; /** * Execute a mutation with WAL logging */ executeWithWAL<T>(sessionId: string, collection: string, operation: WALEntry["operation"], data: any, mutationFn: () => Promise<T>, previousData?: any, metadata?: WALEntry["metadata"]): Promise<MutationWithWAL<T>>; /** * Cleanup expired entries based on retention policy */ cleanupExpiredEntries(): Promise<number>; /** * Get WAL configuration */ getConfig(): Readonly<WALConfig>; /** * Update WAL configuration */ updateConfig(newConfig: Partial<WALConfig>): void; }