@rikishi/watermelondb
Version:
Build powerful React Native and React web apps that scale from hundreds to tens of thousands of records and remain fast
70 lines (54 loc) • 1.96 kB
TypeScript
declare module '@rikishi/watermelondb/adapters/lokijs' {
import { SchemaMigrations } from '@rikishi/watermelondb/Schema/migrations'
import { LokiMemoryAdapter } from 'lokijs'
import {
AppSchema,
DatabaseAdapter,
Model,
Query,
RecordId,
TableName,
DirtyRaw,
} from '@rikishi/watermelondb'
import {
BatchOperation,
CachedFindResult,
CachedQueryResult,
} from '@rikishi/watermelondb/adapters/type'
export interface LokiAdapterOptions {
dbName?: string
schema: AppSchema
migrations?: SchemaMigrations
useWebWorker?: boolean
useIncrementalIndexedDB?: boolean
_testLokiAdapter?: LokiMemoryAdapter
onQuotaExceededError?: (error: any) => void
onSetUpError?: (error: Error) => void
extraLokiOptions?: {
autosave?: boolean,
autosaveInterval?: number,
}
extraIncrementalIDBOptions?: {
onDidOverwrite?: () => void,
onversionchange?: () => void,
serializeChunk?: (table: TableName<any>, raws: DirtyRaw[]) => any,
deserializeChunk?: (table: TableName<any>, chunk: any) => DirtyRaw[],
onFetchStart?: () => void,
}
}
export default class LokiJSAdapter implements DatabaseAdapter {
schema: AppSchema
constructor(options: LokiAdapterOptions)
batch(operations: BatchOperation[]): Promise<void>
count<T extends Model>(query: Query<T>): Promise<number>
destroyDeletedRecords(tableName: TableName<any>, recordIds: RecordId[]): Promise<void>
find(table: TableName<any>, id: RecordId): Promise<CachedFindResult>
getDeletedRecords(tableName: TableName<any>): Promise<RecordId[]>
getLocal(key: string): Promise<string | null>
query<T extends Model>(query: Query<T>): Promise<CachedQueryResult>
removeLocal(key: string): Promise<void>
setLocal(key: string, value: string): Promise<void>
unsafeClearCachedRecords(): Promise<void>
unsafeResetDatabase(): Promise<void>
}
}