UNPKG

@atomiqlabs/base

Version:

Base classes and interfaces for atomiq protocol

53 lines (52 loc) 1.64 kB
import { StorageObject } from "./StorageObject"; /** * Interface for storage managers that persist StorageObject instances. * Provides basic CRUD operations with in-memory caching via the data property. * * @typeParam T - Type of StorageObject to manage * * @category Storage */ export interface IStorageManager<T extends StorageObject> { /** In-memory cache of stored objects, keyed by hash */ data: { [key: string]: T; }; /** Initializes the storage backend */ init(): Promise<void>; /** * Saves an object to storage * * @param hash Unique identifier for the object * @param object Object to save */ saveData(hash: string, object: T): Promise<void>; /** * Removes an object from storage * * @param hash Identifier of the object to remove */ removeData(hash: string): Promise<void>; /** * Loads all stored objects and deserializes them using the provided constructor * * @param type Constructor function to instantiate each object * @returns Array of deserialized objects */ loadData(type: new (data: any) => T): Promise<T[]>; /** * Removes multiple objects from storage (optional batch operation) * * @param keys Array of identifiers to remove */ removeDataArr?(keys: string[]): Promise<void>; /** * Saves multiple objects to storage (optional batch operation) * * @param values Array of id-object pairs to save */ saveDataArr?(values: { id: string; object: T; }[]): Promise<void>; }