From 6224d4f911ef15215caf6f6b82097b8e87397a9c Mon Sep 17 00:00:00 2001 From: fulleni Date: Tue, 23 Sep 2025 19:42:16 +0100 Subject: [PATCH 1/6] chore: remove code coverage data - Deleted lcov.info file to reduce repository size and potential security concerns - This change will affect code coverage reporting, which will need to be regenerated --- coverage/lcov.info | 200 --------------------------------------------- 1 file changed, 200 deletions(-) delete mode 100644 coverage/lcov.info diff --git a/coverage/lcov.info b/coverage/lcov.info deleted file mode 100644 index 3371505..0000000 --- a/coverage/lcov.info +++ /dev/null @@ -1,200 +0,0 @@ -SF:lib/src/mongo_db_connection_manager.dart -DA:15,0 -DA:16,0 -DA:21,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:35,0 -DA:36,0 -DA:37,0 -LF:9 -LH:0 -end_of_record -SF:lib/src/data_mongodb.dart -DA:16,1 -DA:26,2 -DA:36,5 -DA:42,1 -DA:46,1 -DA:47,3 -DA:50,2 -DA:57,1 -DA:60,3 -DA:67,1 -DA:71,1 -DA:74,1 -DA:80,1 -DA:83,3 -DA:95,1 -DA:96,1 -DA:98,1 -DA:99,2 -DA:100,5 -DA:105,1 -DA:106,1 -DA:109,3 -DA:118,1 -DA:123,1 -DA:124,3 -DA:127,1 -DA:129,3 -DA:131,3 -DA:135,1 -DA:136,2 -DA:138,3 -DA:139,1 -DA:140,1 -DA:141,1 -DA:143,1 -DA:144,2 -DA:145,1 -DA:146,2 -DA:149,2 -DA:150,1 -DA:152,1 -DA:156,1 -DA:157,3 -DA:160,1 -DA:165,4 -DA:167,1 -DA:169,1 -DA:172,2 -DA:174,2 -DA:175,4 -DA:176,1 -DA:177,2 -DA:181,2 -DA:182,1 -DA:184,1 -DA:185,2 -DA:186,1 -DA:189,1 -DA:190,2 -DA:191,2 -DA:195,1 -DA:197,2 -DA:198,2 -DA:201,1 -DA:202,2 -DA:205,1 -DA:206,1 -DA:209,1 -DA:212,2 -DA:214,2 -DA:215,2 -DA:216,2 -DA:218,1 -DA:219,2 -DA:223,1 -DA:225,1 -DA:226,2 -DA:227,2 -DA:231,1 -DA:236,4 -DA:239,1 -DA:240,2 -DA:243,1 -DA:244,1 -DA:248,1 -DA:251,2 -DA:254,3 -DA:255,1 -DA:258,1 -DA:259,2 -DA:263,1 -DA:264,1 -DA:266,1 -DA:267,2 -DA:268,1 -DA:271,1 -DA:273,1 -DA:274,2 -DA:275,2 -DA:279,1 -DA:286,3 -DA:287,1 -DA:291,1 -DA:292,1 -DA:293,1 -DA:295,1 -DA:296,2 -DA:300,1 -DA:301,1 -DA:304,1 -DA:306,1 -DA:308,2 -DA:310,2 -DA:312,3 -DA:315,1 -DA:316,3 -DA:319,1 -DA:325,1 -DA:327,1 -DA:328,2 -DA:329,1 -DA:332,1 -DA:334,1 -DA:335,2 -DA:336,2 -DA:340,1 -DA:346,2 -DA:347,2 -DA:350,1 -DA:351,2 -DA:354,1 -DA:355,1 -DA:358,1 -DA:361,1 -DA:363,1 -DA:366,2 -DA:368,2 -DA:369,3 -DA:370,1 -DA:373,1 -DA:374,2 -DA:379,1 -DA:381,1 -DA:382,2 -DA:383,1 -DA:386,1 -DA:388,1 -DA:389,2 -DA:390,2 -DA:394,1 -DA:399,2 -DA:400,2 -DA:403,1 -DA:404,2 -DA:406,1 -DA:408,1 -DA:409,2 -DA:410,1 -DA:413,1 -DA:414,2 -DA:415,2 -DA:419,1 -DA:424,2 -DA:425,2 -DA:429,1 -DA:435,2 -DA:436,1 -DA:440,1 -DA:441,1 -DA:442,1 -DA:444,1 -DA:446,1 -DA:447,2 -DA:448,1 -DA:455,1 -DA:456,2 -DA:458,2 -DA:459,1 -DA:461,2 -DA:464,2 -DA:465,1 -DA:466,2 -DA:467,2 -LF:183 -LH:183 -end_of_record From 7eb775456ffee4c5166c85ec5a0b91f7c37e3f11 Mon Sep 17 00:00:00 2001 From: fulleni Date: Tue, 23 Sep 2025 19:42:22 +0100 Subject: [PATCH 2/6] chore(.gitignore): update .gitignore file - Remove outdated comments - Remove pubspec.lock from ignored files - Add coverage/ to ignored files --- .gitignore | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 526da15..171d7ac 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,4 @@ -# See https://www.dartlang.org/guides/libraries/private-files - -# Files and directories created by pub .dart_tool/ .packages build/ -pubspec.lock \ No newline at end of file +coverage/ \ No newline at end of file From eebcf1e5ae78086710fb7bea754178a724851807 Mon Sep 17 00:00:00 2001 From: fulleni Date: Tue, 23 Sep 2025 19:43:59 +0100 Subject: [PATCH 3/6] chore(deps): update dependencies and add version control - Update dependencies for core and data_client packages - Add specific git references for core and data_client packages - Update other dependencies including logging, mongo_dart, and uuid - Add very_good_analysis as a dev dependency --- pubspec.lock | 623 +++++++++++++++++++++++++++++++++++++++++++++++++++ pubspec.yaml | 2 + 2 files changed, 625 insertions(+) create mode 100644 pubspec.lock diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 0000000..d1e039c --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,623 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: dd3d2ad434b9510001d089e8de7556d50c834481b9abc2891a0184a8493a19dc + url: "https://pub.dev" + source: hosted + version: "89.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: c22b6e7726d1f9e5db58c7251606076a71ca0dbcf76116675edfadbec0c9e875 + url: "https://pub.dev" + source: hosted + version: "8.2.0" + archive: + dependency: transitive + description: + name: archive + sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd" + url: "https://pub.dev" + source: hosted + version: "4.0.7" + args: + dependency: transitive + description: + name: args + sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 + url: "https://pub.dev" + source: hosted + version: "2.7.0" + async: + dependency: transitive + description: + name: async + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" + url: "https://pub.dev" + source: hosted + version: "2.13.0" + basic_utils: + dependency: transitive + description: + name: basic_utils + sha256: "548047bef0b3b697be19fa62f46de54d99c9019a69fb7db92c69e19d87f633c7" + url: "https://pub.dev" + source: hosted + version: "5.8.2" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + bson: + dependency: transitive + description: + name: bson + sha256: f8c80be7a62a88f4add7c48cc83567c36a77532de107224df8328ef71f125045 + url: "https://pub.dev" + source: hosted + version: "5.0.7" + buffer: + dependency: transitive + description: + name: buffer + sha256: "389da2ec2c16283c8787e0adaede82b1842102f8c8aae2f49003a766c5c6b3d1" + url: "https://pub.dev" + source: hosted + version: "1.2.3" + cli_config: + dependency: transitive + description: + name: cli_config + sha256: ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec + url: "https://pub.dev" + source: hosted + version: "0.2.0" + clock: + dependency: transitive + description: + name: clock + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" + source: hosted + version: "1.1.2" + collection: + dependency: transitive + description: + name: collection + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" + source: hosted + version: "1.19.1" + convert: + dependency: transitive + description: + name: convert + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 + url: "https://pub.dev" + source: hosted + version: "3.1.2" + core: + dependency: "direct main" + description: + path: "." + ref: "828b984517edec069266579c624c7af9fbe0e2ac" + resolved-ref: "828b984517edec069266579c624c7af9fbe0e2ac" + url: "https://github.com/flutter-news-app-full-source-code/core.git" + source: git + version: "0.0.0" + coverage: + dependency: transitive + description: + name: coverage + sha256: "5da775aa218eaf2151c721b16c01c7676fbfdd99cebba2bf64e8b807a28ff94d" + url: "https://pub.dev" + source: hosted + version: "1.15.0" + crypto: + dependency: transitive + description: + name: crypto + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" + url: "https://pub.dev" + source: hosted + version: "3.0.6" + data_client: + dependency: "direct main" + description: + path: "." + ref: "960a00882045ee252274d9d57bfca606c1fe5d64" + resolved-ref: "960a00882045ee252274d9d57bfca606c1fe5d64" + url: "https://github.com/flutter-news-app-full-source-code/data-client.git" + source: git + version: "0.0.0" + decimal: + dependency: transitive + description: + name: decimal + sha256: fc706a5618b81e5b367b01dd62621def37abc096f2b46a9bd9068b64c1fa36d0 + url: "https://pub.dev" + source: hosted + version: "3.2.4" + equatable: + dependency: "direct dev" + description: + name: equatable + sha256: "567c64b3cb4cf82397aac55f4f0cbd3ca20d77c6c03bedbc4ceaddc08904aef7" + url: "https://pub.dev" + source: hosted + version: "2.0.7" + ffi: + dependency: transitive + description: + name: ffi + sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + file: + dependency: transitive + description: + name: file + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 + url: "https://pub.dev" + source: hosted + version: "7.0.1" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be + url: "https://pub.dev" + source: hosted + version: "1.1.1" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 + url: "https://pub.dev" + source: hosted + version: "4.0.0" + glob: + dependency: transitive + description: + name: glob + sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de + url: "https://pub.dev" + source: hosted + version: "2.1.3" + http: + dependency: transitive + description: + name: http + sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007 + url: "https://pub.dev" + source: hosted + version: "1.5.0" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 + url: "https://pub.dev" + source: hosted + version: "3.2.2" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" + url: "https://pub.dev" + source: hosted + version: "4.1.2" + intl: + dependency: transitive + description: + name: intl + sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" + url: "https://pub.dev" + source: hosted + version: "0.20.2" + io: + dependency: transitive + description: + name: io + sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b + url: "https://pub.dev" + source: hosted + version: "1.0.5" + js: + dependency: transitive + description: + name: js + sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc" + url: "https://pub.dev" + source: hosted + version: "0.7.2" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" + url: "https://pub.dev" + source: hosted + version: "4.9.0" + logging: + dependency: "direct main" + description: + name: logging + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 + url: "https://pub.dev" + source: hosted + version: "1.3.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + url: "https://pub.dev" + source: hosted + version: "0.12.17" + meta: + dependency: transitive + description: + name: meta + sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" + url: "https://pub.dev" + source: hosted + version: "1.17.0" + mime: + dependency: transitive + description: + name: mime + sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + mocktail: + dependency: "direct dev" + description: + name: mocktail + sha256: "890df3f9688106f25755f26b1c60589a92b3ab91a22b8b224947ad041bf172d8" + url: "https://pub.dev" + source: hosted + version: "1.0.4" + mongo_dart: + dependency: "direct main" + description: + name: mongo_dart + sha256: "43b62b43c6449a0159bf138fba27653cb35acd92d3587ad26d1ec068cd645559" + url: "https://pub.dev" + source: hosted + version: "0.10.5" + mongo_dart_query: + dependency: transitive + description: + name: mongo_dart_query + sha256: "7a0f3981c3d1df467040e5654696cb0bfde6ec6db86ba313118fb3e873cee657" + url: "https://pub.dev" + source: hosted + version: "5.0.2" + node_preamble: + dependency: transitive + description: + name: node_preamble + sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + package_config: + dependency: transitive + description: + name: package_config + sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc + url: "https://pub.dev" + source: hosted + version: "2.2.0" + packages_extensions: + dependency: transitive + description: + name: packages_extensions + sha256: "1fb328695a9828c80d275ce1650a2bb5947690070de082dfa1dfac7429378daf" + url: "https://pub.dev" + source: hosted + version: "0.1.1" + path: + dependency: transitive + description: + name: path + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + pointycastle: + dependency: transitive + description: + name: pointycastle + sha256: "92aa3841d083cc4b0f4709b5c74fd6409a3e6ba833ffc7dc6a8fee096366acf5" + url: "https://pub.dev" + source: hosted + version: "4.0.0" + pool: + dependency: transitive + description: + name: pool + sha256: "978783255c543aa3586a1b3c21f6e9d720eb315376a915872c61ef8b5c20177d" + url: "https://pub.dev" + source: hosted + version: "1.5.2" + posix: + dependency: transitive + description: + name: posix + sha256: "6323a5b0fa688b6a010df4905a56b00181479e6d10534cecfecede2aa55add61" + url: "https://pub.dev" + source: hosted + version: "6.0.3" + power_extensions: + dependency: transitive + description: + name: power_extensions + sha256: ad0e8b2420090d996fe8b7fd32cdf02b9b924b6d4fc0fb0b559ff6aa5e24d5b0 + url: "https://pub.dev" + source: hosted + version: "0.2.3" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" + url: "https://pub.dev" + source: hosted + version: "2.2.0" + rational: + dependency: transitive + description: + name: rational + sha256: cb808fb6f1a839e6fc5f7d8cb3b0a10e1db48b3be102de73938c627f0b636336 + url: "https://pub.dev" + source: hosted + version: "2.2.3" + sasl_scram: + dependency: transitive + description: + name: sasl_scram + sha256: a47207a436eb650f8fdcf54a2e2587b850dc3caef9973ce01f332b07a6fc9cb9 + url: "https://pub.dev" + source: hosted + version: "0.1.1" + saslprep: + dependency: transitive + description: + name: saslprep + sha256: "3d421d10be9513bf4459c17c5e70e7b8bc718c9fc5ad4ba5eb4f5fd27396f740" + url: "https://pub.dev" + source: hosted + version: "1.0.3" + shelf: + dependency: transitive + description: + name: shelf + sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 + url: "https://pub.dev" + source: hosted + version: "1.4.2" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + shelf_static: + dependency: transitive + description: + name: shelf_static + sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3 + url: "https://pub.dev" + source: hosted + version: "1.1.3" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" + url: "https://pub.dev" + source: hosted + version: "3.0.0" + source_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b + url: "https://pub.dev" + source: hosted + version: "2.1.2" + source_maps: + dependency: transitive + description: + name: source_maps + sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812" + url: "https://pub.dev" + source: hosted + version: "0.10.13" + source_span: + dependency: transitive + description: + name: source_span + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" + url: "https://pub.dev" + source: hosted + version: "1.10.1" + sprintf: + dependency: transitive + description: + name: sprintf + sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" + url: "https://pub.dev" + source: hosted + version: "7.0.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + url: "https://pub.dev" + source: hosted + version: "1.12.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + url: "https://pub.dev" + source: hosted + version: "1.4.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" + source: hosted + version: "1.2.2" + test: + dependency: "direct dev" + description: + name: test + sha256: "75906bf273541b676716d1ca7627a17e4c4070a3a16272b7a3dc7da3b9f3f6b7" + url: "https://pub.dev" + source: hosted + version: "1.26.3" + test_api: + dependency: transitive + description: + name: test_api + sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55 + url: "https://pub.dev" + source: hosted + version: "0.7.7" + test_core: + dependency: transitive + description: + name: test_core + sha256: "0cc24b5ff94b38d2ae73e1eb43cc302b77964fbf67abad1e296025b78deb53d0" + url: "https://pub.dev" + source: hosted + version: "0.6.12" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + unorm_dart: + dependency: transitive + description: + name: unorm_dart + sha256: "8e3870a1caa60bde8352f9597dd3535d8068613269444f8e35ea8925ec84c1f5" + url: "https://pub.dev" + source: hosted + version: "0.3.1+1" + uuid: + dependency: "direct main" + description: + name: uuid + sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff + url: "https://pub.dev" + source: hosted + version: "4.5.1" + very_good_analysis: + dependency: "direct dev" + description: + name: very_good_analysis + sha256: e479fbc0941009262343db308133e121bf8660c2c81d48dd8e952df7b7e1e382 + url: "https://pub.dev" + source: hosted + version: "9.0.0" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60" + url: "https://pub.dev" + source: hosted + version: "15.0.2" + vy_string_utils: + dependency: transitive + description: + name: vy_string_utils + sha256: "03f4f2ebba283b32623459fa9c47d5c70e085253c7891f5ef7d4fd539c41c078" + url: "https://pub.dev" + source: hosted + version: "0.4.6" + watcher: + dependency: transitive + description: + name: watcher + sha256: "5bf046f41320ac97a469d506261797f35254fa61c641741ef32dacda98b7d39c" + url: "https://pub.dev" + source: hosted + version: "1.1.3" + web: + dependency: transitive + description: + name: web + sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" + url: "https://pub.dev" + source: hosted + version: "1.1.1" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 + url: "https://pub.dev" + source: hosted + version: "3.0.3" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572" + url: "https://pub.dev" + source: hosted + version: "1.2.1" + yaml: + dependency: transitive + description: + name: yaml + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce + url: "https://pub.dev" + source: hosted + version: "3.1.3" +sdks: + dart: ">=3.9.0 <4.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 5a10d27..6082417 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -10,9 +10,11 @@ dependencies: core: git: url: https://github.com/flutter-news-app-full-source-code/core.git + ref: 828b984517edec069266579c624c7af9fbe0e2ac data_client: git: url: https://github.com/flutter-news-app-full-source-code/data-client.git + ref: 960a00882045ee252274d9d57bfca606c1fe5d64 logging: ^1.3.0 mongo_dart: ^0.10.5 uuid: ^4.5.1 From 0008ce4f8508cb9fc24b7789e826aceaea4e683e Mon Sep 17 00:00:00 2001 From: fulleni Date: Tue, 23 Sep 2025 19:46:47 +0100 Subject: [PATCH 4/6] docs(README): redesign and simplify documentation - Restructure README content for better readability and focus - Add visual elements and badges for quick reference - Enhance feature description with detailed points - Refactor licensing section for clarity --- README.md | 176 +++++++++--------------------------------------------- 1 file changed, 29 insertions(+), 147 deletions(-) diff --git a/README.md b/README.md index 158db44..2a0055d 100644 --- a/README.md +++ b/README.md @@ -1,160 +1,42 @@ -# data_mongodb +
+ Flutter News App Toolkit Logo +

