import 'package:pip_services3_mongodb/pip_services3_mongodb.dart';
class MyObject {
String key;
String name;
MyObject.from(this.key, this.name);
Map<String, dynamic> toJson() {
return <String, dynamic>{'key': key, 'name': name};
}
void fromJson(Map<String, dynamic> json) {
key = json['key'];
name = json['name'];
}
MyObject clone() {
return MyObject.from(key, name);
}
}
class MyMongoDbPersistence extends MongoDbPersistence<MyObject> {
MyMongoDbPersistence() : super('mycollection');
Future<MyObject?> getByName(String correlationId, String name) async {
var criteria = {name: name};
var res = await super.getListByFilterEx(correlationId, criteria, null);
return res.isNotEmpty ? res[0] : null;
}
Future<MyObject?> createDefault(String correlationId, String name) async {
name = name ?? 'unknown';
var key = name.toLowerCase().replaceAll(' #\$%^&', '_');
var item = MyObject.from(key, name);
var jsonMap = convertFromPublic(item, createUid: false);
var result = await collection!.insertOne(jsonMap!);
logger.trace(correlationId, 'Created in %s with id = %s',
[collectionName, result.id]);
return convertToPublic(jsonMap);
}
Future<void> deleteByName(String correlationId, String name) async {
var criteria = {name: name};
await super.deleteByFilterEx(correlationId, criteria);
}
}