UNPKG

shelving

Version:

Toolkit for using data in JavaScript.

32 lines (31 loc) 1.99 kB
import type { MutableArray } from "../../util/array.js"; import type { Data } from "../../util/data.js"; import type { Identifier, Item } from "../../util/item.js"; import type { Query } from "../../util/query.js"; import type { Updates } from "../../util/update.js"; import type { Collection } from "../collection/Collection.js"; import { ThroughDBProvider } from "./ThroughDBProvider.js"; /** A structured log entry for a database change. */ export type DBChange<I extends Identifier> = { readonly action: "add" | "set" | "update" | "delete"; readonly collection: string; readonly id?: I | undefined; readonly query?: unknown; readonly data?: unknown; readonly updates?: unknown; }; /** * Database provider that keeps a log of any written changes to its `.changes` property. * - This is useful if you want to hook into a database to build out audit logging functionality. */ export declare class ChangesDBProvider<I extends Identifier, T extends Data> extends ThroughDBProvider<I, T> { get changes(): ReadonlyArray<DBChange<I>>; readonly _changes: MutableArray<DBChange<I>>; addItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, data: TT): Promise<II>; setItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II, data: TT): Promise<void>; updateItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II, updates: Updates<Item<II, TT>>): Promise<void>; deleteItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II): Promise<void>; setQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>, data: TT): Promise<void>; updateQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>, updates: Updates<TT>): Promise<void>; deleteQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>): Promise<void>; }