Data MongoDB

+

A production-ready MongoDB implementation of the `DataClient` interface for the Flutter News App Toolkit.

+
-![coverage: xx%](https://img.shields.io/badge/coverage-91-green) -[![style: very good analysis](https://img.shields.io/badge/style-very_good_analysis-B22C89.svg)](https://pub.dev/packages/very_good_analysis) -[![License: PolyForm Free Trial](https://img.shields.io/badge/License-PolyForm%20Free%20Trial-blue)](https://polyformproject.org/licenses/free-trial/1.0.0) +

+ coverage + Live Docs: View + Main Project: Browse +

-A production-ready MongoDB implementation of the `DataClient` interface, designed to connect Dart and Flutter applications to a MongoDB backend. This package is part of the [**Flutter News App - Full Source Code Toolkit**](https://github.com/flutter-news-app-full-source-code). +This `data_mongodb` package provides a robust, concrete implementation of the `DataClient` interface within the [**Flutter News App Full Source Code Toolkit**](https://github.com/flutter-news-app-full-source-code). It acts as the bridge between your application's repositories and a MongoDB database, translating abstract data requests into native, efficient MongoDB queries. This package is designed for backend services (like a Dart Frog API) or applications that connect directly to MongoDB, ensuring consistent and scalable data persistence. -## Description +## ⭐ Feature Showcase: Powerful MongoDB Integration -`DataMongodb` provides a robust, concrete implementation of the `DataClient` interface using the `mongo_dart` package. It acts as the bridge between your application's repositories and a MongoDB database. +This package offers a comprehensive set of features for interacting with MongoDB. -It translates the abstract, high-level data requests from the `DataClient` interface—including rich filters, multi-field sorting, and cursor-based pagination—into native, efficient MongoDB queries. +
+🧱 Core Functionality -A key feature of this implementation is its **ID management strategy**. It ensures that the application layer remains the source of truth for a document's ID by mapping the model's `id` string to the database's `_id` field. This is crucial for correctly handling both global documents (like headlines) and user-owned documents (like settings), where the document's `_id` must match the user's ID. For a deeper explanation, see the documentation within the `DataMongodb` class. +### 🚀 `DataClient` Implementation +- **`DataMongodb` Class:** A production-ready MongoDB implementation of the `DataClient` interface, enabling type-safe interactions with various data models. +- **`MongoDbConnectionManager`:** Includes a robust connection manager for handling MongoDB connection lifecycle, ensuring reliable database access. -## Getting Started +### 🌐 Advanced Querying & Data Management +- **Native MongoDB Queries:** Translates `readAll` parameters (rich `filter`, multi-field `sort`, and cursor-based `pagination`) into efficient native MongoDB queries. +- **ID Management Strategy:** Faithfully maps the application-level `id` string to the database `_id` field, crucial for correctly handling both global documents (like headlines) and user-owned documents (like settings). +- **Support for Multiple Data Models:** Correctly handles various document types, including global entities and user-owned documents where the `_id` serves as a foreign key to the user. +- **Efficient Counting & Aggregation:** Implements `count` for efficient document counting and `aggregate` to execute powerful, server-side aggregation pipelines. +- **Partial Text Search:** Translates a `q` filter parameter into a case-insensitive (`$regex`) search across designated searchable fields. -This package is intended to be used as a dependency in backend services (like a Dart Frog API) or applications that connect directly to MongoDB. +### 🛡️ Standardized Error Handling +- **`HttpException` Propagation:** Throws standard exceptions from `package:core` for consistent error handling, ensuring predictable error management across the application layers. -To use this package, add `data_mongodb` and its peer dependencies to your `pubspec.yaml`. - -```yaml -dependencies: - # data_client defines the interface this package implements. - data_client: - git: - url: https://github.com/flutter-news-app-full-source-code/data-client.git - # ref: - # core is needed for models and exceptions. - core: - git: - url: https://github.com/flutter-news-app-full-source-code/core.git - # ref: - data_mongodb: - git: - url: https://github.com/flutter-news-app-full-source-code/data-mongodb.git - # ref: -``` - -Then run `dart pub get` or `flutter pub get`. - -## Features - -- Implements the `DataClient` interface from `package:data_client`. -- Includes `MongoDbConnectionManager` for robust connection lifecycle management. -- Translates `readAll` parameters (`filter`, `sort`, `pagination`) into native MongoDB queries. -- **Handles ID Management**: Faithfully maps the application-level `id` string to the database `_id`, preserving data integrity for all document types. -- **Supports Multiple Data Models**: Correctly handles both global documents (e.g., `Headline`) and user-owned documents (e.g., `UserAppSettings`) where the document `_id` serves as the foreign key to the user. -- Throws standard exceptions from `package:core` for consistent error handling. -- Implements `count` for efficient document counting. -- Implements `aggregate` to execute powerful, server-side aggregation pipelines. -- **Partial Text Search**: Translates a `q` filter parameter into a case-insensitive (`$regex`) across designated searchable fields. - -## Usage - -Here's a basic example of how to use `DataMongodb` with a simple `Product` model. - -```dart -import 'package:data_client/data_client.dart'; -import 'package:data_mongodb/data_mongodb.dart'; -import 'package:core/core.dart'; - -// 1. Define your model. -class Product { - Product({required this.id, required this.name, required this.price}); - final String id; - final String name; - final double price; - - // Your fromJson/toJson factories. - factory Product.fromJson(Map json) { - return Product( - id: json['id'] as String, - name: json['name'] as String, - price: json['price'] as double, - ); - } - Map toJson() => {'id': id, 'name': name, 'price': price}; -} - -void main() async { - // 2. Set up the connection manager. - final connectionManager = MongoDbConnectionManager(); - const connectionString = 'mongodb://localhost:27017/my_database'; - - try { - // 3. Initialize the database connection. - await connectionManager.init(connectionString); - - // 4. Instantiate the client for your model. - final client = DataMongodb( - connectionManager: connectionManager, - modelName: 'products', // The name of the MongoDB collection. - fromJson: Product.fromJson, - toJson: (product) => product.toJson(), - searchableFields: ['name'], // Designate 'name' for partial-text search. - ); - - // 5. Use the client to perform operations. - // Example: Forgiving search for products with "pro" in their name. - final searchResponse = await client.readAll( - filter: {'q': 'pro'}, - pagination: const PaginationOptions(limit: 5), - ); - print('\nFound ${searchResponse.data.items.length} products matching "pro":'); - for (final product in searchResponse.data.items) { - print('- ${product.name}'); - } - final filter = { - 'price': {r'$gte': 10.0} // Find products with price >= 10.0 - }; - final sort = [const SortOption('price', SortOrder.desc)]; - final pagination = const PaginationOptions(limit: 10); - - final response = await client.readAll( - filter: filter, - sort: sort, - pagination: pagination, - ); - - print('Found ${response.data.items.length} products.'); - for (final product in response.data.items) { - print('- ${product.name} (\$${product.price})'); - } - - // Example: Counting items - final countResponse = await client.count( - filter: {'price': {r'$lt': 15.0}}, - ); - print('Found ${countResponse.data} products cheaper than $15.'); - - // Example: Running an aggregation pipeline - final aggregateResponse = await client.aggregate( - pipeline: [ - { - r'$group': {'_id': null, 'averagePrice': {r'$avg': r'$price'}}, - }, - ], - ); - if (aggregateResponse.data.isNotEmpty) { - print( - 'Average product price: \$${aggregateResponse.data.first['averagePrice']}', - ); - } - } on HttpException catch (e) { - print('An error occurred: ${e.message}'); - } finally { - // 6. Always close the connection. - await connectionManager.close(); - } -} -``` +> **💡 Your Advantage:** You get a meticulously designed, production-quality MongoDB client that simplifies database interactions, ensures data integrity, provides robust error handling, and supports advanced querying capabilities. This package accelerates development by providing a solid foundation for data persistence. +
## 🔑 Licensing -This package is source-available and licensed under the [PolyForm Free Trial 1.0.0](LICENSE). Please review the terms before use. - -For commercial licensing options that grant the right to build and distribute unlimited applications, please visit the main [**Flutter News App - Full Source Code Toolkit**](https://github.com/flutter-news-app-full-source-code) organization. +This `data_mongodb` package is an integral part of the [**Flutter News App Full Source Code Toolkit**](https://github.com/flutter-news-app-full-source-code). For comprehensive details regarding licensing, including trial and commercial options for the entire toolkit, please refer to the main toolkit organization page. From 45993f27b5b325f8d124588dbf35dee0f9551255 Mon Sep 17 00:00:00 2001 From: fulleni Date: Tue, 23 Sep 2025 19:47:43 +0100 Subject: [PATCH 5/6] docs: update code coverage shield in README - Update coverage badge from 91% to 89% - Ensure README reflects current test coverage status --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2a0055d..b366f00 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@

- coverage + coverage Live Docs: View Main Project: Browse

From a1b9aa0cd79329551b255e1a351e5b1dd64f7d32 Mon Sep 17 00:00:00 2001 From: fulleni Date: Tue, 23 Sep 2025 19:47:53 +0100 Subject: [PATCH 6/6] docs(data_mongodb): add reference link for 'language' field conflict - Include a link to MongoDB community forum discussion about the 'language' field conflict - Improve documentation by providing a reference for the field renaming workaround --- lib/src/data_mongodb.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/data_mongodb.dart b/lib/src/data_mongodb.dart index 1019c30..03581f1 100644 --- a/lib/src/data_mongodb.dart +++ b/lib/src/data_mongodb.dart @@ -90,7 +90,7 @@ class DataMongodb implements DataClient { /// conflicts with a reserved keyword in MongoDB's `text` search options. /// To prevent this, it transparently renames any 'language' field to /// 'modelLanguage' before the document is written. - /// + /// /// https://www.mongodb.com/community/forums/t/just-to-point-out-do-not-name-a-field-language-if-you-are-planning-to-create-an-index/263793 Map _transformMapForDb(Map map) { if (map.containsKey('language')) {