shelving
Version:
Toolkit for using data in JavaScript.
29 lines (28 loc) • 1.78 kB
TypeScript
import type { Firestore } from "firebase/firestore";
import { AsyncProvider } from "../../db/Provider.js";
import type { Data, Database, DataKey } from "../../util/data.js";
import type { Items, OptionalItem } from "../../util/item.js";
import type { ItemQuery } from "../../util/query.js";
import type { Updates } from "../../util/update.js";
/**
* Firestore client database provider.
* - Works with the Firebase JS SDK.
* - Supports offline mode.
* - Supports realtime subscriptions.
*/
export declare class FirestoreClientProvider<T extends Database> extends AsyncProvider<string, T> {
private readonly _firestore;
constructor(firestore: Firestore);
getItem<K extends DataKey<T>>(c: K, id: string): Promise<OptionalItem<string, T[K]>>;
getItemSequence<K extends DataKey<T>>(c: K, id: string): AsyncIterable<OptionalItem<string, T[K]>>;
addItem<K extends DataKey<T>>(c: K, data: Data): Promise<string>;
setItem<K extends DataKey<T>>(c: K, id: string, data: Data): Promise<void>;
updateItem<K extends DataKey<T>>(c: K, id: string, updates: Updates<T[K]>): Promise<void>;
deleteItem<K extends DataKey<T>>(c: K, id: string): Promise<void>;
countQuery<K extends DataKey<T>>(c: K, q?: ItemQuery<string, T[K]>): Promise<number>;
getQuery<K extends DataKey<T>>(c: K, q?: ItemQuery<string, T[K]>): Promise<Items<string, T[K]>>;
getQuerySequence<K extends DataKey<T>>(c: K, q?: ItemQuery<string, T[K]>): AsyncIterable<Items<string, T[K]>>;
setQuery<K extends DataKey<T>>(c: K, q: ItemQuery<string, T[K]>, data: Data): Promise<void>;
updateQuery<K extends DataKey<T>>(c: K, q: ItemQuery<string, T[K]>, updates: Updates<T[K]>): Promise<void>;
deleteQuery<K extends DataKey<T>>(c: K, q: ItemQuery<string, T[K]>): Promise<void>;
}