@dataql/react-native
Version:
DataQL React Native SDK with offline-first capabilities and clean API
572 lines (571 loc) • 19.9 kB
TypeScript
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>;
}