See: IdentifiableMemoryPersistence
import 'package:pip_services3_commons/pip_services3_commons.dart';
import 'package:pip_services3_data/pip_services3_data.dart';
class MyMemoryPersistence extends IdentifiableMemoryPersistence<Dummy, String> {
MyMemoryPersistence() : super();
bool Function(Dummy item) _composeFilter(FilterParams? filter) {
filter = filter ?? FilterParams();
var id = filter.getAsNullableString('id');
var tempIds = filter.getAsNullableString('ids');
var ids = tempIds != null ? tempIds.split(',') : null;
var key = filter.getAsNullableString('key');
return (item) {
if (id != null && item.id != id) {
return false;
}
if (ids != null && !ids.contains(item.id)) {
return false;
}
if (key != null && item.key != key) {
return false;
}
return true;
};
}
Future<DataPage<Dummy>> getPageByFilter(
String? correlationId, FilterParams? filter, PagingParams? paging) async {
return await super.getPageByFilterEx(
correlationId, _composeFilter(filter), paging, null, null);
}
@override
Future<Dummy?> getOneById(String? correlationId, String key) async {
for (var item in items) {
if (item.key == key) {
logger.trace(correlationId, 'Found object by key=' + key);
return item;
}
}
logger.trace(correlationId, 'Cannot find by key=' + key);
}
}
...
var persistence = MyMemoryPersistence();