import 'package:pip_services3_commons/pip_services3_commons.dart';
import 'package:pip_services3_mongodb/pip_services3_mongodb.dart';
class MyIdentifiableMongoDbPersistence
extends IdentifiableMongoDbPersistence<MyData, String> {
MyIdentifiableMongoDbPersistence() : super('mydata');
}
class MyData implements IStringIdentifiable, ICloneable {
@override
String? id;
String? key;
String? content;
MyData();
MyData.from(this.id, this.key, this.content);
Map<String, dynamic> toJson() {
return <String, dynamic>{'id': id, 'key': key, 'content': content};
}
void fromJson(Map<String, dynamic> json) {
id = json['id'];
key = json['key'];
content = json['content'];
}
@override
MyData clone() {
return MyData.from(id, key, content);
}
}
void printResult(String operationName, MyData res) {
print('==================== $operationName ====================');
print('MyData with id: ${res.id}');
print('MyData key: ${res.key}');
print('MyData content: ${res.content}');
}
void main(List<String> arguments) async {
var data1 = MyData.from('1', 'key 1', 'content 1');
var persistence = MyIdentifiableMongoDbPersistence();
var config = ConfigParams.fromTuples([
'connection.host', 'localhost',
'connection.port', 27017,
'connection.database', 'pipdatabase'
]);
persistence.configure(config);
await persistence.open(null);
await persistence.clear(null);
// CRUD
// 1 - Create
var result = await persistence.create(null, data1);
printResult('Create', result!);
// 2 - Retrieve
var item = await persistence.getOneById('123', '1');
printResult('Get by id', item!);
// 3 - Update
var update = await persistence.update(
null, MyData.from('1', 'key 1', 'new content 1'));
printResult('Update', update!);
// 4 - Delete
var deleted = await persistence.deleteById(null, '1');
printResult('Delete by id', deleted!);
await persistence.close(null);
await persistence.close(null);
}