UNPKG

@dataql/react-native

Version:

DataQL React Native SDK with offline-first capabilities and clean API

572 lines (571 loc) 19.9 kB
import { WALEntry, WALTransaction, WALRecoveryPoint, WALConfig } from "../../../core/src/lib/wal/types"; import { BaseWAL } from "../../../core/src/lib/wal/BaseWAL"; import { DrizzleD1Database } from "drizzle-orm/d1"; export declare const walEntries: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{ name: "wal_entries"; schema: undefined; columns: { id: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "id"; tableName: "wal_entries"; dataType: "string"; columnType: "SQLiteText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: true; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { length: number | undefined; }>; walId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "wal_id"; tableName: "wal_entries"; dataType: "string"; columnType: "SQLiteText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { length: number | undefined; }>; sessionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "session_id"; tableName: "wal_entries"; dataType: "string"; columnType: "SQLiteText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { length: number | undefined; }>; collection: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "collection"; tableName: "wal_entries"; dataType: "string"; columnType: "SQLiteText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { length: number | undefined; }>; operation: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "operation"; tableName: "wal_entries"; dataType: "string"; columnType: "SQLiteText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { length: number | undefined; }>; data: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "data"; tableName: "wal_entries"; dataType: "string"; columnType: "SQLiteText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { length: number | undefined; }>; previousData: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "previous_data"; tableName: "wal_entries"; dataType: "string"; columnType: "SQLiteText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { length: number | undefined; }>; transactionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "transaction_id"; tableName: "wal_entries"; dataType: "string"; columnType: "SQLiteText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { length: number | undefined; }>; status: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "status"; tableName: "wal_entries"; dataType: "string"; columnType: "SQLiteText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { length: number | undefined; }>; checksum: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "checksum"; tableName: "wal_entries"; dataType: "string"; columnType: "SQLiteText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { length: number | undefined; }>; metadata: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "metadata"; tableName: "wal_entries"; dataType: "string"; columnType: "SQLiteText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { length: number | undefined; }>; timestamp: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "timestamp"; tableName: "wal_entries"; dataType: "number"; columnType: "SQLiteInteger"; data: number; driverParam: number; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "created_at"; tableName: "wal_entries"; dataType: "number"; columnType: "SQLiteInteger"; data: number; driverParam: number; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "updated_at"; tableName: "wal_entries"; dataType: "number"; columnType: "SQLiteInteger"; data: number; driverParam: number; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; }; dialect: "sqlite"; }>; export declare const walTransactions: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{ name: "wal_transactions"; schema: undefined; columns: { id: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "id"; tableName: "wal_transactions"; dataType: "string"; columnType: "SQLiteText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: true; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { length: number | undefined; }>; walId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "wal_id"; tableName: "wal_transactions"; dataType: "string"; columnType: "SQLiteText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { length: number | undefined; }>; sessionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "session_id"; tableName: "wal_transactions"; dataType: "string"; columnType: "SQLiteText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { length: number | undefined; }>; status: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "status"; tableName: "wal_transactions"; dataType: "string"; columnType: "SQLiteText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { length: number | undefined; }>; operationCount: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "operation_count"; tableName: "wal_transactions"; dataType: "number"; columnType: "SQLiteInteger"; data: number; driverParam: number; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; timestamp: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "timestamp"; tableName: "wal_transactions"; dataType: "number"; columnType: "SQLiteInteger"; data: number; driverParam: number; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "created_at"; tableName: "wal_transactions"; dataType: "number"; columnType: "SQLiteInteger"; data: number; driverParam: number; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "updated_at"; tableName: "wal_transactions"; dataType: "number"; columnType: "SQLiteInteger"; data: number; driverParam: number; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; }; dialect: "sqlite"; }>; export declare const walRecoveryPoints: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{ name: "wal_recovery_points"; schema: undefined; columns: { id: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "id"; tableName: "wal_recovery_points"; dataType: "string"; columnType: "SQLiteText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: true; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { length: number | undefined; }>; walId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "wal_id"; tableName: "wal_recovery_points"; dataType: "string"; columnType: "SQLiteText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { length: number | undefined; }>; sessionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "session_id"; tableName: "wal_recovery_points"; dataType: "string"; columnType: "SQLiteText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { length: number | undefined; }>; walEntryId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "wal_entry_id"; tableName: "wal_recovery_points"; dataType: "string"; columnType: "SQLiteText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { length: number | undefined; }>; timestamp: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "timestamp"; tableName: "wal_recovery_points"; dataType: "number"; columnType: "SQLiteInteger"; data: number; driverParam: number; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: "created_at"; tableName: "wal_recovery_points"; dataType: "number"; columnType: "SQLiteInteger"; data: number; driverParam: number; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; }; dialect: "sqlite"; }>; export declare class SQLiteWAL extends BaseWAL { private db; constructor(db: DrizzleD1Database<any>, config?: Partial<WALConfig>); private initializeSchema; protected persistEntry(entry: WALEntry): Promise<void>; protected persistTransaction(transaction: WALTransaction): Promise<void>; protected updateEntryStatus(entryId: string, status: WALEntry["status"]): Promise<void>; protected updateTransactionStatus(transactionId: string, status: WALTransaction["status"]): Promise<void>; protected fetchUncommittedEntries(sessionId?: string): Promise<WALEntry[]>; protected fetchEntriesSince(timestamp: Date, sessionId?: string): Promise<WALEntry[]>; protected persistRecoveryPoint(recoveryPoint: WALRecoveryPoint): Promise<void>; protected deleteCommittedEntries(olderThan: Date): Promise<number>; protected deleteSessionEntries(sessionId: string): Promise<void>; private mapToWALEntry; /** * Get WAL statistics for monitoring */ getStatistics(): Promise<{ totalEntries: number; pendingEntries: number; committedEntries: number; rolledBackEntries: number; totalTransactions: number; }>; /** * Perform recovery operations by replaying uncommitted entries */ performRecovery(sessionId: string, applyMutation: (entry: WALEntry) => Promise<void>): Promise<number>; /** * Vacuum WAL tables to reclaim space */ vacuum(): Promise<void>; }