From 333618dc881627f30cfc455a7973d6cf532a4c61 Mon Sep 17 00:00:00 2001 From: mathru Date: Fri, 19 May 2023 16:17:21 +0900 Subject: [PATCH] fix: Fixing definitions around mixin. --- packages/katana_model/example/pubspec.lock | 25 ++++---- .../lib/src/model_field_value.dart | 2 +- packages/katana_model/lib/src/model_ref.dart | 4 +- packages/katana_model/pubspec.lock | 47 ++++++++------- .../katana_model/test/runtime_model_test.dart | 58 +++++++++++++++++++ 5 files changed, 96 insertions(+), 40 deletions(-) diff --git a/packages/katana_model/example/pubspec.lock b/packages/katana_model/example/pubspec.lock index 7cce35bf8..e5365b493 100644 --- a/packages/katana_model/example/pubspec.lock +++ b/packages/katana_model/example/pubspec.lock @@ -85,10 +85,10 @@ packages: dependency: "direct dev" description: name: build_runner - sha256: "87e06c939450b9b94e3e1bb2d46e0e9780adbff5500d3969f2ba2de6bbb860cb" + sha256: "220ae4553e50d7c21a17c051afc7b183d28a24a420502e842f303f8e4e6edced" url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.4.4" build_runner_core: dependency: transitive description: @@ -337,27 +337,26 @@ packages: source: hosted version: "4.8.1" katana: - dependency: transitive + dependency: "direct overridden" description: - name: katana - sha256: "99e37bec02e32244b575b8459d7c5108297376e4f36d7da1a40ab22fb701e97d" - url: "https://pub.dev" - source: hosted - version: "1.0.14" + path: "../../katana" + relative: true + source: path + version: "2.0.1" katana_listenables_annotation: dependency: "direct overridden" description: path: "../../katana_listenables_annotation" relative: true source: path - version: "1.2.24" + version: "2.0.2" katana_model: dependency: "direct main" description: path: ".." relative: true source: path - version: "1.7.11" + version: "2.0.1" lints: dependency: transitive description: @@ -719,10 +718,10 @@ packages: dependency: transitive description: name: watcher - sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0" + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.1.0" web_socket_channel: dependency: transitive description: @@ -756,5 +755,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.0.0-417 <4.0.0" + dart: ">=3.0.0 <4.0.0" flutter: ">=3.3.0" diff --git a/packages/katana_model/lib/src/model_field_value.dart b/packages/katana_model/lib/src/model_field_value.dart index bec687784..263b67252 100644 --- a/packages/katana_model/lib/src/model_field_value.dart +++ b/packages/katana_model/lib/src/model_field_value.dart @@ -238,7 +238,7 @@ abstract class ModelFieldValue { /// /// [Map]として扱われますが、値の更新はサポートされていません。 /// 値を更新しようとすると[UnsupportedError]が出力されます。 -abstract class ModelFieldValueAsMapMixin +mixin ModelFieldValueAsMapMixin implements Map, ModelFieldValue { @override Iterable get keys { diff --git a/packages/katana_model/lib/src/model_ref.dart b/packages/katana_model/lib/src/model_ref.dart index 429ea2a68..f3d3ed4cd 100644 --- a/packages/katana_model/lib/src/model_ref.dart +++ b/packages/katana_model/lib/src/model_ref.dart @@ -242,7 +242,7 @@ class ModelRefFilter extends ModelFieldValueFilter { /// [DocumentBase]などにモデル間のリレーションであるということを定義するためのミックスイン。 /// /// リレーション先のドキュメントにミックスインしてください。 -abstract class ModelRefMixin +mixin ModelRefMixin implements ModelRefDocumentBase, ModelRefBase, DocumentBase { @override Map toJson() => { @@ -272,7 +272,7 @@ abstract class ModelRefDocumentBase /// [builder]を定義して関連するドキュメントとデータの格納を行ってください。 /// /// リレーション元のドキュメントにミックスインしてください。 -abstract class ModelRefLoaderMixin implements DocumentBase { +mixin ModelRefLoaderMixin implements DocumentBase { final _modelRefBuilderCache = {}; /// ModelRefBuilder], which implements the definition of the loading method. diff --git a/packages/katana_model/pubspec.lock b/packages/katana_model/pubspec.lock index 8e616911d..fd32b8a7d 100644 --- a/packages/katana_model/pubspec.lock +++ b/packages/katana_model/pubspec.lock @@ -85,10 +85,10 @@ packages: dependency: "direct dev" description: name: build_runner - sha256: "87e06c939450b9b94e3e1bb2d46e0e9780adbff5500d3969f2ba2de6bbb860cb" + sha256: "220ae4553e50d7c21a17c051afc7b183d28a24a420502e842f303f8e4e6edced" url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.4.4" build_runner_core: dependency: transitive description: @@ -239,10 +239,10 @@ packages: dependency: "direct dev" description: name: freezed - sha256: "73b58fe836dc05594451d8f740d97d5167886962d628b9f60a1fe945aa0a891f" + sha256: "2edb9ef971d0f803860ecd9084afd48c717d002141ad77b69be3e976bee7190e" url: "https://pub.dev" source: hosted - version: "2.3.3" + version: "2.3.4" freezed_annotation: dependency: "direct dev" description: @@ -343,18 +343,17 @@ packages: dependency: "direct dev" description: name: json_serializable - sha256: "43793352f90efa5d8b251893a63d767b2f7c833120e3cc02adad55eefec04dc7" + sha256: "61a60716544392a82726dd0fa1dd6f5f1fd32aec66422b6e229e7b90d52325c4" url: "https://pub.dev" source: hosted - version: "6.6.2" + version: "6.7.0" katana: dependency: "direct main" description: - name: katana - sha256: "99e37bec02e32244b575b8459d7c5108297376e4f36d7da1a40ab22fb701e97d" - url: "https://pub.dev" - source: hosted - version: "1.0.14" + path: "../katana" + relative: true + source: path + version: "2.0.1" lints: dependency: transitive description: @@ -375,10 +374,10 @@ packages: dependency: transitive description: name: matcher - sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.15" + version: "0.12.16" material_color_utilities: dependency: transitive description: @@ -644,10 +643,10 @@ packages: dependency: transitive description: name: source_gen - sha256: "378a173055cd1fcd2a36e94bf254786d6812688b5f53b6038a2fd180a5a5e210" + sha256: "373f96cf5a8744bc9816c1ff41cf5391bbdbe3d7a96fe98c622b6738a8a7bd33" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.2" source_helper: dependency: transitive description: @@ -732,26 +731,26 @@ packages: dependency: "direct dev" description: name: test - sha256: "4f92f103ef63b1bbac6f4bd1930624fca81b2574464482512c4f0896319be575" + sha256: "13b41f318e2a5751c3169137103b60c584297353d4b1761b66029bae6411fe46" url: "https://pub.dev" source: hosted - version: "1.24.2" + version: "1.24.3" test_api: dependency: transitive description: name: test_api - sha256: daadc9baabec998b062c9091525aa95786508b1c48e9c30f1f891b8bf6ff2e64 + sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" url: "https://pub.dev" source: hosted - version: "0.5.2" + version: "0.6.0" test_core: dependency: transitive description: name: test_core - sha256: "3642b184882f79e76ca57a9230fb971e494c3c1fd09c21ae3083ce891bcc0aa1" + sha256: "99806e9e6d95c7b059b7a0fc08f07fc53fabe54a829497f0d9676299f1e8637e" url: "https://pub.dev" source: hosted - version: "0.5.2" + version: "0.5.3" timing: dependency: transitive description: @@ -804,10 +803,10 @@ packages: dependency: transitive description: name: watcher - sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0" + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.1.0" web_socket_channel: dependency: transitive description: @@ -849,5 +848,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.0.0-417 <4.0.0" + dart: ">=3.0.0 <4.0.0" flutter: ">=3.3.0" diff --git a/packages/katana_model/test/runtime_model_test.dart b/packages/katana_model/test/runtime_model_test.dart index 3e5631d61..cd8a9c17d 100644 --- a/packages/katana_model/test/runtime_model_test.dart +++ b/packages/katana_model/test/runtime_model_test.dart @@ -8,6 +8,39 @@ import 'package:katana_model/katana_model.dart'; part 'runtime_model_test.freezed.dart'; part 'runtime_model_test.g.dart'; +// class RuntimeRecordDocumentModel +// extends DocumentBase<({String name, int? count, String text})> { +// RuntimeRecordDocumentModel(super.query); + +// @override +// ({int? count, String name, String text}) fromMap(DynamicMap map) { +// return ( +// count: map.get("count", 0), +// name: map.get("name", ""), +// text: map.get("text", ""), +// ); +// } + +// @override +// DynamicMap toMap(({int? count, String name, String text}) value) { +// return { +// "count": value.count, +// "name": value.name, +// "text": value.text, +// }; +// } +// } + +// class RuntimeRecordCollectionModel +// extends CollectionBase { +// RuntimeRecordCollectionModel(super.query); + +// @override +// RuntimeRecordDocumentModel create([String? id]) { +// return RuntimeRecordDocumentModel(modelQuery.create(id)); +// } +// } + class RuntimeMapDocumentModel extends DocumentBase { RuntimeMapDocumentModel(super.query); @@ -60,6 +93,31 @@ class RuntimeTestValueCollectionModel } void main() { + // test("runtimeRecordDocumentModel.saveAndLoadAndDelete", () async { + // final adapter = RuntimeModelAdapter(database: NoSqlDatabase()); + // final query = DocumentModelQuery("test/doc", adapter: adapter); + // final model = RuntimeRecordDocumentModel(query); + // await model.load(); + // expect(model.value, null); + // model.save((name: "aaaa", text: "bbbb", count: 1)); + // await model.saving; + // expect(model.value, (name: "aaaa", text: "bbbb", count: 1)); + // final remodel = RuntimeRecordDocumentModel(query); + // expect(remodel.value, null); + // expect(await remodel.load(), (name: "aaaa", text: "bbbb", count: 1)); + // expect(remodel.value, (name: "aaaa", text: "bbbb", count: 1)); + // remodel.save((name: "cccc", text: "dddd", count: 3)); + // await remodel.saving; + // expect(remodel.value, (name: "cccc", text: "dddd", count: 3)); + // await model.loading; + // expect(model.value, (name: "cccc", text: "dddd", count: 3)); + // await model.delete(); + // expect(model.value, null); + // expect(remodel.value, null); + // model.save((name: "aaaa", text: "bbbb", count: 1)); + // await model.saving; + // expect(remodel.value, (name: "aaaa", text: "bbbb", count: 1)); + // }); test("runtimeDocumentModel.saveAndLoadAndDelete", () async { final adapter = RuntimeModelAdapter(database: NoSqlDatabase()); final query = DocumentModelQuery("test/doc", adapter: adapter);