@dataql/react-native
Version:
DataQL React Native SDK with offline-first capabilities and clean API
50 lines (49 loc) • 2.37 kB
TypeScript
import { BaseDataQLClient, SyncConfig, SyncStatus, CRUDResult } from "@dataql/core";
import { OfflineCacheManager } from "./cache/OfflineCacheManager";
import { SyncManager } from "./sync/SyncManager";
import type { DataQLReactNativeConfig, CustomRequestConnection, WorkerBinding, SyncConfig as ReactNativeSyncConfig } from "./types";
export declare class DataQLClient extends BaseDataQLClient {
private dbClient;
private cacheManager;
private syncManager;
private reactNativeConfig;
constructor(config: DataQLReactNativeConfig);
initializeStorage(): Promise<boolean>;
storeDataLocally<T>(tableName: string, data: T): Promise<CRUDResult<T>>;
retrieveDataLocally<T>(tableName: string, filter?: any): Promise<T[]>;
updateDataLocally<T>(tableName: string, id: string, data: Partial<T>): Promise<CRUDResult<T>>;
deleteDataLocally(tableName: string, id: string): Promise<CRUDResult>;
syncWithServer(): Promise<boolean>;
getStoredSyncStatus(): Promise<SyncStatus>;
getDatabase(): import("drizzle-orm/expo-sqlite").ExpoSQLiteDatabase<Record<string, unknown>> & {
$client: import("expo-sqlite").SQLiteDatabase;
};
/** @deprecated Use create() instead */
createOffline<T>(tableName: string, data: T): Promise<CRUDResult<T>>;
/** @deprecated Use update() instead */
updateOffline<T>(tableName: string, id: string, data: Partial<T>): Promise<CRUDResult<T>>;
/** @deprecated Use delete() instead */
deleteOffline(tableName: string, id: string): Promise<CRUDResult<any>>;
/** @deprecated Use query() instead */
queryOffline<T>(tableName: string, filter?: any): Promise<T[]>;
startAutoSync(): void;
stopAutoSync(): void;
getSyncManager(): SyncManager;
getCacheManager(): OfflineCacheManager;
isOnline(): boolean;
updateSyncConfig(newConfig: Partial<SyncConfig>): void;
setCustomConnection(customConnection: CustomRequestConnection): void;
setWorkerBinding(workerBinding: WorkerBinding): void;
clearCustomConnection(): void;
destroy(): Promise<void>;
getReactNativeConfig(): {
schemas: Record<string, any>;
appToken?: string;
databaseName?: string;
syncConfig?: ReactNativeSyncConfig;
enableChangeListener?: boolean;
debug?: boolean;
env?: "dev" | "prod";
devPrefix?: string;
};
}