@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
TypeScript
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;
}