Abstract persistence component that stores data in flat files and caches them in memory.
Extends: MemoryPersistence
Implements: IConfigurable
Description
The FilePersistence class allows you to create persistence components that store data in flat files and chache them in memory.
Important points
- 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 the self._items property and calling the save method.
 
Configuration parameters
- path: path to the file where data is stored
 
References
- *:logger:*:*:1.0 - (optional) ILogger components to pass log messages
 
Constructors
Creates a new instance of the file persistence component.
publicconstructor(persister?: JsonFilePersister) 
- persister: JsonFilePersister
- (optional) persister component that loads and saves data from/to a flat file.  
Fields
Instance methods
configure
Configures the component by passing its configuration parameters.
publicconfigure(config: ConfigParams): void
- config: ConfigParams - configuration parameters to be set.
 
Examples
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(context: IContext, item: MyData): Promise<MyData> {
        this._items = this._items.filter((d) => d.name != name);
        this._items.push(item);
        await this.save(context);
        return item;
    }
  
}