@rikishi/watermelondb
Version:
Build powerful React Native and React web apps that scale from hundreds to tens of thousands of records and remain fast
46 lines (34 loc) • 1.41 kB
TypeScript
declare module '@rikishi/watermelondb/Database' {
import {
AppSchema,
CollectionMap,
DatabaseAdapter,
Model,
TableName,
Collection,
} from '@rikishi/watermelondb'
import { CollectionChangeSet } from '@rikishi/watermelondb/Collection'
import { Class } from '@rikishi/watermelondb/utils/common'
import { Observable } from 'rxjs'
interface ReaderInterface {
callReader<T>(work: () => Promise<T>): Promise<T>
}
interface WriterInterface extends ReaderInterface {
callWriter<T>(work: () => Promise<T>): Promise<T>
batch(...records: (Model | null | void | false | Promise<void>)[]): Promise<void>
}
export default class Database {
public adapter: DatabaseAdapter
public schema: AppSchema
public collections: CollectionMap
public constructor(options: { adapter: DatabaseAdapter; modelClasses: Class<Model>[] })
public batch(...records: (Model | null | void | false | Promise<void>)[]): Promise<void>
public write<T>(work: (WriterInterface) => Promise<T>, description?: string): Promise<T>
public read<T>(work: (ReaderInterface) => Promise<T>, description?: string): Promise<T>
public withChangesForTables(
tables: Array<TableName<any>>,
): Observable<CollectionChangeSet<any> | null>
public unsafeResetDatabase(): Promise<void>
public get<T extends Model>(tableName: TableName<T>): Collection<T>
}
}