IdentifiableFilePersistence<T extends IIdentifiable<K>, K> class

Abstract persistence component that stores data in flat files and implements a number of CRUD operations over data items with unique ids. The data items must implement IIdentifiable interface.

In basic scenarios child classes shall only override getPageByFilter, getListByFilter or deleteByFilter operations with specific filter function. All other operations can be used out of the box.

In complex scenarios child classes can implement additional operations by accessing cached items via this._items property and calling save method on updates.

See JsonFilePersister See MemoryPersistence

Configuration parameters

  • path: path to the file where data is stored
  • options:
    • max_page_size: Maximum number of items returned in a single page (default: 100)

References

  • *:logger:*:*:1.0 (optional) ILogger components to pass log messages

Examples

class MyFilePersistence extends IdentifiableFilePersistence<MyData, String> {
    MyFilePersistence([String path]):super(JsonPersister(path)) {
    }

    dynamic _composeFilter(FilterParams filter) {
        filter = filter ?? FilterParams();
        var name = filter.getAsNullableString("name");
        return (item) {
            if (name != null && item.name != name)
                return false;
            return true;
        };
    }

    Future<DataPage<MyData>> getPageByFilter(String? correlationId, FilterParams filter, PagingParams paging){
       return super.getPageByFilter(correlationId, _composeFilter(filter), paging, null, null);
    }

}

var persistence = MyFilePersistence("./data/data.json");

await persistence.create("123", { id: "1", name: "ABC" });
var page = await persistence.getPageByFilter(
        "123",
        FilterParams.fromTuples([
            "name", "ABC"
        ]),
        null);

print(page.data);          // Result: { id: "1", name: "ABC" }

var item = await persistence.deleteById("123", "1");
                ...
Inheritance

Constructors

IdentifiableFilePersistence([JsonFilePersister<T>? persister])
Creates a new instance of the persistence.

Properties

hashCode int
The hash code for this object.
no setterinherited
items List<T>
getter/setter pairinherited
loader ILoader<T>?
getter/setter pairinherited
logger ↔ CompositeLogger
getter/setter pairinherited
maxPageSize int
getter/setter pairinherited
opened bool
getter/setter pairinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
saver ISaver<T>?
getter/setter pairinherited

Methods

clear(String? correlationId) Future
Clears component state.
inherited
close(String? correlationId) Future
Closes component and frees used resources.
inherited
configure(ConfigParams config) → void
Configures component by passing configuration parameters.
override
create(String? correlationId, T? item) Future<T?>
Creates a data item.
inherited
deleteByFilterEx(String? correlationId, Function filter) Future
Deletes data items that match to a given filter.
inherited
deleteById(String? correlationId, K? id) Future<T?>
Deleted a data item by it's unique id.
inherited
deleteByIds(String? correlationId, List<K> ids) Future
Deletes multiple data items by their unique ids.
inherited
getCountByFilterEx(String? correlationId, Function? filter) Future<int>
Gets a count of data items retrieved by a given filter.
inherited
getListByFilterEx(String? correlationId, Function? filter, Function? sort, dynamic select) Future<List<T>>
Gets a list of data items retrieved by a given filter and sorted according to sort parameters.
inherited
getListByIds(String? correlationId, List<K> ids) Future<List<T>>
Gets a list of data items retrieved by given unique ids.
inherited
getOneById(String? correlationId, K id) Future<T?>
Gets a data item by its unique id.
inherited
getOneRandom(String? correlationId, Function? filter) Future<T?>
Gets a random item from items that match to a given filter.
inherited
getPageByFilterEx(String? correlationId, Function? filter, PagingParams? paging, Function? sort, [dynamic select]) Future<DataPage<T>>
Gets a page of data items retrieved by a given filter and sorted according to sort parameters.
inherited
isOpen() bool
Checks if the component is opened.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
open(String? correlationId) Future
Opens the component.
inherited
save(String? correlationId) Future
Saves items to external data source using configured saver component.
inherited
set(String? correlationId, T? item) Future<T?>
Sets a data item. If the data item exists it updates it, otherwise it create a new data item.
inherited
setReferences(IReferences references) → void
Sets references to dependent components.
inherited
toString() String
A string representation of this object.
inherited
update(String? correlationId, T? item) Future<T?>
Updates a data item.
inherited
updatePartially(String? correlationId, K id, AnyValueMap data) Future<T?>
Updates only few selected fields in a data item.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited