UNPKG

pip-services4-persistence-node

Version:

Persistence Components for Pip.Services in Node.js / ES2017

62 lines (61 loc) 2.28 kB
/** @module persistence */ import { ConfigParams } from 'pip-services4-components-node'; import { IConfigurable } from 'pip-services4-components-node'; import { JsonFilePersister } from './JsonFilePersister'; import { MemoryPersistence } from './MemoryPersistence'; /** * Abstract persistence component that stores data in flat files * and caches them in memory. * * This is the most basic persistence component that is only * able to store data items of any type. Specific CRUD operations * over the data items must be implemented in child classes by * accessing this._items property and calling [[save]] method. * * @see [[MemoryPersistence]] * @see [[JsonFilePersister]] * * ### Configuration parameters ### * * - path: path to the file where data is stored * * ### References ### * * - <code>\*:logger:\*:\*:1.0</code> (optional) [[https://pip-services4-node.github.io/pip-services4-components-node/interfaces/log.ilogger.html ILogger]] components to pass log messages * * ### Example ### * * class MyJsonFilePersistence extends FilePersistence<MyData> { * public constructor(path?: string) { * super(new JsonPersister(path)); * } * * public async getByName(context: IContext, name: string): Promise<MyData> { * let item = this._items.find((d) => d.name == name); * retur item; * }); * * public async set(correlatonId: string, item: MyData): Promise<MyData> { * this._items = this._items.filter((d) => d.name != name); * this._items.push(item); * await this.save(context); * return item; * } * * } */ export declare class FilePersistence<T> extends MemoryPersistence<T> implements IConfigurable { protected readonly _persister: JsonFilePersister<T>; /** * Creates a new instance of the persistence. * * @param persister (optional) a persister component that loads and saves data from/to flat file. */ constructor(persister?: JsonFilePersister<T>); /** * Configures component by passing configuration parameters. * * @param config configuration parameters to be set. */ configure(config: ConfigParams): void; }