class MyDataController implements IMyDataController, ICommandable {
final List<MyData> _entities = List.empty();
CommandSet? _commandSet;
@override
Future<DataPage<MyData>> GetPageByFilterAsync(
String? correlationId, FilterParams filter, PagingParams paging) async {
filter = filter ?? FilterParams();
var key = filter.getAsNullableString('key');
paging = paging ?? PagingParams();
var skip = paging.getSkip(0);
var take = paging.getTake(100);
var result = <MyData>[];
for (var i = 0; i < _entities.length; i++) {
var entity = _entities[i];
if (key != null && key != entity.key) {
continue;
}
skip--;
if (skip >= 0) continue;
take--;
if (take < 0) break;
result.add(entity);
}
return DataPage<MyData>(result, 0);
}
@override
CommandSet getCommandSet() {
_commandSet ??= MyDataCommandSet(this);
return _commandSet!;
}
@override
Future<MyData> CreateAsync(String? correlationId, MyData entity) async {
if (entity.id == null || entity.id == '') {
entity.id = IdGenerator.nextLong();
}
_entities.add(entity);
return entity;
}
@override
Future<MyData?> DeleteByIdAsync(String? correlationId, String id) async {
for (var index = 0; index < _entities.length; index++) {
var entity = _entities[index];
if (entity.id == id) {
_entities.removeAt(index);
return entity;
}
}
return null;
}
@override
Future<MyData?> GetOneByIdAsync(String? correlationId, String id) async {
for (var i = 0; i < _entities.length; i++) {
var entity = _entities[i];
if (id == entity.id) return entity;
}
return null;
}
@override
Future<MyData?> UpdateAsync(String? correlationId, MyData newEntity) async {
for (var index = 0; index < _entities.length; index++) {
var entity = _entities[index];
if (entity.id == newEntity.id) {
_entities[index] = newEntity;
return newEntity;
}
}
return null;
}
}