@paperbits/common
Version:
Paperbits common components.
55 lines (46 loc) • 1.51 kB
text/typescript
import { Query, Page } from "../persistence/query";
/**
* Object storage.
*/
export interface IObjectStorage {
/**
* Creates an object with specified key in storage.
* @template T Type of created object.
* @param key string Object key.
* @param dataObject T Object.
*/
addObject<T>(key: string, dataObject: T, changeDescription?: string): Promise<void>;
/**
* Retrieves an object from storage by specified key.
* @template T Type of retrieved object.
* @param key string Object key.
*/
getObject<T>(key: string): Promise<T>;
/**
* Deletes an object with specfied key in stoage.
* @param key string Object key.
*/
deleteObject(key: string, changeDescription?: string): Promise<void>;
/**
* Updates an object with specified key in storage.
* @template T Type of updated object.
* @param key string Object key.
* @param dataObject {T} Object.
*/
updateObject<T>(key: string, dataObject: T, changeDescription?: string): Promise<void>;
/**
* Returns objects matching search criteria.
* @param key {string} Collection key.
* @param query {Query<T>} Search query.
*/
searchObjects<T>(key: string, query?: Query<T>): Promise<Page<T>>;
/**
* Save changes.
* @param delta
*/
saveChanges?(delta: Object): Promise<void>;
/**
* Loads data.
*/
loadData?(): Promise<object>;
}