UNPKG

shelving

Version:

Toolkit for using data in JavaScript.

38 lines (37 loc) 1.93 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 { ItemStore } from "../store/ItemStore.js"; import { QueryStore } from "../store/QueryStore.js"; /** * Cache of `ItemStore` and `QueryStore` objects for a single collection. * - Use `getItem(id)` to retrieve or create the `ItemStore` for a given id. * - Use `getQuery(query)` to retrieve or create the `QueryStore` for a given query. */ export declare class CollectionCache<I extends Identifier, T extends Data> implements AsyncDisposable { private readonly _items; private readonly _queries; readonly collection: Collection<string, I, T>; readonly provider: DBProvider<I>; readonly memory: MemoryDBProvider<I> | undefined; constructor(collection: Collection<string, I, T>, provider: DBProvider<I>, memory?: MemoryDBProvider<I>); /** Get (or create) the `ItemStore` for the given id. */ getItem(id: I): ItemStore<I, T>; /** Get (or create) the `QueryStore` for the given query. */ getQuery(query: Query<Item<I, T>>): QueryStore<I, T>; /** Refresh a specific item store. */ refreshItem(id: I, maxAge?: number): Promise<void>; /** Refresh every cached item store. */ refreshItems(maxAge?: number): Promise<void>; /** Refresh a specific query store. */ refreshQuery(query: Query<Item<I, T>>, maxAge?: number): Promise<void>; /** Refresh every cached query store. */ refreshQueries(maxAge?: number): Promise<void>; /** Refresh every cached store (items and queries). */ refreshAll(maxAge?: number): Promise<void>; private _queryKey; [Symbol.asyncDispose](): Promise<void>; }