@dataql/react-native
Version:
DataQL React Native SDK with offline-first capabilities and clean API
71 lines (70 loc) • 3.67 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, InternalConnectionConfig, SyncConfig as ReactNativeSyncConfig } from "./types";
declare class ReactNativeInternalMongoClient {
private config;
private connectionUrl;
constructor(config: InternalConnectionConfig);
create<T>(collection: string, data: T): Promise<CRUDResult<T>>;
read<T>(collection: string, filter?: any): Promise<T[]>;
update<T>(collection: string, id: string, data: Partial<T>): Promise<CRUDResult<T>>;
delete(collection: string, id: string): Promise<CRUDResult>;
}
export declare class DataQLClient extends BaseDataQLClient {
private dbClient;
private cacheManager;
private syncManager;
private reactNativeConfig;
private internalMongoClient?;
constructor(config: DataQLReactNativeConfig);
protected createViaInternalConnection<T>(tableName: string, data: T): Promise<CRUDResult<T>>;
protected readViaInternalConnection<T>(tableName: string, filter?: any): Promise<T[]>;
protected updateViaInternalConnection<T>(tableName: string, id: string, data: Partial<T>): Promise<CRUDResult<T>>;
protected deleteViaInternalConnection(tableName: string, id: string): Promise<CRUDResult>;
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;
setInternalConnection(internalConnection: InternalConnectionConfig): void;
clearCustomConnection(): void;
clearInternalConnection(): void;
destroy(): Promise<void>;
getReactNativeConfig(): {
schemas: Record<string, any>;
appToken?: string;
databaseName?: string;
database?: import("./types").DatabaseConfig;
syncConfig?: ReactNativeSyncConfig;
enableChangeListener?: boolean;
debug?: boolean;
env?: "development" | "staging" | "production" | "dev" | "prod";
devPrefix?: string;
internalConnection?: InternalConnectionConfig;
};
getInternalMongoClient(): ReactNativeInternalMongoClient | undefined;
testInternalConnection(): Promise<boolean>;
}
export {};