UNPKG

shelving

Version:

Toolkit for using data in JavaScript.

39 lines (38 loc) 2.64 kB
import type { Data } from "../../util/data.js"; import type { Identifier, Item } from "../../util/item.js"; import type { Query } from "../../util/query.js"; import type { Collection } from "../collection/Collection.js"; import type { DBProvider } from "../provider/DBProvider.js"; import type { MemoryDBProvider } from "../provider/MemoryDBProvider.js"; import type { ItemStore } from "../store/ItemStore.js"; import type { QueryStore } from "../store/QueryStore.js"; import { CollectionCache } from "./CollectionCache.js"; /** * Cache of `CollectionCache` objects for multiple collections. * - Use `get(collection)` to retrieve or create the `CollectionCache` for a given collection, * then `getItem(id)` / `getQuery(query)` on that to get a specific store. */ export declare class DBCache<I extends Identifier = Identifier, T extends Data = Data> implements AsyncDisposable { private readonly _collections; readonly provider: DBProvider<I, T>; readonly memory: MemoryDBProvider<I, T> | undefined; constructor(provider: DBProvider<I, T>); private _get; /** Get (or create) the `CollectionCache` for the given collection. */ get<II extends I, TT extends T>(collection: Collection<string, II, TT>): CollectionCache<II, TT>; /** Get (or create) an `ItemStore` for a collection/id in one hop. */ getItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II): ItemStore<II, TT>; /** Get (or create) a `QueryStore` for a collection/query in one hop. */ getQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>): QueryStore<II, TT>; /** Refresh a specific item store for a collection. */ refreshItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II, maxAge?: number): Promise<void>; /** Refresh every cached item store for a collection. */ refreshItems<II extends I, TT extends T>(collection: Collection<string, II, TT>, maxAge?: number): Promise<void>; /** Refresh a specific query store for a collection. */ refreshQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>, maxAge?: number): Promise<void>; /** Refresh every cached query store for a collection. */ refreshQueries<II extends I, TT extends T>(collection: Collection<string, II, TT>, maxAge?: number): Promise<void>; /** Refresh every cached store (items and queries) for a collection. */ refreshAll<II extends I, TT extends T>(collection: Collection<string, II, TT>, maxAge?: number): Promise<void>; [Symbol.asyncDispose](): Promise<void>; }