diff --git a/packages/mongo/CHANGELOG.md b/packages/mongo/CHANGELOG.md index 334449ee..1d24dc2b 100644 --- a/packages/mongo/CHANGELOG.md +++ b/packages/mongo/CHANGELOG.md @@ -1,5 +1,11 @@ # Change Log +## 8.2.0 + +* Require Dart >= 3.3 +* Upgraded `mongo_dart` to 0.10.2 +* Fixed deprecated methods + ## 8.1.1 * Updated repository link diff --git a/packages/mongo/lib/mongo_service.dart b/packages/mongo/lib/mongo_service.dart index 846e2cc2..dc3cd784 100644 --- a/packages/mongo/lib/mongo_service.dart +++ b/packages/mongo/lib/mongo_service.dart @@ -73,7 +73,7 @@ class MongoService extends Service> { for (var key in doc.keys) { var value = doc[key]; if (value is ObjectId) { - result[key] = value.toHexString(); + result[key] = value.oid; } else if (value is! RequestContext && value is! ResponseContext) { result[key] = value; } @@ -133,7 +133,7 @@ class MongoService extends Service> { if (found == null) { throw AngelHttpException.notFound( - message: 'No record found for ID ${localId.toHexString()}'); + message: 'No record found for ID ${localId.oid}'); } return _jsonify(found, params); @@ -171,7 +171,7 @@ class MongoService extends Service> { update: result, returnNew: true) as FutureOr>); result = _jsonify(modified, params); - result['id'] = _makeId(id).toHexString(); + result['id'] = _makeId(id).oid; return result; } catch (e, st) { //printDebug(e, st, 'MODIFY'); @@ -199,7 +199,7 @@ class MongoService extends Service> { returnNew: true, upsert: true) as FutureOr>); result = _jsonify(updated, params); - result['id'] = _makeId(id).toHexString(); + result['id'] = _makeId(id).oid; return result; } catch (e, st) { //printDebug(e, st, 'UPDATE'); diff --git a/packages/mongo/pubspec.yaml b/packages/mongo/pubspec.yaml index 8d9e7b21..1910ff45 100644 --- a/packages/mongo/pubspec.yaml +++ b/packages/mongo/pubspec.yaml @@ -1,5 +1,5 @@ name: angel3_mongo -version: 8.1.1 +version: 8.2.0 description: MongoDB-enabled services for the Angel3 framework. Well-tested. homepage: https://angel3-framework.web.app/ repository: https://github.com/dart-backend/angel/tree/master/packages/mongo @@ -9,7 +9,7 @@ dependencies: angel3_framework: ^8.0.0 belatuk_json_serializer: ^7.1.0 belatuk_merge_map: ^5.1.0 - mongo_dart: ^0.9.0 + mongo_dart: ^0.10.2 dev_dependencies: http: ^1.0.0 test: ^1.24.0 diff --git a/packages/mongo/test/generic_test.dart b/packages/mongo/test/generic_test.dart index 7b0005b5..be8c11fb 100644 --- a/packages/mongo/test/generic_test.dart +++ b/packages/mongo/test/generic_test.dart @@ -24,11 +24,12 @@ void main() { group('Generic Tests', () { Angel app; late AngelHttp transport; - http.Client? client; + late http.Client client; var db = Db('mongodb://localhost:27017/angel_mongo'); late DbCollection testData; String? url; - HookedService, MongoService>? greetingService; + late HookedService, MongoService> + greetingService; setUp(() async { app = Angel(); @@ -41,7 +42,7 @@ void main() { var service = MongoService(testData); greetingService = HookedService(service); - wireHooked(greetingService!); + wireHooked(greetingService); app.use('/api', greetingService as Service); @@ -54,31 +55,28 @@ void main() { await testData.remove({}); await db.close(); await transport.close(); - client = null; - url = null; - greetingService = null; }); test('query fields mapped to filters', () async { - await greetingService!.create({'foo': 'bar'}); + await greetingService.create({'foo': 'bar'}); expect( - await greetingService!.index({ + await greetingService.index({ 'query': {'foo': 'not bar'} }), isEmpty, ); expect( - await greetingService!.index(), + await greetingService.index(), isNotEmpty, ); }); test('insert items', () async { - var response = await client!.post(Uri.parse('$url/api'), + var response = await client.post(Uri.parse('$url/api'), body: god.serialize(testGreeting), headers: headers); expect(response.statusCode, isIn([200, 201])); - response = await client!.get(Uri.parse('$url/api')); + response = await client.get(Uri.parse('$url/api')); expect(response.statusCode, isIn([200, 201])); var users = god.deserialize(response.body, outputType: [].runtimeType) as List; @@ -86,12 +84,12 @@ void main() { }); test('read item', () async { - var response = await client!.post(Uri.parse('$url/api'), + var response = await client.post(Uri.parse('$url/api'), body: god.serialize(testGreeting), headers: headers); expect(response.statusCode, isIn([200, 201])); var created = god.deserialize(response.body) as Map; - response = await client!.get(Uri.parse("$url/api/${created['id']}")); + response = await client.get(Uri.parse("$url/api/${created['id']}")); expect(response.statusCode, isIn([200, 201])); var read = god.deserialize(response.body) as Map; expect(read['id'], equals(created['id'])); @@ -100,37 +98,37 @@ void main() { }); test('findOne', () async { - var response = await client!.post(Uri.parse('$url/api'), + var response = await client.post(Uri.parse('$url/api'), body: god.serialize(testGreeting), headers: headers); expect(response.statusCode, isIn([200, 201])); var created = god.deserialize(response.body) as Map; var id = ObjectId.fromHexString(created['id'] as String); - var read = await greetingService!.findOne({'query': where.id(id)}); + var read = await greetingService.findOne({'query': where.id(id)}); expect(read['id'], equals(created['id'])); expect(read['to'], equals('world')); //expect(read['createdAt'], isNot(null)); }); test('readMany', () async { - var response = await client!.post(Uri.parse('$url/api'), + var response = await client.post(Uri.parse('$url/api'), body: god.serialize(testGreeting), headers: headers); expect(response.statusCode, isIn([200, 201])); var created = god.deserialize(response.body) as Map; var id = ObjectId.fromHexString(created['id'] as String); - var read = await greetingService!.readMany([id.toHexString()]); + var read = await greetingService.readMany([id.oid]); expect(read, [created]); //expect(read['createdAt'], isNot(null)); }); test('modify item', () async { - var response = await client!.post(Uri.parse('$url/api'), + var response = await client.post(Uri.parse('$url/api'), body: god.serialize(testGreeting), headers: headers); expect(response.statusCode, isIn([200, 201])); var created = god.deserialize(response.body) as Map; - response = await client!.patch(Uri.parse("$url/api/${created['id']}"), + response = await client.patch(Uri.parse("$url/api/${created['id']}"), body: god.serialize({'to': 'Mom'}), headers: headers); var modified = god.deserialize(response.body) as Map; expect(response.statusCode, isIn([200, 201])); @@ -140,12 +138,12 @@ void main() { }); test('update item', () async { - var response = await client!.post(Uri.parse('$url/api'), + var response = await client.post(Uri.parse('$url/api'), body: god.serialize(testGreeting), headers: headers); expect(response.statusCode, isIn([200, 201])); var created = god.deserialize(response.body) as Map; - response = await client!.post(Uri.parse("$url/api/${created['id']}"), + response = await client.post(Uri.parse("$url/api/${created['id']}"), body: god.serialize({'to': 'Updated'}), headers: headers); var modified = god.deserialize(response.body) as Map; expect(response.statusCode, isIn([200, 201])); @@ -155,28 +153,28 @@ void main() { }); test('remove item', () async { - var response = await client!.post(Uri.parse('$url/api'), + var response = await client.post(Uri.parse('$url/api'), body: god.serialize(testGreeting), headers: headers); var created = god.deserialize(response.body) as Map; - var lastCount = (await greetingService!.index()).length; + var lastCount = (await greetingService.index()).length; - await client!.delete(Uri.parse("$url/api/${created['id']}")); - expect((await greetingService!.index()).length, equals(lastCount - 1)); + await client.delete(Uri.parse("$url/api/${created['id']}")); + expect((await greetingService.index()).length, equals(lastCount - 1)); }); test('cannot remove all unless explicitly set', () async { - var response = await client!.delete(Uri.parse('$url/api/null')); + var response = await client.delete(Uri.parse('$url/api/null')); expect(response.statusCode, 403); }); test('\$sort and query parameters', () async { // Search by where.eq - Map world = await greetingService!.create({'to': 'world'}); - await greetingService!.create({'to': 'Mom'}); - await greetingService!.create({'to': 'Updated'}); + Map world = await greetingService.create({'to': 'world'}); + await greetingService.create({'to': 'Mom'}); + await greetingService.create({'to': 'Updated'}); - var response = await client!.get(Uri.parse('$url/api?to=world')); + var response = await client.get(Uri.parse('$url/api?to=world')); print(response.body); var queried = god.deserialize(response.body, outputType: [].runtimeType) as List; @@ -193,7 +191,7 @@ void main() { expect(queried[1]["id"], equals(Mom["id"])); expect(queried[2]["id"], equals(world["id"]));*/ - queried = await greetingService!.index({ + queried = await greetingService.index({ '\$query': { '_id': where.id(ObjectId.fromHexString(world['id'] as String)) }