From fd7ad01440fbdb35c4b91bd83013572147cd3385 Mon Sep 17 00:00:00 2001 From: cbullinger Date: Wed, 20 Mar 2024 20:23:21 -0400 Subject: [PATCH] Upgrade to v2. Regenerate models with realm.dart files --- examples/dart/bin/models/car.dart | 2 +- .../bin/models/{car.g.dart => car.realm.dart} | 40 +- .../bundle_example/lib/realm/schemas.dart | 2 +- .../{schemas.g.dart => schemas.realm.dart} | 0 examples/dart/pubspec.lock | 36 +- examples/dart/pubspec.yaml | 2 +- examples/dart/test/add_sync_to_app.dart | 2 +- ..._app.g.dart => add_sync_to_app.realm.dart} | 40 +- examples/dart/test/backlinks_test.dart | 2 +- ..._test.g.dart => backlinks_test.realm.dart} | 76 +- examples/dart/test/car.dart | 2 +- .../test/car.g.dart => test/car.realm.dart} | 40 +- examples/dart/test/client_reset_test.dart | 2 +- ...st.g.dart => client_reset_test.realm.dart} | 40 +- examples/dart/test/data_ingest.test.dart | 2 +- ...est.g.dart => data_ingest.test.realm.dart} | 43 +- examples/dart/test/data_types_test.dart | 28 +- ...test.g.dart => data_types_test.realm.dart} | 651 +++++++++++++----- .../dart/test/define_realm_model_test.dart | 2 +- ...art => define_realm_model_test.realm.dart} | 117 +++- examples/dart/test/freeze_test.dart | 2 +- ...eze_test.g.dart => freeze_test.realm.dart} | 77 ++- examples/dart/test/full_text_search_test.dart | 2 +- ....dart => full_text_search_test.realm.dart} | 40 +- examples/dart/test/geospatial_data_test.dart | 2 +- ...g.dart => geospatial_data_test.realm.dart} | 69 +- .../dart/test/manage_sync_session_test.dart | 2 +- ...rt => manage_sync_session_test.realm.dart} | 40 +- .../test/manage_sync_subscription_test.dart | 2 +- ... manage_sync_subscription_test.realm.dart} | 111 ++- examples/dart/test/migrations_test.dart | 2 +- ...test.g.dart => migrations_test.realm.dart} | 37 +- .../test/open_flexible_sync_realm_test.dart | 2 +- ... open_flexible_sync_realm_test.realm.dart} | 74 +- examples/dart/test/quick_start_sync_test.dart | 2 +- ....dart => quick_start_sync_test.realm.dart} | 40 +- examples/dart/test/react_to_changes_test.dart | 2 +- ....dart => react_to_changes_test.realm.dart} | 78 ++- examples/dart/test/read_write_data_test.dart | 2 +- ...g.dart => read_write_data_test.realm.dart} | 74 +- examples/dart/test/schemas.dart | 2 +- .../{schemas.g.dart => schemas.realm.dart} | 224 +++++- .../test/sync_multiple_processes_test.dart | 2 +- ...> sync_multiple_processes_test.realm.dart} | 31 +- .../dart/test/task_project_models_test.dart | 4 +- ...rt => task_project_models_test.realm.dart} | 90 ++- examples/dart/test/write_copy_test.dart | 2 +- ...test.g.dart => write_copy_test.realm.dart} | 31 +- .../dart/test/write_to_synced_realm_test.dart | 2 +- ... => write_to_synced_realm_test.realm.dart} | 43 +- .../dart/test_sdk_example/lib/schema.dart | 2 +- .../dart/test_sdk_example/lib/schema.g.dart | 63 -- .../test_sdk_example/lib/schema.realm.dart | 94 +++ examples/dart/test_sdk_example/pubspec.lock | 629 +++++++++++++++++ examples/dart/test_sdk_example/pubspec.yaml | 2 +- examples/dart/test_sdk_example/test/car.dart | 2 +- .../test/car.realm.dart} | 40 +- ...ervices_test.snippet.access-app-by-id.dart | 2 +- .../car.snippet.define-model-dart.dart | 2 +- .../car.snippet.define-model-flutter.dart | 2 +- .../data_types_test.snippet.binary-model.dart | 1 - ...test.snippet.data-types-example-model.dart | 25 +- .../schemas.snippet.part-directive.dart | 2 +- ...dels_test.snippet.task-project-models.dart | 2 +- 64 files changed, 2595 insertions(+), 493 deletions(-) rename examples/dart/bin/models/{car.g.dart => car.realm.dart} (67%) rename examples/dart/bundle_example/lib/realm/{schemas.g.dart => schemas.realm.dart} (100%) rename examples/dart/test/{add_sync_to_app.g.dart => add_sync_to_app.realm.dart} (67%) rename examples/dart/test/{backlinks_test.g.dart => backlinks_test.realm.dart} (67%) rename examples/dart/{test_sdk_example/test/car.g.dart => test/car.realm.dart} (67%) rename examples/dart/test/{client_reset_test.g.dart => client_reset_test.realm.dart} (67%) rename examples/dart/test/{data_ingest.test.g.dart => data_ingest.test.realm.dart} (69%) rename examples/dart/test/{data_types_test.g.dart => data_types_test.realm.dart} (64%) rename examples/dart/test/{define_realm_model_test.g.dart => define_realm_model_test.realm.dart} (63%) rename examples/dart/test/{freeze_test.g.dart => freeze_test.realm.dart} (66%) rename examples/dart/test/{full_text_search_test.g.dart => full_text_search_test.realm.dart} (68%) rename examples/dart/test/{geospatial_data_test.g.dart => geospatial_data_test.realm.dart} (63%) rename examples/dart/test/{manage_sync_session_test.g.dart => manage_sync_session_test.realm.dart} (67%) rename examples/dart/test/{manage_sync_subscription_test.g.dart => manage_sync_subscription_test.realm.dart} (62%) rename examples/dart/test/{migrations_test.g.dart => migrations_test.realm.dart} (65%) rename examples/dart/test/{open_flexible_sync_realm_test.g.dart => open_flexible_sync_realm_test.realm.dart} (64%) rename examples/dart/test/{quick_start_sync_test.g.dart => quick_start_sync_test.realm.dart} (69%) rename examples/dart/test/{react_to_changes_test.g.dart => react_to_changes_test.realm.dart} (66%) rename examples/dart/test/{read_write_data_test.g.dart => read_write_data_test.realm.dart} (66%) rename examples/dart/test/{schemas.g.dart => schemas.realm.dart} (63%) rename examples/dart/test/{sync_multiple_processes_test.g.dart => sync_multiple_processes_test.realm.dart} (61%) rename examples/dart/test/{task_project_models_test.g.dart => task_project_models_test.realm.dart} (68%) rename examples/dart/test/{write_copy_test.g.dart => write_copy_test.realm.dart} (60%) rename examples/dart/test/{write_to_synced_realm_test.g.dart => write_to_synced_realm_test.realm.dart} (68%) delete mode 100644 examples/dart/test_sdk_example/lib/schema.g.dart create mode 100644 examples/dart/test_sdk_example/lib/schema.realm.dart create mode 100644 examples/dart/test_sdk_example/pubspec.lock rename examples/dart/{test/car.g.dart => test_sdk_example/test/car.realm.dart} (67%) diff --git a/examples/dart/bin/models/car.dart b/examples/dart/bin/models/car.dart index 6415dbd32d2..a3a44eb57d3 100644 --- a/examples/dart/bin/models/car.dart +++ b/examples/dart/bin/models/car.dart @@ -1,6 +1,6 @@ import 'package:realm_dart/realm.dart'; -part 'car.g.dart'; +part 'car.realm.dart'; @RealmModel() class _Car { diff --git a/examples/dart/bin/models/car.g.dart b/examples/dart/bin/models/car.realm.dart similarity index 67% rename from examples/dart/bin/models/car.g.dart rename to examples/dart/bin/models/car.realm.dart index c5a8bc69c28..87348828013 100644 --- a/examples/dart/bin/models/car.g.dart +++ b/examples/dart/bin/models/car.realm.dart @@ -49,15 +49,45 @@ class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { @override Car freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'make': make.toEJson(), + 'model': model.toEJson(), + 'miles': miles.toEJson(), + }; + } + + static EJsonValue _toEJson(Car value) => value.toEJson(); + static Car _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'make': EJsonValue make, + 'model': EJsonValue model, + 'miles': EJsonValue miles, + } => + Car( + fromEJson(id), + fromEJson(make), + model: fromEJson(model), + miles: fromEJson(miles), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Car._); - return const SchemaObject(ObjectType.realmObject, Car, 'Car', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Car, 'Car', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('make', RealmPropertyType.string), SchemaProperty('model', RealmPropertyType.string, optional: true), SchemaProperty('miles', RealmPropertyType.int, optional: true), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/bundle_example/lib/realm/schemas.dart b/examples/dart/bundle_example/lib/realm/schemas.dart index 7f52127e4fe..a51e7a28e1d 100644 --- a/examples/dart/bundle_example/lib/realm/schemas.dart +++ b/examples/dart/bundle_example/lib/realm/schemas.dart @@ -1,6 +1,6 @@ import 'package:realm/realm.dart'; -part 'schemas.g.dart'; +part 'schemas.realm.dart'; @RealmModel() class _Car { diff --git a/examples/dart/bundle_example/lib/realm/schemas.g.dart b/examples/dart/bundle_example/lib/realm/schemas.realm.dart similarity index 100% rename from examples/dart/bundle_example/lib/realm/schemas.g.dart rename to examples/dart/bundle_example/lib/realm/schemas.realm.dart diff --git a/examples/dart/pubspec.lock b/examples/dart/pubspec.lock index 9db4a4fef38..d9a6f89b61d 100644 --- a/examples/dart/pubspec.lock +++ b/examples/dart/pubspec.lock @@ -209,6 +209,22 @@ packages: url: "https://pub.dev" source: hosted version: "0.3.1" + ejson: + dependency: transitive + description: + name: ejson + sha256: "2d69382ea016c5f38c9d966681b464ca23d5f594918d4cb7dfecf0a3dad31395" + url: "https://pub.dev" + source: hosted + version: "0.2.0-pre.1" + ejson_annotation: + dependency: transitive + description: + name: ejson_annotation + sha256: f14948884cf6d91e00c727d5ec6b2395bdcb511541aa7956e4e03b73cd089149 + url: "https://pub.dev" + source: hosted + version: "0.2.0-pre.1" faker: dependency: "direct main" description: @@ -501,26 +517,26 @@ packages: dependency: transitive description: name: realm_common - sha256: "29516a9e43a9e75b2e16226ce24ccd9a549d9377e69be218394d8fb84da11183" + sha256: c4c994217c3f1dafdb3e36b5e3c75c6f4719fd5bd64f64a5acb79a5c962c018f url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "2.0.0" realm_dart: dependency: "direct main" description: name: realm_dart - sha256: "55cf02d26b0775e79570cf0ba6e4036a10c66250b99cb8f1ee41d71057206a7f" + sha256: "861b007dccf19ecfb1e7f47f2b0c246755b82c40e122d61fde18180dbbaf88a3" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "2.0.0" realm_generator: dependency: transitive description: name: realm_generator - sha256: "6d26ca214aad1b49f37a1a86f3216f19a25657d38d82cefb16551a35aa316ec1" + sha256: "3cad739d4491bc5b4ccdd184083fd58f6899e410d0acda7448b60261639e2735" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "2.0.0" rxdart: dependency: transitive description: @@ -689,6 +705,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.1" + type_plus: + dependency: transitive + description: + name: type_plus + sha256: "2e33cfac2e129297d5874567bdf7587502ec359881e9318551e014d91b02f84a" + url: "https://pub.dev" + source: hosted + version: "2.1.0" typed_data: dependency: transitive description: diff --git a/examples/dart/pubspec.yaml b/examples/dart/pubspec.yaml index 213cbdd62dc..83f2050b787 100644 --- a/examples/dart/pubspec.yaml +++ b/examples/dart/pubspec.yaml @@ -7,7 +7,7 @@ environment: sdk: "^3.0.2" dependencies: - realm_dart: ^1.3.0 + realm_dart: ^2.0.0 path: ^1.8.2 dart_jsonwebtoken: ^2.4.2 faker: ^2.0.0 diff --git a/examples/dart/test/add_sync_to_app.dart b/examples/dart/test/add_sync_to_app.dart index e8142fcbbcd..7b42f73fac1 100644 --- a/examples/dart/test/add_sync_to_app.dart +++ b/examples/dart/test/add_sync_to_app.dart @@ -2,7 +2,7 @@ import 'package:test/test.dart'; import 'package:realm_dart/realm.dart'; import 'utils.dart'; -part 'add_sync_to_app.g.dart'; +part 'add_sync_to_app.realm.dart'; @RealmModel() class _Car { diff --git a/examples/dart/test/add_sync_to_app.g.dart b/examples/dart/test/add_sync_to_app.realm.dart similarity index 67% rename from examples/dart/test/add_sync_to_app.g.dart rename to examples/dart/test/add_sync_to_app.realm.dart index 889724e1458..2ced4f19a6d 100644 --- a/examples/dart/test/add_sync_to_app.g.dart +++ b/examples/dart/test/add_sync_to_app.realm.dart @@ -49,16 +49,46 @@ class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { @override Car freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + '_id': id.toEJson(), + 'make': make.toEJson(), + 'model': model.toEJson(), + 'miles': miles.toEJson(), + }; + } + + static EJsonValue _toEJson(Car value) => value.toEJson(); + static Car _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + '_id': EJsonValue id, + 'make': EJsonValue make, + 'model': EJsonValue model, + 'miles': EJsonValue miles, + } => + Car( + fromEJson(id), + fromEJson(make), + model: fromEJson(model), + miles: fromEJson(miles), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Car._); - return const SchemaObject(ObjectType.realmObject, Car, 'Car', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Car, 'Car', [ SchemaProperty('id', RealmPropertyType.objectid, mapTo: '_id', primaryKey: true), SchemaProperty('make', RealmPropertyType.string), SchemaProperty('model', RealmPropertyType.string, optional: true), SchemaProperty('miles', RealmPropertyType.int, optional: true), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test/backlinks_test.dart b/examples/dart/test/backlinks_test.dart index 9169dcde27f..4ccebd88ebe 100644 --- a/examples/dart/test/backlinks_test.dart +++ b/examples/dart/test/backlinks_test.dart @@ -3,7 +3,7 @@ import 'package:realm_dart/realm.dart'; import 'schemas.dart'; import 'utils.dart'; -part 'backlinks_test.g.dart'; +part 'backlinks_test.realm.dart'; // :snippet-start: backlink-models @RealmModel() diff --git a/examples/dart/test/backlinks_test.g.dart b/examples/dart/test/backlinks_test.realm.dart similarity index 67% rename from examples/dart/test/backlinks_test.g.dart rename to examples/dart/test/backlinks_test.realm.dart index a1c59adabc4..40c66f9fbde 100644 --- a/examples/dart/test/backlinks_test.g.dart +++ b/examples/dart/test/backlinks_test.realm.dart @@ -45,17 +45,44 @@ class User extends _User with RealmEntity, RealmObjectBase, RealmObject { @override User freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'username': username.toEJson(), + 'tasks': tasks.toEJson(), + }; + } + + static EJsonValue _toEJson(User value) => value.toEJson(); + static User _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'username': EJsonValue username, + 'tasks': EJsonValue tasks, + } => + User( + fromEJson(id), + fromEJson(username), + tasks: fromEJson(tasks), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(User._); - return const SchemaObject(ObjectType.realmObject, User, 'User', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, User, 'User', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('username', RealmPropertyType.string), SchemaProperty('tasks', RealmPropertyType.object, linkTarget: 'Task', collectionType: RealmCollectionType.list), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class Task extends _Task with RealmEntity, RealmObjectBase, RealmObject { @@ -107,11 +134,37 @@ class Task extends _Task with RealmEntity, RealmObjectBase, RealmObject { @override Task freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'description': description.toEJson(), + 'isComplete': isComplete.toEJson(), + 'linkedUser': linkedUser.toEJson(), + }; + } + + static EJsonValue _toEJson(Task value) => value.toEJson(); + static Task _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'description': EJsonValue description, + 'isComplete': EJsonValue isComplete, + 'linkedUser': EJsonValue linkedUser, + } => + Task( + fromEJson(id), + fromEJson(description), + fromEJson(isComplete), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Task._); - return const SchemaObject(ObjectType.realmObject, Task, 'Task', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Task, 'Task', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('description', RealmPropertyType.string), SchemaProperty('isComplete', RealmPropertyType.bool), @@ -120,5 +173,8 @@ class Task extends _Task with RealmEntity, RealmObjectBase, RealmObject { collectionType: RealmCollectionType.list, linkTarget: 'User'), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test/car.dart b/examples/dart/test/car.dart index a1e46b841bd..7540ea350bb 100644 --- a/examples/dart/test/car.dart +++ b/examples/dart/test/car.dart @@ -1,7 +1,7 @@ // :snippet-start: define-model-dart import 'package:realm_dart/realm.dart'; -part 'car.g.dart'; +part 'car.realm.dart'; @RealmModel() class _Car { diff --git a/examples/dart/test_sdk_example/test/car.g.dart b/examples/dart/test/car.realm.dart similarity index 67% rename from examples/dart/test_sdk_example/test/car.g.dart rename to examples/dart/test/car.realm.dart index c5a8bc69c28..87348828013 100644 --- a/examples/dart/test_sdk_example/test/car.g.dart +++ b/examples/dart/test/car.realm.dart @@ -49,15 +49,45 @@ class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { @override Car freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'make': make.toEJson(), + 'model': model.toEJson(), + 'miles': miles.toEJson(), + }; + } + + static EJsonValue _toEJson(Car value) => value.toEJson(); + static Car _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'make': EJsonValue make, + 'model': EJsonValue model, + 'miles': EJsonValue miles, + } => + Car( + fromEJson(id), + fromEJson(make), + model: fromEJson(model), + miles: fromEJson(miles), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Car._); - return const SchemaObject(ObjectType.realmObject, Car, 'Car', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Car, 'Car', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('make', RealmPropertyType.string), SchemaProperty('model', RealmPropertyType.string, optional: true), SchemaProperty('miles', RealmPropertyType.int, optional: true), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test/client_reset_test.dart b/examples/dart/test/client_reset_test.dart index 9969d6855ab..c7007a6fb88 100644 --- a/examples/dart/test/client_reset_test.dart +++ b/examples/dart/test/client_reset_test.dart @@ -4,7 +4,7 @@ import 'package:realm_dart/realm.dart'; import 'package:test/test.dart'; import 'utils.dart'; -part "client_reset_test.g.dart"; +part "client_reset_test.realm.dart"; @RealmModel() class _Car { diff --git a/examples/dart/test/client_reset_test.g.dart b/examples/dart/test/client_reset_test.realm.dart similarity index 67% rename from examples/dart/test/client_reset_test.g.dart rename to examples/dart/test/client_reset_test.realm.dart index fd6eb685166..cbed39d5c7b 100644 --- a/examples/dart/test/client_reset_test.g.dart +++ b/examples/dart/test/client_reset_test.realm.dart @@ -49,16 +49,46 @@ class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { @override Car freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + '_id': id.toEJson(), + 'make': make.toEJson(), + 'model': model.toEJson(), + 'miles': miles.toEJson(), + }; + } + + static EJsonValue _toEJson(Car value) => value.toEJson(); + static Car _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + '_id': EJsonValue id, + 'make': EJsonValue make, + 'model': EJsonValue model, + 'miles': EJsonValue miles, + } => + Car( + fromEJson(id), + fromEJson(make), + model: fromEJson(model), + miles: fromEJson(miles), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Car._); - return const SchemaObject(ObjectType.realmObject, Car, 'Car', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Car, 'Car', [ SchemaProperty('id', RealmPropertyType.objectid, mapTo: '_id', primaryKey: true), SchemaProperty('make', RealmPropertyType.string), SchemaProperty('model', RealmPropertyType.string, optional: true), SchemaProperty('miles', RealmPropertyType.int, optional: true), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test/data_ingest.test.dart b/examples/dart/test/data_ingest.test.dart index 71fc236adc8..765c8b96588 100644 --- a/examples/dart/test/data_ingest.test.dart +++ b/examples/dart/test/data_ingest.test.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'package:test/test.dart'; import 'package:realm_dart/realm.dart'; import './utils.dart'; -part 'data_ingest.test.g.dart'; +part 'data_ingest.test.realm.dart'; // :snippet-start: asymmetric-sync-object @RealmModel(ObjectType.asymmetricObject) diff --git a/examples/dart/test/data_ingest.test.g.dart b/examples/dart/test/data_ingest.test.realm.dart similarity index 69% rename from examples/dart/test/data_ingest.test.g.dart rename to examples/dart/test/data_ingest.test.realm.dart index a14128040ad..7086d8aaf9b 100644 --- a/examples/dart/test/data_ingest.test.g.dart +++ b/examples/dart/test/data_ingest.test.realm.dart @@ -66,11 +66,41 @@ class WeatherSensor extends _WeatherSensor @override WeatherSensor freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + '_id': id.toEJson(), + 'deviceId': deviceId.toEJson(), + 'modtemperatureInFahrenheitel': modtemperatureInFahrenheitel.toEJson(), + 'barometricPressureInHg': barometricPressureInHg.toEJson(), + 'windSpeedInMph': windSpeedInMph.toEJson(), + }; + } + + static EJsonValue _toEJson(WeatherSensor value) => value.toEJson(); + static WeatherSensor _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + '_id': EJsonValue id, + 'deviceId': EJsonValue deviceId, + 'modtemperatureInFahrenheitel': EJsonValue modtemperatureInFahrenheitel, + 'barometricPressureInHg': EJsonValue barometricPressureInHg, + 'windSpeedInMph': EJsonValue windSpeedInMph, + } => + WeatherSensor( + fromEJson(id), + fromEJson(deviceId), + fromEJson(modtemperatureInFahrenheitel), + fromEJson(barometricPressureInHg), + fromEJson(windSpeedInMph), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(WeatherSensor._); - return const SchemaObject( + register(_toEJson, _fromEJson); + return SchemaObject( ObjectType.asymmetricObject, WeatherSensor, 'WeatherSensor', [ SchemaProperty('id', RealmPropertyType.objectid, mapTo: '_id', primaryKey: true), @@ -79,5 +109,8 @@ class WeatherSensor extends _WeatherSensor SchemaProperty('barometricPressureInHg', RealmPropertyType.double), SchemaProperty('windSpeedInMph', RealmPropertyType.double), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test/data_types_test.dart b/examples/dart/test/data_types_test.dart index 041f0d91b8a..c546ecd5c69 100644 --- a/examples/dart/test/data_types_test.dart +++ b/examples/dart/test/data_types_test.dart @@ -7,23 +7,11 @@ import 'utils.dart'; // :snippet-start: data-types-example-model -part 'data_types_test.g.dart'; // :remove: +part 'data_types_test.realm.dart'; // :remove: // :uncomment-start: -// part 'car.g.dart'; +// part 'car.realm.dart'; // :uncomment-end: -@RealmModel() -class _Car { - @PrimaryKey() - late ObjectId id; - - String? licensePlate; - bool isElectric = false; - double milesDriven = 0; - late List attributes; - late _Person? owner; -} - // :snippet-start: embedded-object-model // The generated `Address` class is an embedded object. @RealmModel(ObjectType.embeddedObject) @@ -46,6 +34,17 @@ class _Person { } // :snippet-end: +@RealmModel() +class _Car { + @PrimaryKey() + late ObjectId id; + + String? licensePlate; + bool isElectric = false; + double milesDriven = 0; + late List attributes; + late _Person? owner; +} // :snippet-end: // :snippet-start: uuid-model @@ -131,7 +130,6 @@ class _SomeRealmModel { class _BinaryExample { late String name; late Uint8List requiredBinaryProperty; - var defaultValueBinaryProperty = Uint8List(8); late Uint8List? nullableBinaryProperty; } // :snippet-end: diff --git a/examples/dart/test/data_types_test.g.dart b/examples/dart/test/data_types_test.realm.dart similarity index 64% rename from examples/dart/test/data_types_test.g.dart rename to examples/dart/test/data_types_test.realm.dart index 15d61890047..e8468acf633 100644 --- a/examples/dart/test/data_types_test.g.dart +++ b/examples/dart/test/data_types_test.realm.dart @@ -7,95 +7,6 @@ part of 'data_types_test.dart'; // ************************************************************************** // ignore_for_file: type=lint -class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { - static var _defaultsSet = false; - - Car( - ObjectId id, { - String? licensePlate, - bool isElectric = false, - double milesDriven = 0, - Person? owner, - Iterable attributes = const [], - }) { - if (!_defaultsSet) { - _defaultsSet = RealmObjectBase.setDefaults({ - 'isElectric': false, - 'milesDriven': 0, - }); - } - RealmObjectBase.set(this, 'id', id); - RealmObjectBase.set(this, 'licensePlate', licensePlate); - RealmObjectBase.set(this, 'isElectric', isElectric); - RealmObjectBase.set(this, 'milesDriven', milesDriven); - RealmObjectBase.set(this, 'owner', owner); - RealmObjectBase.set>( - this, 'attributes', RealmList(attributes)); - } - - Car._(); - - @override - ObjectId get id => RealmObjectBase.get(this, 'id') as ObjectId; - @override - set id(ObjectId value) => RealmObjectBase.set(this, 'id', value); - - @override - String? get licensePlate => - RealmObjectBase.get(this, 'licensePlate') as String?; - @override - set licensePlate(String? value) => - RealmObjectBase.set(this, 'licensePlate', value); - - @override - bool get isElectric => RealmObjectBase.get(this, 'isElectric') as bool; - @override - set isElectric(bool value) => RealmObjectBase.set(this, 'isElectric', value); - - @override - double get milesDriven => - RealmObjectBase.get(this, 'milesDriven') as double; - @override - set milesDriven(double value) => - RealmObjectBase.set(this, 'milesDriven', value); - - @override - RealmList get attributes => - RealmObjectBase.get(this, 'attributes') as RealmList; - @override - set attributes(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - Person? get owner => RealmObjectBase.get(this, 'owner') as Person?; - @override - set owner(covariant Person? value) => - RealmObjectBase.set(this, 'owner', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - Car freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(Car._); - return const SchemaObject(ObjectType.realmObject, Car, 'Car', [ - SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), - SchemaProperty('licensePlate', RealmPropertyType.string, optional: true), - SchemaProperty('isElectric', RealmPropertyType.bool), - SchemaProperty('milesDriven', RealmPropertyType.double), - SchemaProperty('attributes', RealmPropertyType.string, - collectionType: RealmCollectionType.list), - SchemaProperty('owner', RealmPropertyType.object, - optional: true, linkTarget: 'Person'), - ]); - } -} - class Address extends _Address with RealmEntity, RealmObjectBase, EmbeddedObject { Address( @@ -139,17 +50,47 @@ class Address extends _Address @override Address freeze() => RealmObjectBase.freezeObject
(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'street': street.toEJson(), + 'city': city.toEJson(), + 'state': state.toEJson(), + 'country': country.toEJson(), + }; + } + + static EJsonValue _toEJson(Address value) => value.toEJson(); + static Address _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'street': EJsonValue street, + 'city': EJsonValue city, + 'state': EJsonValue state, + 'country': EJsonValue country, + } => + Address( + fromEJson(street), + fromEJson(city), + fromEJson(state), + fromEJson(country), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Address._); - return const SchemaObject(ObjectType.embeddedObject, Address, 'Address', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.embeddedObject, Address, 'Address', [ SchemaProperty('street', RealmPropertyType.string), SchemaProperty('city', RealmPropertyType.string), SchemaProperty('state', RealmPropertyType.string), SchemaProperty('country', RealmPropertyType.string), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class Person extends _Person with RealmEntity, RealmObjectBase, RealmObject { @@ -189,17 +130,169 @@ class Person extends _Person with RealmEntity, RealmObjectBase, RealmObject { @override Person freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'name': name.toEJson(), + 'address': address.toEJson(), + }; + } + + static EJsonValue _toEJson(Person value) => value.toEJson(); + static Person _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'name': EJsonValue name, + 'address': EJsonValue address, + } => + Person( + fromEJson(id), + fromEJson(name), + address: fromEJson(address), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Person._); - return const SchemaObject(ObjectType.realmObject, Person, 'Person', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Person, 'Person', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('name', RealmPropertyType.string), SchemaProperty('address', RealmPropertyType.object, optional: true, linkTarget: 'Address'), ]); + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; +} + +class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { + static var _defaultsSet = false; + + Car( + ObjectId id, { + String? licensePlate, + bool isElectric = false, + double milesDriven = 0, + Iterable attributes = const [], + Person? owner, + }) { + if (!_defaultsSet) { + _defaultsSet = RealmObjectBase.setDefaults({ + 'isElectric': false, + 'milesDriven': 0, + }); + } + RealmObjectBase.set(this, 'id', id); + RealmObjectBase.set(this, 'licensePlate', licensePlate); + RealmObjectBase.set(this, 'isElectric', isElectric); + RealmObjectBase.set(this, 'milesDriven', milesDriven); + RealmObjectBase.set>( + this, 'attributes', RealmList(attributes)); + RealmObjectBase.set(this, 'owner', owner); } + + Car._(); + + @override + ObjectId get id => RealmObjectBase.get(this, 'id') as ObjectId; + @override + set id(ObjectId value) => RealmObjectBase.set(this, 'id', value); + + @override + String? get licensePlate => + RealmObjectBase.get(this, 'licensePlate') as String?; + @override + set licensePlate(String? value) => + RealmObjectBase.set(this, 'licensePlate', value); + + @override + bool get isElectric => RealmObjectBase.get(this, 'isElectric') as bool; + @override + set isElectric(bool value) => RealmObjectBase.set(this, 'isElectric', value); + + @override + double get milesDriven => + RealmObjectBase.get(this, 'milesDriven') as double; + @override + set milesDriven(double value) => + RealmObjectBase.set(this, 'milesDriven', value); + + @override + RealmList get attributes => + RealmObjectBase.get(this, 'attributes') as RealmList; + @override + set attributes(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + Person? get owner => RealmObjectBase.get(this, 'owner') as Person?; + @override + set owner(covariant Person? value) => + RealmObjectBase.set(this, 'owner', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + Car freeze() => RealmObjectBase.freezeObject(this); + + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'licensePlate': licensePlate.toEJson(), + 'isElectric': isElectric.toEJson(), + 'milesDriven': milesDriven.toEJson(), + 'attributes': attributes.toEJson(), + 'owner': owner.toEJson(), + }; + } + + static EJsonValue _toEJson(Car value) => value.toEJson(); + static Car _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'licensePlate': EJsonValue licensePlate, + 'isElectric': EJsonValue isElectric, + 'milesDriven': EJsonValue milesDriven, + 'attributes': EJsonValue attributes, + 'owner': EJsonValue owner, + } => + Car( + fromEJson(id), + licensePlate: fromEJson(licensePlate), + isElectric: fromEJson(isElectric), + milesDriven: fromEJson(milesDriven), + attributes: fromEJson(attributes), + owner: fromEJson(owner), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { + RealmObjectBase.registerFactory(Car._); + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Car, 'Car', [ + SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), + SchemaProperty('licensePlate', RealmPropertyType.string, optional: true), + SchemaProperty('isElectric', RealmPropertyType.bool), + SchemaProperty('milesDriven', RealmPropertyType.double), + SchemaProperty('attributes', RealmPropertyType.string, + collectionType: RealmCollectionType.list), + SchemaProperty('owner', RealmPropertyType.object, + optional: true, linkTarget: 'Person'), + ]); + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class UuidPrimaryKey extends _UuidPrimaryKey @@ -224,15 +317,36 @@ class UuidPrimaryKey extends _UuidPrimaryKey @override UuidPrimaryKey freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + }; + } + + static EJsonValue _toEJson(UuidPrimaryKey value) => value.toEJson(); + static UuidPrimaryKey _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + } => + UuidPrimaryKey( + fromEJson(id), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(UuidPrimaryKey._); - return const SchemaObject( + register(_toEJson, _fromEJson); + return SchemaObject( ObjectType.realmObject, UuidPrimaryKey, 'UuidPrimaryKey', [ SchemaProperty('id', RealmPropertyType.uuid, primaryKey: true), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class ObjectIdPrimaryKey extends _ObjectIdPrimaryKey @@ -258,15 +372,36 @@ class ObjectIdPrimaryKey extends _ObjectIdPrimaryKey ObjectIdPrimaryKey freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + }; + } + + static EJsonValue _toEJson(ObjectIdPrimaryKey value) => value.toEJson(); + static ObjectIdPrimaryKey _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + } => + ObjectIdPrimaryKey( + fromEJson(id), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(ObjectIdPrimaryKey._); - return const SchemaObject( + register(_toEJson, _fromEJson); + return SchemaObject( ObjectType.realmObject, ObjectIdPrimaryKey, 'ObjectIdPrimaryKey', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class RealmValueExample extends _RealmValueExample @@ -305,18 +440,42 @@ class RealmValueExample extends _RealmValueExample RealmValueExample freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'singleAnyValue': singleAnyValue.toEJson(), + 'listOfMixedAnyValues': listOfMixedAnyValues.toEJson(), + }; + } + + static EJsonValue _toEJson(RealmValueExample value) => value.toEJson(); + static RealmValueExample _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'singleAnyValue': EJsonValue singleAnyValue, + 'listOfMixedAnyValues': EJsonValue listOfMixedAnyValues, + } => + RealmValueExample( + singleAnyValue: fromEJson(singleAnyValue), + listOfMixedAnyValues: fromEJson(listOfMixedAnyValues), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(RealmValueExample._); - return const SchemaObject( + register(_toEJson, _fromEJson); + return SchemaObject( ObjectType.realmObject, RealmValueExample, 'RealmValueExample', [ SchemaProperty('singleAnyValue', RealmPropertyType.mixed, optional: true, indexType: RealmIndexType.regular), SchemaProperty('listOfMixedAnyValues', RealmPropertyType.mixed, optional: true, collectionType: RealmCollectionType.list), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class Vehicle extends _Vehicle with RealmEntity, RealmObjectBase, RealmObject { @@ -357,16 +516,43 @@ class Vehicle extends _Vehicle with RealmEntity, RealmObjectBase, RealmObject { @override Vehicle freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'nickname': nickname.toEJson(), + 'dateLastServiced': dateLastServiced.toEJson(), + }; + } + + static EJsonValue _toEJson(Vehicle value) => value.toEJson(); + static Vehicle _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'nickname': EJsonValue nickname, + 'dateLastServiced': EJsonValue dateLastServiced, + } => + Vehicle( + fromEJson(id), + fromEJson(nickname), + fromEJson(dateLastServiced), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Vehicle._); - return const SchemaObject(ObjectType.realmObject, Vehicle, 'Vehicle', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Vehicle, 'Vehicle', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('nickname', RealmPropertyType.string), SchemaProperty('dateLastServiced', RealmPropertyType.timestamp), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class Player extends _Player with RealmEntity, RealmObjectBase, RealmObject { @@ -418,11 +604,38 @@ class Player extends _Player with RealmEntity, RealmObjectBase, RealmObject { @override Player freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'username': username.toEJson(), + 'inventory': inventory.toEJson(), + 'traits': traits.toEJson(), + }; + } + + static EJsonValue _toEJson(Player value) => value.toEJson(); + static Player _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'username': EJsonValue username, + 'inventory': EJsonValue inventory, + 'traits': EJsonValue traits, + } => + Player( + fromEJson(id), + fromEJson(username), + inventory: fromEJson(inventory), + traits: fromEJson(traits), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Player._); - return const SchemaObject(ObjectType.realmObject, Player, 'Player', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Player, 'Player', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('username', RealmPropertyType.string), SchemaProperty('inventory', RealmPropertyType.object, @@ -430,7 +643,10 @@ class Player extends _Player with RealmEntity, RealmObjectBase, RealmObject { SchemaProperty('traits', RealmPropertyType.string, collectionType: RealmCollectionType.list), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class Item extends _Item with RealmEntity, RealmObjectBase, RealmObject { @@ -470,16 +686,43 @@ class Item extends _Item with RealmEntity, RealmObjectBase, RealmObject { @override Item freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'name': name.toEJson(), + 'description': description.toEJson(), + }; + } + + static EJsonValue _toEJson(Item value) => value.toEJson(); + static Item _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'name': EJsonValue name, + 'description': EJsonValue description, + } => + Item( + fromEJson(id), + fromEJson(name), + fromEJson(description), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Item._); - return const SchemaObject(ObjectType.realmObject, Item, 'Item', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Item, 'Item', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('name', RealmPropertyType.string), SchemaProperty('description', RealmPropertyType.string), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class RealmSetExample extends _RealmSetExample @@ -529,11 +772,35 @@ class RealmSetExample extends _RealmSetExample RealmSetExample freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'primitiveSet': primitiveSet.toEJson(), + 'nullablePrimitiveSet': nullablePrimitiveSet.toEJson(), + 'realmObjectSet': realmObjectSet.toEJson(), + }; + } + + static EJsonValue _toEJson(RealmSetExample value) => value.toEJson(); + static RealmSetExample _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'primitiveSet': EJsonValue primitiveSet, + 'nullablePrimitiveSet': EJsonValue nullablePrimitiveSet, + 'realmObjectSet': EJsonValue realmObjectSet, + } => + RealmSetExample( + primitiveSet: fromEJson(primitiveSet), + nullablePrimitiveSet: fromEJson(nullablePrimitiveSet), + realmObjectSet: fromEJson(realmObjectSet), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(RealmSetExample._); - return const SchemaObject( + register(_toEJson, _fromEJson); + return SchemaObject( ObjectType.realmObject, RealmSetExample, 'RealmSetExample', [ SchemaProperty('primitiveSet', RealmPropertyType.string, collectionType: RealmCollectionType.set), @@ -543,7 +810,10 @@ class RealmSetExample extends _RealmSetExample linkTarget: 'SomeRealmModel', collectionType: RealmCollectionType.set), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class SomeRealmModel extends _SomeRealmModel @@ -568,15 +838,36 @@ class SomeRealmModel extends _SomeRealmModel @override SomeRealmModel freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + }; + } + + static EJsonValue _toEJson(SomeRealmModel value) => value.toEJson(); + static SomeRealmModel _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + } => + SomeRealmModel( + fromEJson(id), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(SomeRealmModel._); - return const SchemaObject( + register(_toEJson, _fromEJson); + return SchemaObject( ObjectType.realmObject, SomeRealmModel, 'SomeRealmModel', [ SchemaProperty('id', RealmPropertyType.objectid), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class BinaryExample extends _BinaryExample @@ -584,13 +875,10 @@ class BinaryExample extends _BinaryExample BinaryExample( String name, Uint8List requiredBinaryProperty, { - Uint8List? defaultValueBinaryProperty, Uint8List? nullableBinaryProperty, }) { RealmObjectBase.set(this, 'name', name); RealmObjectBase.set(this, 'requiredBinaryProperty', requiredBinaryProperty); - RealmObjectBase.set(this, 'defaultValueBinaryProperty', - defaultValueBinaryProperty ?? Uint8List(8)); RealmObjectBase.set(this, 'nullableBinaryProperty', nullableBinaryProperty); } @@ -609,14 +897,6 @@ class BinaryExample extends _BinaryExample set requiredBinaryProperty(Uint8List value) => RealmObjectBase.set(this, 'requiredBinaryProperty', value); - @override - Uint8List get defaultValueBinaryProperty => - RealmObjectBase.get(this, 'defaultValueBinaryProperty') - as Uint8List; - @override - set defaultValueBinaryProperty(Uint8List value) => - RealmObjectBase.set(this, 'defaultValueBinaryProperty', value); - @override Uint8List? get nullableBinaryProperty => RealmObjectBase.get(this, 'nullableBinaryProperty') @@ -632,19 +912,45 @@ class BinaryExample extends _BinaryExample @override BinaryExample freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'name': name.toEJson(), + 'requiredBinaryProperty': requiredBinaryProperty.toEJson(), + 'nullableBinaryProperty': nullableBinaryProperty.toEJson(), + }; + } + + static EJsonValue _toEJson(BinaryExample value) => value.toEJson(); + static BinaryExample _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'name': EJsonValue name, + 'requiredBinaryProperty': EJsonValue requiredBinaryProperty, + 'nullableBinaryProperty': EJsonValue nullableBinaryProperty, + } => + BinaryExample( + fromEJson(name), + fromEJson(requiredBinaryProperty), + nullableBinaryProperty: fromEJson(nullableBinaryProperty), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(BinaryExample._); - return const SchemaObject( + register(_toEJson, _fromEJson); + return SchemaObject( ObjectType.realmObject, BinaryExample, 'BinaryExample', [ SchemaProperty('name', RealmPropertyType.string), SchemaProperty('requiredBinaryProperty', RealmPropertyType.binary), - SchemaProperty('defaultValueBinaryProperty', RealmPropertyType.binary), SchemaProperty('nullableBinaryProperty', RealmPropertyType.binary, optional: true), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class MapExample extends _MapExample @@ -680,16 +986,39 @@ class MapExample extends _MapExample @override MapExample freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'map': map.toEJson(), + 'nullableMap': nullableMap.toEJson(), + }; + } + + static EJsonValue _toEJson(MapExample value) => value.toEJson(); + static MapExample _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'map': EJsonValue map, + 'nullableMap': EJsonValue nullableMap, + } => + MapExample( + map: fromEJson(map), + nullableMap: fromEJson(nullableMap), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(MapExample._); - return const SchemaObject( - ObjectType.realmObject, MapExample, 'MapExample', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, MapExample, 'MapExample', [ SchemaProperty('map', RealmPropertyType.int, collectionType: RealmCollectionType.map), SchemaProperty('nullableMap', RealmPropertyType.int, optional: true, collectionType: RealmCollectionType.map), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test/define_realm_model_test.dart b/examples/dart/test/define_realm_model_test.dart index 87a2ab57426..03d2c02d2a8 100644 --- a/examples/dart/test/define_realm_model_test.dart +++ b/examples/dart/test/define_realm_model_test.dart @@ -2,7 +2,7 @@ import 'package:realm_dart/realm.dart'; import 'package:test/expect.dart'; import 'package:test/scaffolding.dart'; -part 'define_realm_model_test.g.dart'; +part 'define_realm_model_test.realm.dart'; @RealmModel() class _Car { diff --git a/examples/dart/test/define_realm_model_test.g.dart b/examples/dart/test/define_realm_model_test.realm.dart similarity index 63% rename from examples/dart/test/define_realm_model_test.g.dart rename to examples/dart/test/define_realm_model_test.realm.dart index b5abdc19afb..eab62b73aac 100644 --- a/examples/dart/test/define_realm_model_test.g.dart +++ b/examples/dart/test/define_realm_model_test.realm.dart @@ -49,17 +49,47 @@ class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { @override Car freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'make': make.toEJson(), + 'model': model.toEJson(), + 'miles': miles.toEJson(), + }; + } + + static EJsonValue _toEJson(Car value) => value.toEJson(); + static Car _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'make': EJsonValue make, + 'model': EJsonValue model, + 'miles': EJsonValue miles, + } => + Car( + fromEJson(id), + fromEJson(make), + model: fromEJson(model), + miles: fromEJson(miles), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Car._); - return const SchemaObject(ObjectType.realmObject, Car, 'Car', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Car, 'Car', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('make', RealmPropertyType.string), SchemaProperty('model', RealmPropertyType.string, optional: true), SchemaProperty('miles', RealmPropertyType.int, optional: true), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class Person extends _Person with RealmEntity, RealmObjectBase, RealmObject { @@ -99,16 +129,43 @@ class Person extends _Person with RealmEntity, RealmObjectBase, RealmObject { @override Person freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'firstName': firstName.toEJson(), + 'lastName': lastName.toEJson(), + 'age': age.toEJson(), + }; + } + + static EJsonValue _toEJson(Person value) => value.toEJson(); + static Person _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'firstName': EJsonValue firstName, + 'lastName': EJsonValue lastName, + 'age': EJsonValue age, + } => + Person( + fromEJson(firstName), + fromEJson(lastName), + fromEJson(age), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Person._); - return const SchemaObject(ObjectType.realmObject, Person, 'Person', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Person, 'Person', [ SchemaProperty('firstName', RealmPropertyType.string), SchemaProperty('lastName', RealmPropertyType.string), SchemaProperty('age', RealmPropertyType.int), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class Boat extends _Boat with RealmEntity, RealmObjectBase, RealmObject { @@ -155,15 +212,45 @@ class Boat extends _Boat with RealmEntity, RealmObjectBase, RealmObject { @override Boat freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'name': name.toEJson(), + 'maxKnots': maxKnots.toEJson(), + 'nauticalMiles': nauticalMiles.toEJson(), + }; + } + + static EJsonValue _toEJson(Boat value) => value.toEJson(); + static Boat _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'name': EJsonValue name, + 'maxKnots': EJsonValue maxKnots, + 'nauticalMiles': EJsonValue nauticalMiles, + } => + Boat( + fromEJson(id), + fromEJson(name), + maxKnots: fromEJson(maxKnots), + nauticalMiles: fromEJson(nauticalMiles), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Boat._); - return const SchemaObject(ObjectType.realmObject, Boat, 'naval_ship', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Boat, 'naval_ship', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('name', RealmPropertyType.string), SchemaProperty('maxKnots', RealmPropertyType.int, optional: true), SchemaProperty('nauticalMiles', RealmPropertyType.int, optional: true), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test/freeze_test.dart b/examples/dart/test/freeze_test.dart index de16917ade3..8450039ccd7 100644 --- a/examples/dart/test/freeze_test.dart +++ b/examples/dart/test/freeze_test.dart @@ -2,7 +2,7 @@ import 'package:realm_dart/realm.dart'; import 'package:test/test.dart'; import './utils.dart'; -part 'freeze_test.g.dart'; +part 'freeze_test.realm.dart'; @RealmModel() class _Person { diff --git a/examples/dart/test/freeze_test.g.dart b/examples/dart/test/freeze_test.realm.dart similarity index 66% rename from examples/dart/test/freeze_test.g.dart rename to examples/dart/test/freeze_test.realm.dart index a42b3cd83f0..cb48cdc58e5 100644 --- a/examples/dart/test/freeze_test.g.dart +++ b/examples/dart/test/freeze_test.realm.dart @@ -54,18 +54,48 @@ class Person extends _Person with RealmEntity, RealmObjectBase, RealmObject { @override Person freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'firstName': firstName.toEJson(), + 'lastName': lastName.toEJson(), + 'attributes': attributes.toEJson(), + }; + } + + static EJsonValue _toEJson(Person value) => value.toEJson(); + static Person _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'firstName': EJsonValue firstName, + 'lastName': EJsonValue lastName, + 'attributes': EJsonValue attributes, + } => + Person( + fromEJson(id), + fromEJson(firstName), + fromEJson(lastName), + attributes: fromEJson(attributes), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Person._); - return const SchemaObject(ObjectType.realmObject, Person, 'Person', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Person, 'Person', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('firstName', RealmPropertyType.string), SchemaProperty('lastName', RealmPropertyType.string), SchemaProperty('attributes', RealmPropertyType.string, collectionType: RealmCollectionType.list), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class Scooter extends _Scooter with RealmEntity, RealmObjectBase, RealmObject { @@ -104,15 +134,42 @@ class Scooter extends _Scooter with RealmEntity, RealmObjectBase, RealmObject { @override Scooter freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'name': name.toEJson(), + 'owner': owner.toEJson(), + }; + } + + static EJsonValue _toEJson(Scooter value) => value.toEJson(); + static Scooter _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'name': EJsonValue name, + 'owner': EJsonValue owner, + } => + Scooter( + fromEJson(id), + fromEJson(name), + owner: fromEJson(owner), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Scooter._); - return const SchemaObject(ObjectType.realmObject, Scooter, 'Scooter', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Scooter, 'Scooter', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('name', RealmPropertyType.string), SchemaProperty('owner', RealmPropertyType.object, optional: true, linkTarget: 'Person'), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test/full_text_search_test.dart b/examples/dart/test/full_text_search_test.dart index b89c25d1b23..950cf2000df 100644 --- a/examples/dart/test/full_text_search_test.dart +++ b/examples/dart/test/full_text_search_test.dart @@ -2,7 +2,7 @@ import 'package:realm_dart/realm.dart'; import 'package:test/test.dart'; import './utils.dart'; -part 'full_text_search_test.g.dart'; +part 'full_text_search_test.realm.dart'; // :snippet-start: flutter-fts-annotation @RealmModel() diff --git a/examples/dart/test/full_text_search_test.g.dart b/examples/dart/test/full_text_search_test.realm.dart similarity index 68% rename from examples/dart/test/full_text_search_test.g.dart rename to examples/dart/test/full_text_search_test.realm.dart index 8200feef138..b130dcdc99f 100644 --- a/examples/dart/test/full_text_search_test.g.dart +++ b/examples/dart/test/full_text_search_test.realm.dart @@ -50,11 +50,38 @@ class Rug extends _Rug with RealmEntity, RealmObjectBase, RealmObject { @override Rug freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'pattern': pattern.toEJson(), + 'material': material.toEJson(), + 'softness': softness.toEJson(), + }; + } + + static EJsonValue _toEJson(Rug value) => value.toEJson(); + static Rug _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'pattern': EJsonValue pattern, + 'material': EJsonValue material, + 'softness': EJsonValue softness, + } => + Rug( + fromEJson(id), + fromEJson(pattern), + fromEJson(material), + fromEJson(softness), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Rug._); - return const SchemaObject(ObjectType.realmObject, Rug, 'Rug', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Rug, 'Rug', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('pattern', RealmPropertyType.string, indexType: RealmIndexType.fullText), @@ -62,5 +89,8 @@ class Rug extends _Rug with RealmEntity, RealmObjectBase, RealmObject { indexType: RealmIndexType.fullText), SchemaProperty('softness', RealmPropertyType.int), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test/geospatial_data_test.dart b/examples/dart/test/geospatial_data_test.dart index f167a9f73ed..151d373a6de 100644 --- a/examples/dart/test/geospatial_data_test.dart +++ b/examples/dart/test/geospatial_data_test.dart @@ -2,7 +2,7 @@ import 'package:realm_dart/realm.dart'; import 'package:test/test.dart'; import 'utils.dart'; -part 'geospatial_data_test.g.dart'; +part 'geospatial_data_test.realm.dart'; // :snippet-start: define-geopoint-class // To store geospatial data, create an embedded object with this structure. diff --git a/examples/dart/test/geospatial_data_test.g.dart b/examples/dart/test/geospatial_data_test.realm.dart similarity index 63% rename from examples/dart/test/geospatial_data_test.g.dart rename to examples/dart/test/geospatial_data_test.realm.dart index d949270e5af..3da5ff8ffde 100644 --- a/examples/dart/test/geospatial_data_test.g.dart +++ b/examples/dart/test/geospatial_data_test.realm.dart @@ -44,17 +44,40 @@ class MyGeoPoint extends _MyGeoPoint @override MyGeoPoint freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'type': type.toEJson(), + 'coordinates': coordinates.toEJson(), + }; + } + + static EJsonValue _toEJson(MyGeoPoint value) => value.toEJson(); + static MyGeoPoint _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'type': EJsonValue type, + 'coordinates': EJsonValue coordinates, + } => + MyGeoPoint( + type: fromEJson(type), + coordinates: fromEJson(coordinates), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(MyGeoPoint._); - return const SchemaObject( - ObjectType.embeddedObject, MyGeoPoint, 'MyGeoPoint', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.embeddedObject, MyGeoPoint, 'MyGeoPoint', [ SchemaProperty('type', RealmPropertyType.string), SchemaProperty('coordinates', RealmPropertyType.double, collectionType: RealmCollectionType.list), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class Company extends _Company with RealmEntity, RealmObjectBase, RealmObject { @@ -87,14 +110,38 @@ class Company extends _Company with RealmEntity, RealmObjectBase, RealmObject { @override Company freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'location': location.toEJson(), + }; + } + + static EJsonValue _toEJson(Company value) => value.toEJson(); + static Company _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'location': EJsonValue location, + } => + Company( + fromEJson(id), + location: fromEJson(location), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Company._); - return const SchemaObject(ObjectType.realmObject, Company, 'Company', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Company, 'Company', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('location', RealmPropertyType.object, optional: true, linkTarget: 'MyGeoPoint'), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test/manage_sync_session_test.dart b/examples/dart/test/manage_sync_session_test.dart index f6373aca1d0..d806c22d9cf 100644 --- a/examples/dart/test/manage_sync_session_test.dart +++ b/examples/dart/test/manage_sync_session_test.dart @@ -4,7 +4,7 @@ import 'package:test/test.dart'; import 'package:realm_dart/realm.dart'; import './utils.dart'; -part 'manage_sync_session_test.g.dart'; +part 'manage_sync_session_test.realm.dart'; const APP_ID = "flutter-flexible-luccm"; late App app; diff --git a/examples/dart/test/manage_sync_session_test.g.dart b/examples/dart/test/manage_sync_session_test.realm.dart similarity index 67% rename from examples/dart/test/manage_sync_session_test.g.dart rename to examples/dart/test/manage_sync_session_test.realm.dart index 1a3e4fa335d..b251d8d7d4e 100644 --- a/examples/dart/test/manage_sync_session_test.g.dart +++ b/examples/dart/test/manage_sync_session_test.realm.dart @@ -49,16 +49,46 @@ class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { @override Car freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + '_id': id.toEJson(), + 'make': make.toEJson(), + 'model': model.toEJson(), + 'miles': miles.toEJson(), + }; + } + + static EJsonValue _toEJson(Car value) => value.toEJson(); + static Car _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + '_id': EJsonValue id, + 'make': EJsonValue make, + 'model': EJsonValue model, + 'miles': EJsonValue miles, + } => + Car( + fromEJson(id), + fromEJson(make), + model: fromEJson(model), + miles: fromEJson(miles), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Car._); - return const SchemaObject(ObjectType.realmObject, Car, 'Car', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Car, 'Car', [ SchemaProperty('id', RealmPropertyType.objectid, mapTo: '_id', primaryKey: true), SchemaProperty('make', RealmPropertyType.string), SchemaProperty('model', RealmPropertyType.string, optional: true), SchemaProperty('miles', RealmPropertyType.int, optional: true), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test/manage_sync_subscription_test.dart b/examples/dart/test/manage_sync_subscription_test.dart index 79fa047e146..729857e9f09 100644 --- a/examples/dart/test/manage_sync_subscription_test.dart +++ b/examples/dart/test/manage_sync_subscription_test.dart @@ -2,7 +2,7 @@ import 'package:test/test.dart'; import 'package:realm_dart/realm.dart'; import './utils.dart'; -part 'manage_sync_subscription_test.g.dart'; +part 'manage_sync_subscription_test.realm.dart'; @RealmModel() class _Plane { diff --git a/examples/dart/test/manage_sync_subscription_test.g.dart b/examples/dart/test/manage_sync_subscription_test.realm.dart similarity index 62% rename from examples/dart/test/manage_sync_subscription_test.g.dart rename to examples/dart/test/manage_sync_subscription_test.realm.dart index 241a47cb487..7659027ce52 100644 --- a/examples/dart/test/manage_sync_subscription_test.g.dart +++ b/examples/dart/test/manage_sync_subscription_test.realm.dart @@ -42,17 +42,44 @@ class Plane extends _Plane with RealmEntity, RealmObjectBase, RealmObject { @override Plane freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + '_id': id.toEJson(), + 'name': name.toEJson(), + 'numSeats': numSeats.toEJson(), + }; + } + + static EJsonValue _toEJson(Plane value) => value.toEJson(); + static Plane _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + '_id': EJsonValue id, + 'name': EJsonValue name, + 'numSeats': EJsonValue numSeats, + } => + Plane( + fromEJson(id), + fromEJson(name), + fromEJson(numSeats), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Plane._); - return const SchemaObject(ObjectType.realmObject, Plane, 'Plane', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Plane, 'Plane', [ SchemaProperty('id', RealmPropertyType.int, mapTo: '_id', primaryKey: true), SchemaProperty('name', RealmPropertyType.string), SchemaProperty('numSeats', RealmPropertyType.int), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class Train extends _Train with RealmEntity, RealmObjectBase, RealmObject { @@ -90,17 +117,44 @@ class Train extends _Train with RealmEntity, RealmObjectBase, RealmObject { @override Train freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + '_id': id.toEJson(), + 'name': name.toEJson(), + 'numCars': numCars.toEJson(), + }; + } + + static EJsonValue _toEJson(Train value) => value.toEJson(); + static Train _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + '_id': EJsonValue id, + 'name': EJsonValue name, + 'numCars': EJsonValue numCars, + } => + Train( + fromEJson(id), + fromEJson(name), + fromEJson(numCars), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Train._); - return const SchemaObject(ObjectType.realmObject, Train, 'Train', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Train, 'Train', [ SchemaProperty('id', RealmPropertyType.int, mapTo: '_id', primaryKey: true), SchemaProperty('name', RealmPropertyType.string), SchemaProperty('numCars', RealmPropertyType.int), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class Boat extends _Boat with RealmEntity, RealmObjectBase, RealmObject { @@ -138,15 +192,42 @@ class Boat extends _Boat with RealmEntity, RealmObjectBase, RealmObject { @override Boat freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + '_id': id.toEJson(), + 'name': name.toEJson(), + 'tonnage': tonnage.toEJson(), + }; + } + + static EJsonValue _toEJson(Boat value) => value.toEJson(); + static Boat _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + '_id': EJsonValue id, + 'name': EJsonValue name, + 'tonnage': EJsonValue tonnage, + } => + Boat( + fromEJson(id), + fromEJson(name), + fromEJson(tonnage), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Boat._); - return const SchemaObject(ObjectType.realmObject, Boat, 'Boat', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Boat, 'Boat', [ SchemaProperty('id', RealmPropertyType.int, mapTo: '_id', primaryKey: true), SchemaProperty('name', RealmPropertyType.string), SchemaProperty('tonnage', RealmPropertyType.int), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test/migrations_test.dart b/examples/dart/test/migrations_test.dart index 7d5356e59b9..99588b738fb 100644 --- a/examples/dart/test/migrations_test.dart +++ b/examples/dart/test/migrations_test.dart @@ -2,7 +2,7 @@ import 'package:test/test.dart'; import 'package:realm_dart/realm.dart'; import './schemas.dart' as Schemas; import './utils.dart'; -part 'migrations_test.g.dart'; +part 'migrations_test.realm.dart'; typedef PersonV1 = Schemas.Person; // old schema version typedef Car = Schemas.Car; diff --git a/examples/dart/test/migrations_test.g.dart b/examples/dart/test/migrations_test.realm.dart similarity index 65% rename from examples/dart/test/migrations_test.g.dart rename to examples/dart/test/migrations_test.realm.dart index f41ff5d5605..2de5882731b 100644 --- a/examples/dart/test/migrations_test.g.dart +++ b/examples/dart/test/migrations_test.realm.dart @@ -46,14 +46,41 @@ class PersonV2 extends _PersonV2 @override PersonV2 freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'fullName': fullName.toEJson(), + 'yearsSinceBirth': yearsSinceBirth.toEJson(), + }; + } + + static EJsonValue _toEJson(PersonV2 value) => value.toEJson(); + static PersonV2 _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'fullName': EJsonValue fullName, + 'yearsSinceBirth': EJsonValue yearsSinceBirth, + } => + PersonV2( + fromEJson(id), + fromEJson(fullName), + yearsSinceBirth: fromEJson(yearsSinceBirth), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(PersonV2._); - return const SchemaObject(ObjectType.realmObject, PersonV2, 'Person', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, PersonV2, 'Person', [ SchemaProperty('id', RealmPropertyType.string, primaryKey: true), SchemaProperty('fullName', RealmPropertyType.string), SchemaProperty('yearsSinceBirth', RealmPropertyType.int, optional: true), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test/open_flexible_sync_realm_test.dart b/examples/dart/test/open_flexible_sync_realm_test.dart index 4e2696fbae4..ce7766caf52 100644 --- a/examples/dart/test/open_flexible_sync_realm_test.dart +++ b/examples/dart/test/open_flexible_sync_realm_test.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'package:test/test.dart'; import 'package:realm_dart/realm.dart'; import './utils.dart'; -part 'open_flexible_sync_realm_test.g.dart'; +part 'open_flexible_sync_realm_test.realm.dart'; @RealmModel() class _Tricycle { diff --git a/examples/dart/test/open_flexible_sync_realm_test.g.dart b/examples/dart/test/open_flexible_sync_realm_test.realm.dart similarity index 64% rename from examples/dart/test/open_flexible_sync_realm_test.g.dart rename to examples/dart/test/open_flexible_sync_realm_test.realm.dart index 3f5bda7be9b..d2a66b24634 100644 --- a/examples/dart/test/open_flexible_sync_realm_test.g.dart +++ b/examples/dart/test/open_flexible_sync_realm_test.realm.dart @@ -36,16 +36,40 @@ class Tricycle extends _Tricycle @override Tricycle freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + '_id': id.toEJson(), + 'name': name.toEJson(), + }; + } + + static EJsonValue _toEJson(Tricycle value) => value.toEJson(); + static Tricycle _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + '_id': EJsonValue id, + 'name': EJsonValue name, + } => + Tricycle( + fromEJson(id), + fromEJson(name), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Tricycle._); - return const SchemaObject(ObjectType.realmObject, Tricycle, 'Tricycle', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Tricycle, 'Tricycle', [ SchemaProperty('id', RealmPropertyType.int, mapTo: '_id', primaryKey: true), SchemaProperty('name', RealmPropertyType.string), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { @@ -90,16 +114,46 @@ class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { @override Car freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + '_id': id.toEJson(), + 'make': make.toEJson(), + 'model': model.toEJson(), + 'miles': miles.toEJson(), + }; + } + + static EJsonValue _toEJson(Car value) => value.toEJson(); + static Car _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + '_id': EJsonValue id, + 'make': EJsonValue make, + 'model': EJsonValue model, + 'miles': EJsonValue miles, + } => + Car( + fromEJson(id), + fromEJson(make), + model: fromEJson(model), + miles: fromEJson(miles), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Car._); - return const SchemaObject(ObjectType.realmObject, Car, 'Car', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Car, 'Car', [ SchemaProperty('id', RealmPropertyType.objectid, mapTo: '_id', primaryKey: true), SchemaProperty('make', RealmPropertyType.string), SchemaProperty('model', RealmPropertyType.string, optional: true), SchemaProperty('miles', RealmPropertyType.int, optional: true), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test/quick_start_sync_test.dart b/examples/dart/test/quick_start_sync_test.dart index 4d54c9a023d..dde1829f807 100644 --- a/examples/dart/test/quick_start_sync_test.dart +++ b/examples/dart/test/quick_start_sync_test.dart @@ -1,6 +1,6 @@ import 'package:realm_dart/realm.dart'; -part 'quick_start_sync_test.g.dart'; +part 'quick_start_sync_test.realm.dart'; @RealmModel() class _Todo { diff --git a/examples/dart/test/quick_start_sync_test.g.dart b/examples/dart/test/quick_start_sync_test.realm.dart similarity index 69% rename from examples/dart/test/quick_start_sync_test.g.dart rename to examples/dart/test/quick_start_sync_test.realm.dart index bbed83d743c..795ca8f70d7 100644 --- a/examples/dart/test/quick_start_sync_test.g.dart +++ b/examples/dart/test/quick_start_sync_test.realm.dart @@ -56,16 +56,46 @@ class Todo extends _Todo with RealmEntity, RealmObjectBase, RealmObject { @override Todo freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + '_id': id.toEJson(), + 'isComplete': isComplete.toEJson(), + 'summary': summary.toEJson(), + 'owner_id': ownerId.toEJson(), + }; + } + + static EJsonValue _toEJson(Todo value) => value.toEJson(); + static Todo _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + '_id': EJsonValue id, + 'isComplete': EJsonValue isComplete, + 'summary': EJsonValue summary, + 'owner_id': EJsonValue ownerId, + } => + Todo( + fromEJson(id), + fromEJson(summary), + fromEJson(ownerId), + isComplete: fromEJson(isComplete), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Todo._); - return const SchemaObject(ObjectType.realmObject, Todo, 'Todo', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Todo, 'Todo', [ SchemaProperty('id', RealmPropertyType.objectid, mapTo: '_id', primaryKey: true), SchemaProperty('isComplete', RealmPropertyType.bool), SchemaProperty('summary', RealmPropertyType.string), SchemaProperty('ownerId', RealmPropertyType.string, mapTo: 'owner_id'), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test/react_to_changes_test.dart b/examples/dart/test/react_to_changes_test.dart index 3a053e125b4..1c27554f08d 100644 --- a/examples/dart/test/react_to_changes_test.dart +++ b/examples/dart/test/react_to_changes_test.dart @@ -3,7 +3,7 @@ import 'package:test/test.dart'; import 'package:realm_dart/realm.dart'; import './utils.dart'; -part 'react_to_changes_test.g.dart'; +part 'react_to_changes_test.realm.dart'; // :snippet-start: sample-data-models @RealmModel() diff --git a/examples/dart/test/react_to_changes_test.g.dart b/examples/dart/test/react_to_changes_test.realm.dart similarity index 66% rename from examples/dart/test/react_to_changes_test.g.dart rename to examples/dart/test/react_to_changes_test.realm.dart index b30e626ed7f..6e6fd856bd2 100644 --- a/examples/dart/test/react_to_changes_test.g.dart +++ b/examples/dart/test/react_to_changes_test.realm.dart @@ -50,17 +50,47 @@ class Character extends _Character @override Character freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'name': name.toEJson(), + 'species': species.toEJson(), + 'age': age.toEJson(), + }; + } + + static EJsonValue _toEJson(Character value) => value.toEJson(); + static Character _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'name': EJsonValue name, + 'species': EJsonValue species, + 'age': EJsonValue age, + } => + Character( + fromEJson(id), + fromEJson(name), + fromEJson(species), + fromEJson(age), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Character._); - return const SchemaObject(ObjectType.realmObject, Character, 'Character', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Character, 'Character', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('name', RealmPropertyType.string), SchemaProperty('species', RealmPropertyType.string), SchemaProperty('age', RealmPropertyType.int), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class Fellowship extends _Fellowship @@ -102,16 +132,42 @@ class Fellowship extends _Fellowship @override Fellowship freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'name': name.toEJson(), + 'members': members.toEJson(), + }; + } + + static EJsonValue _toEJson(Fellowship value) => value.toEJson(); + static Fellowship _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'name': EJsonValue name, + 'members': EJsonValue members, + } => + Fellowship( + fromEJson(id), + fromEJson(name), + members: fromEJson(members), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Fellowship._); - return const SchemaObject( - ObjectType.realmObject, Fellowship, 'Fellowship', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Fellowship, 'Fellowship', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('name', RealmPropertyType.string), SchemaProperty('members', RealmPropertyType.object, linkTarget: 'Character', collectionType: RealmCollectionType.list), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test/read_write_data_test.dart b/examples/dart/test/read_write_data_test.dart index 1a3ea8b50cd..aae537a162c 100644 --- a/examples/dart/test/read_write_data_test.dart +++ b/examples/dart/test/read_write_data_test.dart @@ -6,7 +6,7 @@ import '../bin/models/car.dart'; import 'utils.dart'; import 'dart:io'; -part 'read_write_data_test.g.dart'; +part 'read_write_data_test.realm.dart'; // :snippet-start: models @RealmModel() diff --git a/examples/dart/test/read_write_data_test.g.dart b/examples/dart/test/read_write_data_test.realm.dart similarity index 66% rename from examples/dart/test/read_write_data_test.g.dart rename to examples/dart/test/read_write_data_test.realm.dart index b7d66b843b9..c9182e2f3e9 100644 --- a/examples/dart/test/read_write_data_test.g.dart +++ b/examples/dart/test/read_write_data_test.realm.dart @@ -45,17 +45,44 @@ class Person extends _Person with RealmEntity, RealmObjectBase, RealmObject { @override Person freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'name': name.toEJson(), + 'hobbies': hobbies.toEJson(), + }; + } + + static EJsonValue _toEJson(Person value) => value.toEJson(); + static Person _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'name': EJsonValue name, + 'hobbies': EJsonValue hobbies, + } => + Person( + fromEJson(id), + fromEJson(name), + hobbies: fromEJson(hobbies), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Person._); - return const SchemaObject(ObjectType.realmObject, Person, 'Person', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Person, 'Person', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('name', RealmPropertyType.string), SchemaProperty('hobbies', RealmPropertyType.string, collectionType: RealmCollectionType.list), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class Team extends _Team with RealmEntity, RealmObjectBase, RealmObject { @@ -96,15 +123,42 @@ class Team extends _Team with RealmEntity, RealmObjectBase, RealmObject { @override Team freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'name': name.toEJson(), + 'crew': crew.toEJson(), + }; + } + + static EJsonValue _toEJson(Team value) => value.toEJson(); + static Team _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'name': EJsonValue name, + 'crew': EJsonValue crew, + } => + Team( + fromEJson(id), + fromEJson(name), + crew: fromEJson(crew), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Team._); - return const SchemaObject(ObjectType.realmObject, Team, 'Team', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Team, 'Team', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('name', RealmPropertyType.string), SchemaProperty('crew', RealmPropertyType.object, linkTarget: 'Person', collectionType: RealmCollectionType.list), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test/schemas.dart b/examples/dart/test/schemas.dart index ce3cda9128f..59c7a421558 100644 --- a/examples/dart/test/schemas.dart +++ b/examples/dart/test/schemas.dart @@ -1,7 +1,7 @@ // used in Define Realm Object Schema page import 'package:realm_dart/realm.dart'; // :snippet-start: part-directive -part 'schemas.g.dart'; +part 'schemas.realm.dart'; // :snippet-end: // :snippet-start: create-realm-model diff --git a/examples/dart/test/schemas.g.dart b/examples/dart/test/schemas.realm.dart similarity index 63% rename from examples/dart/test/schemas.g.dart rename to examples/dart/test/schemas.realm.dart index dbd6dcd33f7..7e19b088342 100644 --- a/examples/dart/test/schemas.g.dart +++ b/examples/dart/test/schemas.realm.dart @@ -49,17 +49,47 @@ class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { @override Car freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'make': make.toEJson(), + 'model': model.toEJson(), + 'miles': miles.toEJson(), + }; + } + + static EJsonValue _toEJson(Car value) => value.toEJson(); + static Car _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'make': EJsonValue make, + 'model': EJsonValue model, + 'miles': EJsonValue miles, + } => + Car( + fromEJson(id), + fromEJson(make), + model: fromEJson(model), + miles: fromEJson(miles), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Car._); - return const SchemaObject(ObjectType.realmObject, Car, 'Car', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Car, 'Car', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('make', RealmPropertyType.string), SchemaProperty('model', RealmPropertyType.string, optional: true), SchemaProperty('miles', RealmPropertyType.int, optional: true), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class SyncSchema extends _SyncSchema @@ -84,16 +114,36 @@ class SyncSchema extends _SyncSchema @override SyncSchema freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + '_id': id.toEJson(), + }; + } + + static EJsonValue _toEJson(SyncSchema value) => value.toEJson(); + static SyncSchema _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + '_id': EJsonValue id, + } => + SyncSchema( + fromEJson(id), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(SyncSchema._); - return const SchemaObject( - ObjectType.realmObject, SyncSchema, 'SyncSchema', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, SyncSchema, 'SyncSchema', [ SchemaProperty('id', RealmPropertyType.objectid, mapTo: '_id', primaryKey: true), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class Bike extends _Bike with RealmEntity, RealmObjectBase, RealmObject { @@ -132,17 +182,44 @@ class Bike extends _Bike with RealmEntity, RealmObjectBase, RealmObject { @override Bike freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'name': name.toEJson(), + 'owner': owner.toEJson(), + }; + } + + static EJsonValue _toEJson(Bike value) => value.toEJson(); + static Bike _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'name': EJsonValue name, + 'owner': EJsonValue owner, + } => + Bike( + fromEJson(id), + fromEJson(name), + owner: fromEJson(owner), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Bike._); - return const SchemaObject(ObjectType.realmObject, Bike, 'Bike', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Bike, 'Bike', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('name', RealmPropertyType.string), SchemaProperty('owner', RealmPropertyType.object, optional: true, linkTarget: 'Person'), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class Person extends _Person with RealmEntity, RealmObjectBase, RealmObject { @@ -189,17 +266,47 @@ class Person extends _Person with RealmEntity, RealmObjectBase, RealmObject { @override Person freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'firstName': firstName.toEJson(), + 'lastName': lastName.toEJson(), + 'age': age.toEJson(), + }; + } + + static EJsonValue _toEJson(Person value) => value.toEJson(); + static Person _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'firstName': EJsonValue firstName, + 'lastName': EJsonValue lastName, + 'age': EJsonValue age, + } => + Person( + fromEJson(id), + fromEJson(firstName), + fromEJson(lastName), + age: fromEJson(age), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Person._); - return const SchemaObject(ObjectType.realmObject, Person, 'Person', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Person, 'Person', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('firstName', RealmPropertyType.string), SchemaProperty('lastName', RealmPropertyType.string), SchemaProperty('age', RealmPropertyType.int, optional: true), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class Scooter extends _Scooter with RealmEntity, RealmObjectBase, RealmObject { @@ -238,17 +345,44 @@ class Scooter extends _Scooter with RealmEntity, RealmObjectBase, RealmObject { @override Scooter freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'name': name.toEJson(), + 'owner': owner.toEJson(), + }; + } + + static EJsonValue _toEJson(Scooter value) => value.toEJson(); + static Scooter _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'name': EJsonValue name, + 'owner': EJsonValue owner, + } => + Scooter( + fromEJson(id), + fromEJson(name), + owner: fromEJson(owner), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Scooter._); - return const SchemaObject(ObjectType.realmObject, Scooter, 'Scooter', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Scooter, 'Scooter', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('name', RealmPropertyType.string), SchemaProperty('owner', RealmPropertyType.object, optional: true, linkTarget: 'Person'), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class ScooterShop extends _ScooterShop @@ -290,16 +424,42 @@ class ScooterShop extends _ScooterShop @override ScooterShop freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'name': name.toEJson(), + 'scooters': scooters.toEJson(), + }; + } + + static EJsonValue _toEJson(ScooterShop value) => value.toEJson(); + static ScooterShop _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'name': EJsonValue name, + 'scooters': EJsonValue scooters, + } => + ScooterShop( + fromEJson(id), + fromEJson(name), + scooters: fromEJson(scooters), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(ScooterShop._); - return const SchemaObject( - ObjectType.realmObject, ScooterShop, 'ScooterShop', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, ScooterShop, 'ScooterShop', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('name', RealmPropertyType.string), SchemaProperty('scooters', RealmPropertyType.object, linkTarget: 'Scooter', collectionType: RealmCollectionType.list), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test/sync_multiple_processes_test.dart b/examples/dart/test/sync_multiple_processes_test.dart index f08c7ab9585..0203ec9bea3 100644 --- a/examples/dart/test/sync_multiple_processes_test.dart +++ b/examples/dart/test/sync_multiple_processes_test.dart @@ -7,7 +7,7 @@ import 'package:path/path.dart' as path; import './utils.dart'; import './open_flexible_sync_realm_test.dart'; -part 'sync_multiple_processes_test.g.dart'; +part 'sync_multiple_processes_test.realm.dart'; late App app; late User currentUser; diff --git a/examples/dart/test/sync_multiple_processes_test.g.dart b/examples/dart/test/sync_multiple_processes_test.realm.dart similarity index 61% rename from examples/dart/test/sync_multiple_processes_test.g.dart rename to examples/dart/test/sync_multiple_processes_test.realm.dart index 28322767681..bef93e3ba4d 100644 --- a/examples/dart/test/sync_multiple_processes_test.g.dart +++ b/examples/dart/test/sync_multiple_processes_test.realm.dart @@ -28,12 +28,33 @@ class Person extends _Person with RealmEntity, RealmObjectBase, RealmObject { @override Person freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'name': name.toEJson(), + }; + } + + static EJsonValue _toEJson(Person value) => value.toEJson(); + static Person _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'name': EJsonValue name, + } => + Person( + fromEJson(name), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Person._); - return const SchemaObject(ObjectType.realmObject, Person, 'Person', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Person, 'Person', [ SchemaProperty('name', RealmPropertyType.string, primaryKey: true), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test/task_project_models_test.dart b/examples/dart/test/task_project_models_test.dart index df6ae4aa1a7..047d7f0979c 100644 --- a/examples/dart/test/task_project_models_test.dart +++ b/examples/dart/test/task_project_models_test.dart @@ -2,9 +2,9 @@ import 'package:realm_dart/realm.dart'; // :snippet-start: task-project-models -part 'task_project_models_test.g.dart'; // :remove: +part 'task_project_models_test.realm.dart'; // :remove: // :uncomment-start: -// part 'models.g.dart'; +// part 'models.realm.dart'; // :uncomment-end: @RealmModel() diff --git a/examples/dart/test/task_project_models_test.g.dart b/examples/dart/test/task_project_models_test.realm.dart similarity index 68% rename from examples/dart/test/task_project_models_test.g.dart rename to examples/dart/test/task_project_models_test.realm.dart index 9545005ad61..4e58bbca248 100644 --- a/examples/dart/test/task_project_models_test.g.dart +++ b/examples/dart/test/task_project_models_test.realm.dart @@ -75,11 +75,44 @@ class Item extends _Item with RealmEntity, RealmObjectBase, RealmObject { @override Item freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + '_id': id.toEJson(), + 'name': name.toEJson(), + 'isComplete': isComplete.toEJson(), + 'assignee': assignee.toEJson(), + 'priority': priority.toEJson(), + 'progressMinutes': progressMinutes.toEJson(), + }; + } + + static EJsonValue _toEJson(Item value) => value.toEJson(); + static Item _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + '_id': EJsonValue id, + 'name': EJsonValue name, + 'isComplete': EJsonValue isComplete, + 'assignee': EJsonValue assignee, + 'priority': EJsonValue priority, + 'progressMinutes': EJsonValue progressMinutes, + } => + Item( + fromEJson(id), + fromEJson(name), + isComplete: fromEJson(isComplete), + assignee: fromEJson(assignee), + priority: fromEJson(priority), + progressMinutes: fromEJson(progressMinutes), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Item._); - return const SchemaObject(ObjectType.realmObject, Item, 'Item', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Item, 'Item', [ SchemaProperty('id', RealmPropertyType.objectid, mapTo: '_id', primaryKey: true), SchemaProperty('name', RealmPropertyType.string, @@ -89,20 +122,23 @@ class Item extends _Item with RealmEntity, RealmObjectBase, RealmObject { SchemaProperty('priority', RealmPropertyType.int), SchemaProperty('progressMinutes', RealmPropertyType.int), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } class Project extends _Project with RealmEntity, RealmObjectBase, RealmObject { Project( ObjectId id, String name, { - int? quota, Iterable items = const [], + int? quota, }) { RealmObjectBase.set(this, '_id', id); RealmObjectBase.set(this, 'name', name); - RealmObjectBase.set(this, 'quota', quota); RealmObjectBase.set>(this, 'items', RealmList(items)); + RealmObjectBase.set(this, 'quota', quota); } Project._(); @@ -136,11 +172,38 @@ class Project extends _Project with RealmEntity, RealmObjectBase, RealmObject { @override Project freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + '_id': id.toEJson(), + 'name': name.toEJson(), + 'items': items.toEJson(), + 'quota': quota.toEJson(), + }; + } + + static EJsonValue _toEJson(Project value) => value.toEJson(); + static Project _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + '_id': EJsonValue id, + 'name': EJsonValue name, + 'items': EJsonValue items, + 'quota': EJsonValue quota, + } => + Project( + fromEJson(id), + fromEJson(name), + items: fromEJson(items), + quota: fromEJson(quota), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Project._); - return const SchemaObject(ObjectType.realmObject, Project, 'Project', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Project, 'Project', [ SchemaProperty('id', RealmPropertyType.objectid, mapTo: '_id', primaryKey: true), SchemaProperty('name', RealmPropertyType.string), @@ -148,5 +211,8 @@ class Project extends _Project with RealmEntity, RealmObjectBase, RealmObject { linkTarget: 'Item', collectionType: RealmCollectionType.list), SchemaProperty('quota', RealmPropertyType.int, optional: true), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test/write_copy_test.dart b/examples/dart/test/write_copy_test.dart index 61f46cec4aa..a5748e06d03 100644 --- a/examples/dart/test/write_copy_test.dart +++ b/examples/dart/test/write_copy_test.dart @@ -2,7 +2,7 @@ import 'package:test/test.dart'; import 'package:realm_dart/realm.dart'; import 'utils.dart'; import 'dart:math'; -part 'write_copy_test.g.dart'; +part 'write_copy_test.realm.dart'; @RealmModel() class _Person { diff --git a/examples/dart/test/write_copy_test.g.dart b/examples/dart/test/write_copy_test.realm.dart similarity index 60% rename from examples/dart/test/write_copy_test.g.dart rename to examples/dart/test/write_copy_test.realm.dart index b78bcc11b39..aabbe576896 100644 --- a/examples/dart/test/write_copy_test.g.dart +++ b/examples/dart/test/write_copy_test.realm.dart @@ -28,12 +28,33 @@ class Person extends _Person with RealmEntity, RealmObjectBase, RealmObject { @override Person freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'name': name.toEJson(), + }; + } + + static EJsonValue _toEJson(Person value) => value.toEJson(); + static Person _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'name': EJsonValue name, + } => + Person( + fromEJson(name), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Person._); - return const SchemaObject(ObjectType.realmObject, Person, 'Person', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Person, 'Person', [ SchemaProperty('name', RealmPropertyType.string, primaryKey: true), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test/write_to_synced_realm_test.dart b/examples/dart/test/write_to_synced_realm_test.dart index cb905855b7c..4ea33e57037 100644 --- a/examples/dart/test/write_to_synced_realm_test.dart +++ b/examples/dart/test/write_to_synced_realm_test.dart @@ -3,7 +3,7 @@ import 'package:realm_dart/realm.dart'; import 'utils.dart'; -part 'write_to_synced_realm_test.g.dart'; +part 'write_to_synced_realm_test.realm.dart'; // NOTE: this is a unique App ID from the other Flutter tests // because these examples require unique sync permissions. diff --git a/examples/dart/test/write_to_synced_realm_test.g.dart b/examples/dart/test/write_to_synced_realm_test.realm.dart similarity index 68% rename from examples/dart/test/write_to_synced_realm_test.g.dart rename to examples/dart/test/write_to_synced_realm_test.realm.dart index 6cce17ca6e4..586d4d723be 100644 --- a/examples/dart/test/write_to_synced_realm_test.g.dart +++ b/examples/dart/test/write_to_synced_realm_test.realm.dart @@ -56,11 +56,41 @@ class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { @override Car freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + '_id': id.toEJson(), + 'ownerId': ownerId.toEJson(), + 'make': make.toEJson(), + 'model': model.toEJson(), + 'miles': miles.toEJson(), + }; + } + + static EJsonValue _toEJson(Car value) => value.toEJson(); + static Car _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + '_id': EJsonValue id, + 'ownerId': EJsonValue ownerId, + 'make': EJsonValue make, + 'model': EJsonValue model, + 'miles': EJsonValue miles, + } => + Car( + fromEJson(id), + fromEJson(ownerId), + fromEJson(make), + model: fromEJson(model), + miles: fromEJson(miles), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Car._); - return const SchemaObject(ObjectType.realmObject, Car, 'Car', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Car, 'Car', [ SchemaProperty('id', RealmPropertyType.objectid, mapTo: '_id', primaryKey: true), SchemaProperty('ownerId', RealmPropertyType.string), @@ -68,5 +98,8 @@ class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { SchemaProperty('model', RealmPropertyType.string, optional: true), SchemaProperty('miles', RealmPropertyType.int, optional: true), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/examples/dart/test_sdk_example/lib/schema.dart b/examples/dart/test_sdk_example/lib/schema.dart index e4708c1cb94..efcd4d950aa 100644 --- a/examples/dart/test_sdk_example/lib/schema.dart +++ b/examples/dart/test_sdk_example/lib/schema.dart @@ -1,6 +1,6 @@ import 'package:realm/realm.dart'; -part 'schema.g.dart'; +part 'schema.realm.dart'; @RealmModel() class _Car { diff --git a/examples/dart/test_sdk_example/lib/schema.g.dart b/examples/dart/test_sdk_example/lib/schema.g.dart deleted file mode 100644 index c5360d58f6e..00000000000 --- a/examples/dart/test_sdk_example/lib/schema.g.dart +++ /dev/null @@ -1,63 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'schema.dart'; - -// ************************************************************************** -// RealmObjectGenerator -// ************************************************************************** - -class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { - Car( - ObjectId id, - String make, { - String? model, - int? miles, - }) { - RealmObjectBase.set(this, '_id', id); - RealmObjectBase.set(this, 'make', make); - RealmObjectBase.set(this, 'model', model); - RealmObjectBase.set(this, 'miles', miles); - } - - Car._(); - - @override - ObjectId get id => RealmObjectBase.get(this, '_id') as ObjectId; - @override - set id(ObjectId value) => RealmObjectBase.set(this, '_id', value); - - @override - String get make => RealmObjectBase.get(this, 'make') as String; - @override - set make(String value) => RealmObjectBase.set(this, 'make', value); - - @override - String? get model => RealmObjectBase.get(this, 'model') as String?; - @override - set model(String? value) => RealmObjectBase.set(this, 'model', value); - - @override - int? get miles => RealmObjectBase.get(this, 'miles') as int?; - @override - set miles(int? value) => RealmObjectBase.set(this, 'miles', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - Car freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(Car._); - return const SchemaObject(ObjectType.realmObject, Car, 'Car', [ - SchemaProperty('id', RealmPropertyType.objectid, - mapTo: '_id', primaryKey: true), - SchemaProperty('make', RealmPropertyType.string), - SchemaProperty('model', RealmPropertyType.string, optional: true), - SchemaProperty('miles', RealmPropertyType.int, optional: true), - ]); - } -} diff --git a/examples/dart/test_sdk_example/lib/schema.realm.dart b/examples/dart/test_sdk_example/lib/schema.realm.dart new file mode 100644 index 00000000000..cf2e1f5bcb2 --- /dev/null +++ b/examples/dart/test_sdk_example/lib/schema.realm.dart @@ -0,0 +1,94 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'schema.dart'; + +// ************************************************************************** +// RealmObjectGenerator +// ************************************************************************** + +// ignore_for_file: type=lint +class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { + Car( + ObjectId id, + String make, { + String? model, + int? miles, + }) { + RealmObjectBase.set(this, '_id', id); + RealmObjectBase.set(this, 'make', make); + RealmObjectBase.set(this, 'model', model); + RealmObjectBase.set(this, 'miles', miles); + } + + Car._(); + + @override + ObjectId get id => RealmObjectBase.get(this, '_id') as ObjectId; + @override + set id(ObjectId value) => RealmObjectBase.set(this, '_id', value); + + @override + String get make => RealmObjectBase.get(this, 'make') as String; + @override + set make(String value) => RealmObjectBase.set(this, 'make', value); + + @override + String? get model => RealmObjectBase.get(this, 'model') as String?; + @override + set model(String? value) => RealmObjectBase.set(this, 'model', value); + + @override + int? get miles => RealmObjectBase.get(this, 'miles') as int?; + @override + set miles(int? value) => RealmObjectBase.set(this, 'miles', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + Car freeze() => RealmObjectBase.freezeObject(this); + + EJsonValue toEJson() { + return { + '_id': id.toEJson(), + 'make': make.toEJson(), + 'model': model.toEJson(), + 'miles': miles.toEJson(), + }; + } + + static EJsonValue _toEJson(Car value) => value.toEJson(); + static Car _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + '_id': EJsonValue id, + 'make': EJsonValue make, + 'model': EJsonValue model, + 'miles': EJsonValue miles, + } => + Car( + fromEJson(id), + fromEJson(make), + model: fromEJson(model), + miles: fromEJson(miles), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { + RealmObjectBase.registerFactory(Car._); + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Car, 'Car', [ + SchemaProperty('id', RealmPropertyType.objectid, + mapTo: '_id', primaryKey: true), + SchemaProperty('make', RealmPropertyType.string), + SchemaProperty('model', RealmPropertyType.string, optional: true), + SchemaProperty('miles', RealmPropertyType.int, optional: true), + ]); + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; +} diff --git a/examples/dart/test_sdk_example/pubspec.lock b/examples/dart/test_sdk_example/pubspec.lock new file mode 100644 index 00000000000..5a5acb86cdb --- /dev/null +++ b/examples/dart/test_sdk_example/pubspec.lock @@ -0,0 +1,629 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: eb376e9acf6938204f90eb3b1f00b578640d3188b4c8a8ec054f9f479af8d051 + url: "https://pub.dev" + source: hosted + version: "64.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: "69f54f967773f6c26c7dcb13e93d7ccee8b17a641689da39e878d5cf13b06893" + url: "https://pub.dev" + source: hosted + version: "6.2.0" + args: + dependency: transitive + description: + name: args + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + url: "https://pub.dev" + source: hosted + version: "2.4.2" + async: + dependency: transitive + description: + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + build: + dependency: transitive + description: + name: build + sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + build_cli_annotations: + dependency: transitive + description: + name: build_cli_annotations + sha256: b59d2769769efd6c9ff6d4c4cede0be115a566afc591705c2040b707534b1172 + url: "https://pub.dev" + source: hosted + version: "2.1.0" + build_config: + dependency: transitive + description: + name: build_config + sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 + url: "https://pub.dev" + source: hosted + version: "1.1.1" + build_daemon: + dependency: transitive + description: + name: build_daemon + sha256: "0343061a33da9c5810b2d6cee51945127d8f4c060b7fbdd9d54917f0a3feaaa1" + url: "https://pub.dev" + source: hosted + version: "4.0.1" + build_resolvers: + dependency: transitive + description: + name: build_resolvers + sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a" + url: "https://pub.dev" + source: hosted + version: "2.4.2" + build_runner: + dependency: transitive + description: + name: build_runner + sha256: "581bacf68f89ec8792f5e5a0b2c4decd1c948e97ce659dc783688c8a88fbec21" + url: "https://pub.dev" + source: hosted + version: "2.4.8" + build_runner_core: + dependency: transitive + description: + name: build_runner_core + sha256: "4ae8ffe5ac758da294ecf1802f2aff01558d8b1b00616aa7538ea9a8a5d50799" + url: "https://pub.dev" + source: hosted + version: "7.3.0" + built_collection: + dependency: transitive + description: + name: built_collection + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" + source: hosted + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + sha256: fedde275e0a6b798c3296963c5cd224e3e1b55d0e478d5b7e65e6b540f363a0e + url: "https://pub.dev" + source: hosted + version: "8.9.1" + cancellation_token: + dependency: transitive + description: + name: cancellation_token + sha256: ad95acf9d4b2f3563e25dc937f63587e46a70ce534e910b65d10e115490f1027 + url: "https://pub.dev" + source: hosted + version: "2.0.1" + characters: + dependency: transitive + description: + name: characters + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff + url: "https://pub.dev" + source: hosted + version: "2.0.3" + clock: + dependency: transitive + description: + name: clock + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" + source: hosted + version: "1.1.1" + code_builder: + dependency: transitive + description: + name: code_builder + sha256: f692079e25e7869c14132d39f223f8eec9830eb76131925143b2129c4bb01b37 + url: "https://pub.dev" + source: hosted + version: "4.10.0" + collection: + dependency: transitive + description: + name: collection + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.dev" + source: hosted + version: "1.18.0" + convert: + dependency: transitive + description: + name: convert + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" + source: hosted + version: "3.1.1" + crypto: + dependency: transitive + description: + name: crypto + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + url: "https://pub.dev" + source: hosted + version: "3.0.3" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d + url: "https://pub.dev" + source: hosted + version: "1.0.6" + dart_style: + dependency: transitive + description: + name: dart_style + sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9" + url: "https://pub.dev" + source: hosted + version: "2.3.6" + ejson: + dependency: transitive + description: + name: ejson + sha256: "2d69382ea016c5f38c9d966681b464ca23d5f594918d4cb7dfecf0a3dad31395" + url: "https://pub.dev" + source: hosted + version: "0.2.0-pre.1" + ejson_annotation: + dependency: transitive + description: + name: ejson_annotation + sha256: f14948884cf6d91e00c727d5ec6b2395bdcb511541aa7956e4e03b73cd089149 + url: "https://pub.dev" + source: hosted + version: "0.2.0-pre.1" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" + source: hosted + version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + file: + dependency: transitive + description: + name: file + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + url: "https://pub.dev" + source: hosted + version: "7.0.0" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 + url: "https://pub.dev" + source: hosted + version: "2.0.3" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" + url: "https://pub.dev" + source: hosted + version: "3.2.0" + glob: + dependency: transitive + description: + name: glob + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + graphs: + dependency: transitive + description: + name: graphs + sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 + url: "https://pub.dev" + source: hosted + version: "2.3.1" + http: + dependency: transitive + description: + name: http + sha256: a2bbf9d017fcced29139daa8ed2bba4ece450ab222871df93ca9eec6f80c34ba + url: "https://pub.dev" + source: hosted + version: "1.2.0" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" + url: "https://pub.dev" + source: hosted + version: "3.2.1" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" + source: hosted + version: "4.0.2" + io: + dependency: transitive + description: + name: io + sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + url: "https://pub.dev" + source: hosted + version: "1.0.4" + js: + dependency: transitive + description: + name: js + sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf + url: "https://pub.dev" + source: hosted + version: "0.7.1" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 + url: "https://pub.dev" + source: hosted + version: "4.8.1" + lints: + dependency: transitive + description: + name: lints + sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + logging: + dependency: transitive + description: + name: logging + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + url: "https://pub.dev" + source: hosted + version: "0.12.16" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + url: "https://pub.dev" + source: hosted + version: "0.5.0" + meta: + dependency: transitive + description: + name: meta + sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e + url: "https://pub.dev" + source: hosted + version: "1.10.0" + mime: + dependency: transitive + description: + name: mime + sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" + url: "https://pub.dev" + source: hosted + version: "1.0.5" + objectid: + dependency: transitive + description: + name: objectid + sha256: fd4a0b9fe07df25c446948b786e7ab2f363b2f461afa78632cab179d7613b9b3 + url: "https://pub.dev" + source: hosted + version: "3.0.0" + package_config: + dependency: transitive + description: + name: package_config + sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + path: + dependency: transitive + description: + name: path + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" + source: hosted + version: "1.8.3" + pool: + dependency: transitive + description: + name: pool + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" + source: hosted + version: "1.5.1" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367 + url: "https://pub.dev" + source: hosted + version: "1.2.3" + realm: + dependency: "direct main" + description: + name: realm + sha256: b3f8a2c2a362aefaafb65b9551733d15fd804587caac2c8b1fd1abe535918531 + url: "https://pub.dev" + source: hosted + version: "2.0.0" + realm_common: + dependency: transitive + description: + name: realm_common + sha256: c4c994217c3f1dafdb3e36b5e3c75c6f4719fd5bd64f64a5acb79a5c962c018f + url: "https://pub.dev" + source: hosted + version: "2.0.0" + realm_dart: + dependency: transitive + description: + name: realm_dart + sha256: "861b007dccf19ecfb1e7f47f2b0c246755b82c40e122d61fde18180dbbaf88a3" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + realm_generator: + dependency: transitive + description: + name: realm_generator + sha256: "3cad739d4491bc5b4ccdd184083fd58f6899e410d0acda7448b60261639e2735" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + sane_uuid: + dependency: transitive + description: + name: sane_uuid + sha256: "5e83f796a7d19d38d3ba3a940642998fdd8c4a4049be135ed25404e37f76a18c" + url: "https://pub.dev" + source: hosted + version: "1.0.0-alpha.5" + shelf: + dependency: transitive + description: + name: shelf + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 + url: "https://pub.dev" + source: hosted + version: "1.4.1" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" + url: "https://pub.dev" + source: hosted + version: "1.0.4" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_gen: + dependency: transitive + description: + name: source_gen + sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832" + url: "https://pub.dev" + source: hosted + version: "1.5.0" + source_span: + dependency: transitive + description: + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" + source: hosted + version: "1.10.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.dev" + source: hosted + version: "1.11.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" + source: hosted + version: "2.1.2" + stream_transform: + dependency: transitive + description: + name: stream_transform + sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + tar: + dependency: transitive + description: + name: tar + sha256: "1680219f82dfa81c8d0e76e849b7b34ea969c721f55a8ebd294a9a95e740dd42" + url: "https://pub.dev" + source: hosted + version: "1.0.3" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + url: "https://pub.dev" + source: hosted + version: "0.6.1" + timing: + dependency: transitive + description: + name: timing + sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + type_plus: + dependency: transitive + description: + name: type_plus + sha256: "2e33cfac2e129297d5874567bdf7587502ec359881e9318551e014d91b02f84a" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" + source: hosted + version: "1.3.2" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + watcher: + dependency: transitive + description: + name: watcher + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + web: + dependency: transitive + description: + name: web + sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 + url: "https://pub.dev" + source: hosted + version: "0.3.0" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b + url: "https://pub.dev" + source: hosted + version: "2.4.0" + yaml: + dependency: transitive + description: + name: yaml + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.dev" + source: hosted + version: "3.1.2" +sdks: + dart: ">=3.2.0 <4.0.0" + flutter: ">=3.10.0" diff --git a/examples/dart/test_sdk_example/pubspec.yaml b/examples/dart/test_sdk_example/pubspec.yaml index c7a86d21fe3..71d81c6d499 100644 --- a/examples/dart/test_sdk_example/pubspec.yaml +++ b/examples/dart/test_sdk_example/pubspec.yaml @@ -35,7 +35,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 - realm: ^1.5.0 + realm: ^2.0.0 dev_dependencies: flutter_test: diff --git a/examples/dart/test_sdk_example/test/car.dart b/examples/dart/test_sdk_example/test/car.dart index 481ee5db5da..0b57c6accf3 100644 --- a/examples/dart/test_sdk_example/test/car.dart +++ b/examples/dart/test_sdk_example/test/car.dart @@ -1,7 +1,7 @@ // :snippet-start: define-model-flutter import 'package:realm/realm.dart'; -part 'car.g.dart'; +part 'car.realm.dart'; @RealmModel() class _Car { diff --git a/examples/dart/test/car.g.dart b/examples/dart/test_sdk_example/test/car.realm.dart similarity index 67% rename from examples/dart/test/car.g.dart rename to examples/dart/test_sdk_example/test/car.realm.dart index c5a8bc69c28..87348828013 100644 --- a/examples/dart/test/car.g.dart +++ b/examples/dart/test_sdk_example/test/car.realm.dart @@ -49,15 +49,45 @@ class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { @override Car freeze() => RealmObjectBase.freezeObject(this); - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { + EJsonValue toEJson() { + return { + 'id': id.toEJson(), + 'make': make.toEJson(), + 'model': model.toEJson(), + 'miles': miles.toEJson(), + }; + } + + static EJsonValue _toEJson(Car value) => value.toEJson(); + static Car _fromEJson(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'make': EJsonValue make, + 'model': EJsonValue model, + 'miles': EJsonValue miles, + } => + Car( + fromEJson(id), + fromEJson(make), + model: fromEJson(model), + miles: fromEJson(miles), + ), + _ => raiseInvalidEJson(ejson), + }; + } + + static final schema = () { RealmObjectBase.registerFactory(Car._); - return const SchemaObject(ObjectType.realmObject, Car, 'Car', [ + register(_toEJson, _fromEJson); + return SchemaObject(ObjectType.realmObject, Car, 'Car', [ SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), SchemaProperty('make', RealmPropertyType.string), SchemaProperty('model', RealmPropertyType.string, optional: true), SchemaProperty('miles', RealmPropertyType.int, optional: true), ]); - } + }(); + + @override + SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema; } diff --git a/source/examples/generated/flutter/app_services_test.snippet.access-app-by-id.dart b/source/examples/generated/flutter/app_services_test.snippet.access-app-by-id.dart index 81f1b762819..b9862c6d36c 100644 --- a/source/examples/generated/flutter/app_services_test.snippet.access-app-by-id.dart +++ b/source/examples/generated/flutter/app_services_test.snippet.access-app-by-id.dart @@ -13,7 +13,7 @@ await Isolate.spawn((List args) async { try { final backgroundApp = App.getById(appId); - // ... Access App users + // ... Access App users final user = backgroundApp?.currentUser!; // Use the App and user as needed. diff --git a/source/examples/generated/flutter/car.snippet.define-model-dart.dart b/source/examples/generated/flutter/car.snippet.define-model-dart.dart index 6415dbd32d2..a3a44eb57d3 100644 --- a/source/examples/generated/flutter/car.snippet.define-model-dart.dart +++ b/source/examples/generated/flutter/car.snippet.define-model-dart.dart @@ -1,6 +1,6 @@ import 'package:realm_dart/realm.dart'; -part 'car.g.dart'; +part 'car.realm.dart'; @RealmModel() class _Car { diff --git a/source/examples/generated/flutter/car.snippet.define-model-flutter.dart b/source/examples/generated/flutter/car.snippet.define-model-flutter.dart index 8e238ab2521..b092c03d741 100644 --- a/source/examples/generated/flutter/car.snippet.define-model-flutter.dart +++ b/source/examples/generated/flutter/car.snippet.define-model-flutter.dart @@ -1,6 +1,6 @@ import 'package:realm/realm.dart'; -part 'car.g.dart'; +part 'car.realm.dart'; @RealmModel() class _Car { diff --git a/source/examples/generated/flutter/data_types_test.snippet.binary-model.dart b/source/examples/generated/flutter/data_types_test.snippet.binary-model.dart index 761dd57ec54..686bb766fec 100644 --- a/source/examples/generated/flutter/data_types_test.snippet.binary-model.dart +++ b/source/examples/generated/flutter/data_types_test.snippet.binary-model.dart @@ -2,6 +2,5 @@ class _BinaryExample { late String name; late Uint8List requiredBinaryProperty; - var defaultValueBinaryProperty = Uint8List(8); late Uint8List? nullableBinaryProperty; } diff --git a/source/examples/generated/flutter/data_types_test.snippet.data-types-example-model.dart b/source/examples/generated/flutter/data_types_test.snippet.data-types-example-model.dart index 357a9961cdc..754aedec470 100644 --- a/source/examples/generated/flutter/data_types_test.snippet.data-types-example-model.dart +++ b/source/examples/generated/flutter/data_types_test.snippet.data-types-example-model.dart @@ -1,17 +1,5 @@ -part 'car.g.dart'; - -@RealmModel() -class _Car { - @PrimaryKey() - late ObjectId id; - - String? licensePlate; - bool isElectric = false; - double milesDriven = 0; - late List attributes; - late _Person? owner; -} +part 'car.realm.dart'; // The generated `Address` class is an embedded object. @RealmModel(ObjectType.embeddedObject) @@ -33,3 +21,14 @@ class _Person { late _Address? address; // Must be nullable } +@RealmModel() +class _Car { + @PrimaryKey() + late ObjectId id; + + String? licensePlate; + bool isElectric = false; + double milesDriven = 0; + late List attributes; + late _Person? owner; +} diff --git a/source/examples/generated/flutter/schemas.snippet.part-directive.dart b/source/examples/generated/flutter/schemas.snippet.part-directive.dart index 1786bc37bb8..730fd18b335 100644 --- a/source/examples/generated/flutter/schemas.snippet.part-directive.dart +++ b/source/examples/generated/flutter/schemas.snippet.part-directive.dart @@ -1 +1 @@ -part 'schemas.g.dart'; +part 'schemas.realm.dart'; diff --git a/source/examples/generated/flutter/task_project_models_test.snippet.task-project-models.dart b/source/examples/generated/flutter/task_project_models_test.snippet.task-project-models.dart index 0cd22275485..3e11c3d7949 100644 --- a/source/examples/generated/flutter/task_project_models_test.snippet.task-project-models.dart +++ b/source/examples/generated/flutter/task_project_models_test.snippet.task-project-models.dart @@ -1,5 +1,5 @@ -part 'models.g.dart'; +part 'models.realm.dart'; @RealmModel() class _Item {