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