import 'package:pip_services3_commons/pip_services3_commons.dart';
import 'package:pip_services3_postgres/pip_services3_postgres.dart';
class MyIdentifiableObject implements IIdentifiable<String> {
@override
String? id;
String key;
String name;
MyIdentifiableObject.from(this.id, this.key, this.name);
Map<String, dynamic> toJson() {
return <String, dynamic>{'id': id, 'key': key, 'name': name};
}
void fromJson(Map<String, dynamic> json) {
key = json['key'];
name = json['name'];
}
MyIdentifiableObject clone() {
return MyIdentifiableObject.from(id, key, name);
}
}
abstract class MyIdentifiablePersistence {
Future<DataPage<MyIdentifiableObject>> GetPageByFilter(
String? correlationId, FilterParams? filter, PagingParams? paging);
Future<MyIdentifiableObject?> create(
String? correlationId, MyIdentifiableObject? item);
Future<MyIdentifiableObject?> getOneById(String? correlationId, String id);
Future<MyIdentifiableObject?> deleteById(String? correlationId, String? id);
}
class MyIdentifiablePostgreSqlPersistence
extends IdentifiablePostgresPersistence<MyIdentifiableObject, String>
implements MyIdentifiablePersistence {
MyIdentifiablePostgreSqlPersistence() : super('mycollection', null);
String? composeFilter(FilterParams? filter) {
filter = filter ?? FilterParams();
var criteria = [];
var id = filter.getAsString('id');
if (id.isNotEmpty) {
criteria.add("id='" + id + "'");
}
var name = filter.getAsString('name');
if (name.isNotEmpty) {
criteria.add("name='" + name + "'");
}
return criteria.isNotEmpty ? criteria.join(' AND ') : null;
}
@override
Future<DataPage<MyIdentifiableObject>> GetPageByFilter(
String? correlationId, FilterParams? filter, PagingParams? paging) async {
return await super.getPageByFilter_(
correlationId, composeFilter(filter), paging, null, null);
}
}