@dataql/react-native
Version:
DataQL React Native SDK with offline-first capabilities and clean API
53 lines (52 loc) • 1.89 kB
TypeScript
import { useLiveQuery as useDrizzleLiveQuery } from "drizzle-orm/expo-sqlite";
import { OfflineCacheManager } from "../cache/OfflineCacheManager";
import { SyncManager } from "../sync/SyncManager";
import { DatabaseClient } from "../db/client";
import type { MutationResult, SyncStatus } from "../types";
export declare function setGlobalInstances(cacheManager: OfflineCacheManager, syncManager: SyncManager, dbClient: DatabaseClient): void;
export declare function useQuery<T = any>(tableName: string, filter?: any): {
data: T[];
loading: boolean;
error: string | null;
refetch: () => void;
isFromCache: boolean;
lastUpdated: Date | undefined;
};
export declare function useLiveQuery<T = any>(tableName: string, filter?: any): {
data: T[];
loading: boolean;
error: string | null;
refetch: () => void;
isFromCache: boolean;
lastUpdated: Date | undefined;
} | {
data: T[];
error: string | null;
updatedAt: Date | undefined;
isFromCache: boolean;
};
export declare function useMutation<T = any>(): {
create: (tableName: string, data: T) => Promise<MutationResult>;
insert: (tableName: string, data: T) => Promise<MutationResult>;
update: (tableName: string, id: string, data: Partial<T>) => Promise<MutationResult>;
upsert: (tableName: string, data: T & {
id: string;
}) => Promise<MutationResult>;
delete: (tableName: string, id: string) => Promise<MutationResult>;
loading: boolean;
error: string | null;
};
export declare function useSync(): {
syncStatus: SyncStatus;
sync: () => Promise<boolean>;
startAutoSync: () => void;
stopAutoSync: () => void;
loading: boolean;
error: string | null;
isOnline: boolean;
isSyncing: boolean;
};
export declare function useNetworkStatus(): {
isOnline: boolean;
};
export { useDrizzleLiveQuery as useRawLiveQuery };