diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f858ecf24a..1ff6aa6119 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -580,7 +580,9 @@ jobs: - name: Delete generated files # exclude generator and ejson folders - run: find . -name "*.g.dart" -not -path "./generator/*" -not -path "./ejson/*" -delete + run: | + find . -name "*.g.dart" -not -path "./generator/*" -not -path "./ejson/*" -delete + find . -name "*.realm.dart" -not -path "./generator/*" -delete shell: bash - name: Run generator in realm-dart repo @@ -588,12 +590,6 @@ jobs: dart pub get dart run build_runner build --delete-conflicting-outputs - - name: Run generator in realm-dart/example - run: | - dart pub get - dart run build_runner build --delete-conflicting-outputs - working-directory: ./example/ - - name: Run generator in realm_flutter/example run: | dart pub get diff --git a/build.yaml b/build.yaml index a311ed69c3..f749077f5f 100644 --- a/build.yaml +++ b/build.yaml @@ -8,17 +8,34 @@ targets: generate_for: - lib/src/cli/metrics/flutter_info.dart - lib/src/cli/metrics/metrics.dart - realm_generator|realm_object_builder: + realm_generator: generate_for: include: - test/**.dart - example/**.dart + ejson_generator: + generate_for: + include: + - test/**.dart + - example/**.dart + source_gen|combining_builder: + options: + ignore_for_file: + - "type=lint" builders: realm_generator: import: "package:realm_generator/realm_generator.dart" builder_factories: ["generateRealmObjects"] - build_extensions: { ".dart": ["realm_objects.g.part"] } + build_extensions: { ".dart": [".realm.dart"] } + auto_apply: dependents + build_to: source + runs_before: ["ejson_generator|ejson_generator"] + ejson_generator: + import: "package:ejson_generator/ejson_generator.dart" + required_inputs: [".realm.dart"] + builder_factories: ["getEJsonGenerator"] + build_extensions: { ".dart": ["ejson.g.part"] } auto_apply: dependents build_to: cache applies_builders: ["source_gen|combining_builder"] diff --git a/ejson/packages/ejson/pubspec.yaml b/ejson/packages/ejson/pubspec.yaml index 95bdb1750e..982b1f429f 100644 --- a/ejson/packages/ejson/pubspec.yaml +++ b/ejson/packages/ejson/pubspec.yaml @@ -19,7 +19,7 @@ environment: sdk: ^3.0.1 dependencies: - collection: ^1.17.2 + collection: ^1.17.0 ejson_annotation: ^0.1.0 type_plus: ^2.0.0 diff --git a/ejson/packages/ejson_generator/lib/src/generator.dart b/ejson/packages/ejson_generator/lib/src/generator.dart index 3a79d1eb01..7fdb6ed076 100644 --- a/ejson/packages/ejson_generator/lib/src/generator.dart +++ b/ejson/packages/ejson_generator/lib/src/generator.dart @@ -83,7 +83,8 @@ class EJsonGenerator extends Generator { if (getter == null) { EJsonError.missingGetter.raise(); } - if (getter.returnType != p.type) { + if (!TypeChecker.fromStatic(p.type) + .isAssignableFromType(getter.returnType)) { EJsonError.mismatchedGetterType.raise(); } } diff --git a/ejson/packages/ejson_generator/pubspec.yaml b/ejson/packages/ejson_generator/pubspec.yaml index 8f5bd47807..6c35294a7c 100644 --- a/ejson/packages/ejson_generator/pubspec.yaml +++ b/ejson/packages/ejson_generator/pubspec.yaml @@ -21,11 +21,11 @@ environment: dependencies: analyzer: ^5.13.0 build: ^2.4.0 - collection: ^1.17.2 + collection: ^1.17.0 ejson_annotation: ^0.1.0 ejson_analyzer: ^0.1.0 source_gen: ^1.3.2 - source_span: ^1.10.0 + source_span: ^1.9.0 dev_dependencies: build_runner: ^2.4.4 diff --git a/example/bin/myapp.dart b/example/bin/myapp.dart index 3aef1615fe..07f5291ded 100644 --- a/example/bin/myapp.dart +++ b/example/bin/myapp.dart @@ -1,7 +1,11 @@ +import 'package:ejson_annotation/ejson_annotation.dart'; +import 'package:ejson/ejson.dart'; + import 'dart:async'; import 'dart:io'; import 'package:realm_dart/realm.dart'; +part 'myapp.realm.dart'; part 'myapp.g.dart'; @RealmModel() @@ -57,7 +61,7 @@ void main(List arguments) async { print("Getting all Tesla cars from the Realm."); var filteredCars = realm.all().query("make == 'Tesla'"); print('Found ${filteredCars.length} Tesla cars'); - + //allow changes event to fire await Future.delayed(Duration(milliseconds: 1)); diff --git a/example/bin/myapp.g.dart b/example/bin/myapp.g.dart index 6ea6cfb71a..8181aba3e5 100644 --- a/example/bin/myapp.g.dart +++ b/example/bin/myapp.g.dart @@ -1,117 +1,56 @@ // GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint + part of 'myapp.dart'; // ************************************************************************** -// RealmObjectGenerator +// EJsonGenerator // ************************************************************************** -class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { - static var _defaultsSet = false; - - Car( - String make, { - String? model, - int? kilometers = 500, - Person? owner, - }) { - if (!_defaultsSet) { - _defaultsSet = RealmObjectBase.setDefaults({ - 'kilometers': 500, - }); - } - RealmObjectBase.set(this, 'make', make); - RealmObjectBase.set(this, 'model', model); - RealmObjectBase.set(this, 'kilometers', kilometers); - RealmObjectBase.set(this, 'owner', owner); - } - - Car._(); - - @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 kilometers => RealmObjectBase.get(this, 'kilometers') as int?; - @override - set kilometers(int? value) => RealmObjectBase.set(this, 'kilometers', value); - - @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('make', RealmPropertyType.string), - SchemaProperty('model', RealmPropertyType.string, optional: true), - SchemaProperty('kilometers', RealmPropertyType.int, optional: true), - SchemaProperty('owner', RealmPropertyType.object, - optional: true, linkTarget: 'Person'), - ]); - } +EJsonValue encodeCar(Car value) { + return { + 'make': value.make.toEJson(), + 'model': value.model.toEJson(), + 'kilometers': value.kilometers.toEJson(), + 'owner': value.owner.toEJson() + }; } -class Person extends _Person with RealmEntity, RealmObjectBase, RealmObject { - static var _defaultsSet = false; - - Person( - String name, { - int age = 1, - }) { - if (!_defaultsSet) { - _defaultsSet = RealmObjectBase.setDefaults({ - 'age': 1, - }); - } - RealmObjectBase.set(this, 'name', name); - RealmObjectBase.set(this, 'age', age); - } - - Person._(); - - @override - String get name => RealmObjectBase.get(this, 'name') as String; - @override - set name(String value) => RealmObjectBase.set(this, 'name', value); +Car decodeCar(EJsonValue ejson) { + return switch (ejson) { + { + 'make': EJsonValue make, + 'model': EJsonValue model, + 'kilometers': EJsonValue kilometers, + 'owner': EJsonValue owner + } => + Car(make.to(), + model: model.to(), + kilometers: kilometers.to(), + owner: owner.to()), + _ => raiseInvalidEJson(ejson), + }; +} - @override - int get age => RealmObjectBase.get(this, 'age') as int; - @override - set age(int value) => RealmObjectBase.set(this, 'age', value); +extension CarEJsonEncoderExtension on Car { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeCar(this); +} - @override - Stream> get changes => - RealmObjectBase.getChanges(this); +EJsonValue encodePerson(Person value) { + return {'name': value.name.toEJson(), 'age': value.age.toEJson()}; +} - @override - Person freeze() => RealmObjectBase.freezeObject(this); +Person decodePerson(EJsonValue ejson) { + return switch (ejson) { + {'name': EJsonValue name, 'age': EJsonValue age} => + Person(name.to(), age: age.to()), + _ => raiseInvalidEJson(ejson), + }; +} - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(Person._); - return const SchemaObject(ObjectType.realmObject, Person, 'Person', [ - SchemaProperty('name', RealmPropertyType.string), - SchemaProperty('age', RealmPropertyType.int), - ]); - } +extension PersonEJsonEncoderExtension on Person { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodePerson(this); } diff --git a/example/bin/myapp.realm.dart b/example/bin/myapp.realm.dart new file mode 100644 index 0000000000..6aaaebb60e --- /dev/null +++ b/example/bin/myapp.realm.dart @@ -0,0 +1,120 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'myapp.dart'; + +// ************************************************************************** +// RealmObjectGenerator +// ************************************************************************** + +class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { + static var _defaultsSet = false; + + @ejson + Car( + String make, { + String? model, + int? kilometers = 500, + Person? owner, + }) { + if (!_defaultsSet) { + _defaultsSet = RealmObjectBase.setDefaults({ + 'kilometers': 500, + }); + } + RealmObjectBase.set(this, 'make', make); + RealmObjectBase.set(this, 'model', model); + RealmObjectBase.set(this, 'kilometers', kilometers); + RealmObjectBase.set(this, 'owner', owner); + } + + Car._(); + + @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 kilometers => RealmObjectBase.get(this, 'kilometers') as int?; + @override + set kilometers(int? value) => RealmObjectBase.set(this, 'kilometers', value); + + @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('make', RealmPropertyType.string), + SchemaProperty('model', RealmPropertyType.string, optional: true), + SchemaProperty('kilometers', RealmPropertyType.int, optional: true), + SchemaProperty('owner', RealmPropertyType.object, + optional: true, linkTarget: 'Person'), + ]); + } +} + +class Person extends _Person with RealmEntity, RealmObjectBase, RealmObject { + static var _defaultsSet = false; + + @ejson + Person( + String name, { + int age = 1, + }) { + if (!_defaultsSet) { + _defaultsSet = RealmObjectBase.setDefaults({ + 'age': 1, + }); + } + RealmObjectBase.set(this, 'name', name); + RealmObjectBase.set(this, 'age', age); + } + + Person._(); + + @override + String get name => RealmObjectBase.get(this, 'name') as String; + @override + set name(String value) => RealmObjectBase.set(this, 'name', value); + + @override + int get age => RealmObjectBase.get(this, 'age') as int; + @override + set age(int value) => RealmObjectBase.set(this, 'age', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + Person freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(Person._); + return const SchemaObject(ObjectType.realmObject, Person, 'Person', [ + SchemaProperty('name', RealmPropertyType.string), + SchemaProperty('age', RealmPropertyType.int), + ]); + } +} diff --git a/example/pubspec_overrides.yaml b/example/pubspec_overrides.yaml new file mode 100644 index 0000000000..c7751c4635 --- /dev/null +++ b/example/pubspec_overrides.yaml @@ -0,0 +1,9 @@ +dependency_overrides: + ejson: + path: ../ejson/packages/ejson + ejson_annotation: + path: ../ejson/packages/ejson_annotation + ejson_generator: + path: ../ejson/packages/ejson_generator + ejson_analyzer: + path: ../ejson/packages/ejson_analyzer \ No newline at end of file diff --git a/flutter/realm_flutter/build.yaml b/flutter/realm_flutter/build.yaml index 40b37f7e66..df1ca62c1e 100644 --- a/flutter/realm_flutter/build.yaml +++ b/flutter/realm_flutter/build.yaml @@ -1,21 +1,38 @@ targets: $default: + sources: + exclude: + - '**/ephemeral/**' + builders: - build_cli: + realm_generator: generate_for: - - lib/src/cli/**/**.dart - json_serializable: - generate_for: - - lib/src/cli/metrics/flutter_info.dart - - lib/src/cli/metrics/metrics.dart - realm_generator|realm_object_builder: + include: + - test/**.dart + - example/**.dart + ejson_generator: generate_for: include: + - test/**.dart + - example/**.dart + source_gen|combining_builder: + options: + ignore_for_file: + - "type=lint" + builders: realm_generator: import: "package:realm_generator/realm_generator.dart" builder_factories: ["generateRealmObjects"] - build_extensions: { ".dart": ["realm_objects.g.part"] } + build_extensions: { ".dart": [".realm.dart"] } + auto_apply: dependents + build_to: source + runs_before: ["ejson_generator|ejson_generator"] + ejson_generator: + import: "package:ejson_generator/ejson_generator.dart" + required_inputs: [".realm.dart"] + builder_factories: ["getEJsonGenerator"] + build_extensions: { ".dart": ["ejson.g.part"] } auto_apply: dependents build_to: cache applies_builders: ["source_gen|combining_builder"] diff --git a/flutter/realm_flutter/example/build.yaml b/flutter/realm_flutter/example/build.yaml deleted file mode 100644 index a9f94e2ef3..0000000000 --- a/flutter/realm_flutter/example/build.yaml +++ /dev/null @@ -1,5 +0,0 @@ -targets: - $default: - sources: - exclude: - - '**/ephemeral/**' diff --git a/flutter/realm_flutter/example/lib/main.dart b/flutter/realm_flutter/example/lib/main.dart index af79c864a7..d5bec6f447 100644 --- a/flutter/realm_flutter/example/lib/main.dart +++ b/flutter/realm_flutter/example/lib/main.dart @@ -17,11 +17,14 @@ //////////////////////////////////////////////////////////////////////////////// // ignore_for_file: avoid_print +import 'package:ejson_annotation/ejson_annotation.dart'; +import 'package:ejson/ejson.dart'; import 'dart:io'; import 'package:flutter/material.dart'; import 'package:realm/realm.dart'; +part 'main.realm.dart'; part 'main.g.dart'; @RealmModel() diff --git a/flutter/realm_flutter/example/lib/main.g.dart b/flutter/realm_flutter/example/lib/main.g.dart index f7627287f4..3a513404b4 100644 --- a/flutter/realm_flutter/example/lib/main.g.dart +++ b/flutter/realm_flutter/example/lib/main.g.dart @@ -3,115 +3,52 @@ part of 'main.dart'; // ************************************************************************** -// RealmObjectGenerator +// EJsonGenerator // ************************************************************************** -class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { - static var _defaultsSet = false; - - Car( - String make, { - String? model, - int? kilometers = 500, - Person? owner, - }) { - if (!_defaultsSet) { - _defaultsSet = RealmObjectBase.setDefaults({ - 'kilometers': 500, - }); - } - RealmObjectBase.set(this, 'make', make); - RealmObjectBase.set(this, 'model', model); - RealmObjectBase.set(this, 'kilometers', kilometers); - RealmObjectBase.set(this, 'owner', owner); - } - - Car._(); - - @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 kilometers => RealmObjectBase.get(this, 'kilometers') as int?; - @override - set kilometers(int? value) => RealmObjectBase.set(this, 'kilometers', value); - - @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('make', RealmPropertyType.string), - SchemaProperty('model', RealmPropertyType.string, optional: true), - SchemaProperty('kilometers', RealmPropertyType.int, optional: true), - SchemaProperty('owner', RealmPropertyType.object, - optional: true, linkTarget: 'Person'), - ]); - } +EJsonValue encodeCar(Car value) { + return { + 'make': value.make.toEJson(), + 'model': value.model.toEJson(), + 'kilometers': value.kilometers.toEJson(), + 'owner': value.owner.toEJson() + }; } -class Person extends _Person with RealmEntity, RealmObjectBase, RealmObject { - static var _defaultsSet = false; - - Person( - String name, { - int age = 1, - }) { - if (!_defaultsSet) { - _defaultsSet = RealmObjectBase.setDefaults({ - 'age': 1, - }); - } - RealmObjectBase.set(this, 'name', name); - RealmObjectBase.set(this, 'age', age); - } - - Person._(); - - @override - String get name => RealmObjectBase.get(this, 'name') as String; - @override - set name(String value) => RealmObjectBase.set(this, 'name', value); +Car decodeCar(EJsonValue ejson) { + return switch (ejson) { + { + 'make': EJsonValue make, + 'model': EJsonValue model, + 'kilometers': EJsonValue kilometers, + 'owner': EJsonValue owner + } => + Car(make.to(), + model: model.to(), + kilometers: kilometers.to(), + owner: owner.to()), + _ => raiseInvalidEJson(ejson), + }; +} - @override - int get age => RealmObjectBase.get(this, 'age') as int; - @override - set age(int value) => RealmObjectBase.set(this, 'age', value); +extension CarEJsonEncoderExtension on Car { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeCar(this); +} - @override - Stream> get changes => - RealmObjectBase.getChanges(this); +EJsonValue encodePerson(Person value) { + return {'name': value.name.toEJson(), 'age': value.age.toEJson()}; +} - @override - Person freeze() => RealmObjectBase.freezeObject(this); +Person decodePerson(EJsonValue ejson) { + return switch (ejson) { + {'name': EJsonValue name, 'age': EJsonValue age} => + Person(name.to(), age: age.to()), + _ => raiseInvalidEJson(ejson), + }; +} - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(Person._); - return const SchemaObject(ObjectType.realmObject, Person, 'Person', [ - SchemaProperty('name', RealmPropertyType.string), - SchemaProperty('age', RealmPropertyType.int), - ]); - } +extension PersonEJsonEncoderExtension on Person { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodePerson(this); } diff --git a/flutter/realm_flutter/example/lib/main.realm.dart b/flutter/realm_flutter/example/lib/main.realm.dart new file mode 100644 index 0000000000..ecb352ea2d --- /dev/null +++ b/flutter/realm_flutter/example/lib/main.realm.dart @@ -0,0 +1,120 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'main.dart'; + +// ************************************************************************** +// RealmObjectGenerator +// ************************************************************************** + +class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { + static var _defaultsSet = false; + + @ejson + Car( + String make, { + String? model, + int? kilometers = 500, + Person? owner, + }) { + if (!_defaultsSet) { + _defaultsSet = RealmObjectBase.setDefaults({ + 'kilometers': 500, + }); + } + RealmObjectBase.set(this, 'make', make); + RealmObjectBase.set(this, 'model', model); + RealmObjectBase.set(this, 'kilometers', kilometers); + RealmObjectBase.set(this, 'owner', owner); + } + + Car._(); + + @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 kilometers => RealmObjectBase.get(this, 'kilometers') as int?; + @override + set kilometers(int? value) => RealmObjectBase.set(this, 'kilometers', value); + + @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('make', RealmPropertyType.string), + SchemaProperty('model', RealmPropertyType.string, optional: true), + SchemaProperty('kilometers', RealmPropertyType.int, optional: true), + SchemaProperty('owner', RealmPropertyType.object, + optional: true, linkTarget: 'Person'), + ]); + } +} + +class Person extends _Person with RealmEntity, RealmObjectBase, RealmObject { + static var _defaultsSet = false; + + @ejson + Person( + String name, { + int age = 1, + }) { + if (!_defaultsSet) { + _defaultsSet = RealmObjectBase.setDefaults({ + 'age': 1, + }); + } + RealmObjectBase.set(this, 'name', name); + RealmObjectBase.set(this, 'age', age); + } + + Person._(); + + @override + String get name => RealmObjectBase.get(this, 'name') as String; + @override + set name(String value) => RealmObjectBase.set(this, 'name', value); + + @override + int get age => RealmObjectBase.get(this, 'age') as int; + @override + set age(int value) => RealmObjectBase.set(this, 'age', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + Person freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(Person._); + return const SchemaObject(ObjectType.realmObject, Person, 'Person', [ + SchemaProperty('name', RealmPropertyType.string), + SchemaProperty('age', RealmPropertyType.int), + ]); + } +} diff --git a/flutter/realm_flutter/example/pubspec_overrides.yaml b/flutter/realm_flutter/example/pubspec_overrides.yaml new file mode 100644 index 0000000000..9f1a33bcbd --- /dev/null +++ b/flutter/realm_flutter/example/pubspec_overrides.yaml @@ -0,0 +1,9 @@ +dependency_overrides: + ejson: + path: ../../../ejson/packages/ejson + ejson_annotation: + path: ../../../ejson/packages/ejson_annotation + ejson_generator: + path: ../../../ejson/packages/ejson_generator + ejson_analyzer: + path: ../../../ejson/packages/ejson_analyzer \ No newline at end of file diff --git a/flutter/realm_flutter/pubspec.yaml b/flutter/realm_flutter/pubspec.yaml index 84ae6adfda..7622227de1 100644 --- a/flutter/realm_flutter/pubspec.yaml +++ b/flutter/realm_flutter/pubspec.yaml @@ -19,6 +19,8 @@ dependencies: build_cli_annotations: ^2.0.0 collection: ^1.16.0 crypto: ^3.0.0 + ejson_annotation: ^0.1.0 + ejson: ^0.1.0 ffi: ^2.0.1 json_annotation: ^4.7.0 logging: ^1.2.0 @@ -39,8 +41,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - build_cli: ^2.1.3 - json_serializable: ^6.1.0 + ejson_generator: ^0.1.0 lints: ^2.0.0 flutter: diff --git a/flutter/realm_flutter/pubspec_overrides.yaml b/flutter/realm_flutter/pubspec_overrides.yaml new file mode 100644 index 0000000000..02d58cd92b --- /dev/null +++ b/flutter/realm_flutter/pubspec_overrides.yaml @@ -0,0 +1,9 @@ +dependency_overrides: + ejson: + path: ../../ejson/packages/ejson + ejson_annotation: + path: ../../ejson/packages/ejson_annotation + ejson_generator: + path: ../../ejson/packages/ejson_generator + ejson_analyzer: + path: ../../ejson/packages/ejson_analyzer \ No newline at end of file diff --git a/flutter/realm_flutter/tests/pubspec_overrides.yaml b/flutter/realm_flutter/tests/pubspec_overrides.yaml new file mode 100644 index 0000000000..9f1a33bcbd --- /dev/null +++ b/flutter/realm_flutter/tests/pubspec_overrides.yaml @@ -0,0 +1,9 @@ +dependency_overrides: + ejson: + path: ../../../ejson/packages/ejson + ejson_annotation: + path: ../../../ejson/packages/ejson_annotation + ejson_generator: + path: ../../../ejson/packages/ejson_generator + ejson_analyzer: + path: ../../../ejson/packages/ejson_analyzer \ No newline at end of file diff --git a/generator/build.yaml b/generator/build.yaml index b6b6c89f19..cdd711e82f 100644 --- a/generator/build.yaml +++ b/generator/build.yaml @@ -1,8 +1,8 @@ builders: - realm_object_builder: + realm_generator: import: "package:realm_generator/realm_generator.dart" builder_factories: ["generateRealmObjects"] - build_extensions: { ".dart": [".realm_objects.g.part"] } + build_extensions: { ".dart": [".realm.dart"] } auto_apply: dependents - build_to: cache - applies_builders: ["source_gen|combining_builder"] + build_to: source + runs_before: ["ejson_generator|ejson_generator"] \ No newline at end of file diff --git a/generator/lib/realm_generator.dart b/generator/lib/realm_generator.dart index 63b91d77ee..195de9b292 100644 --- a/generator/lib/realm_generator.dart +++ b/generator/lib/realm_generator.dart @@ -32,8 +32,12 @@ export 'src/error.dart'; /// @nodoc Builder generateRealmObjects([BuilderOptions? options]) { - return SharedPartBuilder( - [RealmObjectGenerator()], - 'realm_objects', - ); + return PartBuilder( + [RealmObjectGenerator()], + '.realm.dart', + header: ''' +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +''', + ); } diff --git a/generator/lib/src/realm_model_info.dart b/generator/lib/src/realm_model_info.dart index 6b63b9c197..cbf981afb4 100644 --- a/generator/lib/src/realm_model_info.dart +++ b/generator/lib/src/realm_model_info.dart @@ -42,6 +42,7 @@ class RealmModelInfo { yield ''; } + yield '@ejson'; yield '$name('; { final required = allSettable.where((f) => f.isRequired || f.isPrimaryKey); diff --git a/generator/test/error_test_data/bool_not_allowed_as_primary_key.dart b/generator/test/error_test_data/bool_not_allowed_as_primary_key.dart index 2293f67890..50b75fa557 100644 --- a/generator/test/error_test_data/bool_not_allowed_as_primary_key.dart +++ b/generator/test/error_test_data/bool_not_allowed_as_primary_key.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'bool_not_allowed_as_primary_key.g.dart'; +//part 'bool_not_allowed_as_primary_key.realm.dart'; @RealmModel() @MapTo('Bad') diff --git a/generator/test/error_test_data/defining_both_class_prefixes.dart b/generator/test/error_test_data/defining_both_class_prefixes.dart index 02766d3b29..42c97f4e4f 100644 --- a/generator/test/error_test_data/defining_both_class_prefixes.dart +++ b/generator/test/error_test_data/defining_both_class_prefixes.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'defining_both_class_prefixes.g.dart'; +//part 'defining_both_class_prefixes.realm.dart'; @RealmModel() class $Bad1 {} diff --git a/generator/test/error_test_data/double_primary_key.dart b/generator/test/error_test_data/double_primary_key.dart index 3d9969dece..b42454ecc7 100644 --- a/generator/test/error_test_data/double_primary_key.dart +++ b/generator/test/error_test_data/double_primary_key.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'double_primary_key.g.dart'; +//part 'double_primary_key.realm.dart'; @RealmModel() class _Bad { diff --git a/generator/test/error_test_data/embedded_object_primary_key.dart b/generator/test/error_test_data/embedded_object_primary_key.dart index 4998ceb28b..125ea64633 100644 --- a/generator/test/error_test_data/embedded_object_primary_key.dart +++ b/generator/test/error_test_data/embedded_object_primary_key.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'embedded_object_primary_key.g.dart'; +//part 'embedded_object_primary_key.realm.dart'; @RealmModel(ObjectType.embeddedObject) class _Bad { diff --git a/generator/test/error_test_data/illigal_constructor.dart b/generator/test/error_test_data/illigal_constructor.dart index 4d91a94212..88e47138d9 100644 --- a/generator/test/error_test_data/illigal_constructor.dart +++ b/generator/test/error_test_data/illigal_constructor.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'illigal_constructor.g.dart'; +//part 'illigal_constructor.realm.dart'; @RealmModel() class _Bad { diff --git a/generator/test/error_test_data/invalid_extend.dart b/generator/test/error_test_data/invalid_extend.dart index 797ae159bb..bcdb7be8cf 100644 --- a/generator/test/error_test_data/invalid_extend.dart +++ b/generator/test/error_test_data/invalid_extend.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'invalid_extend.g.dart'; +//part 'invalid_extend.realm.dart'; class Base {} diff --git a/generator/test/error_test_data/invalid_model_name_mapping.dart b/generator/test/error_test_data/invalid_model_name_mapping.dart index 867933b8b1..c152ba0204 100644 --- a/generator/test/error_test_data/invalid_model_name_mapping.dart +++ b/generator/test/error_test_data/invalid_model_name_mapping.dart @@ -1,5 +1,5 @@ import 'package:realm_common/realm_common.dart'; -//part 'invalid_model_name_mapping.g.dart'; +//part 'invalid_model_name_mapping.realm.dart'; const one = '1'; diff --git a/generator/test/error_test_data/invalid_model_name_prefix.dart b/generator/test/error_test_data/invalid_model_name_prefix.dart index aa8e38d7d1..0ebd59be15 100644 --- a/generator/test/error_test_data/invalid_model_name_prefix.dart +++ b/generator/test/error_test_data/invalid_model_name_prefix.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'invalid_model_name_prefix.g.dart'; +//part 'invalid_model_name_prefix.realm.dart'; @RealmModel() class Bad { diff --git a/generator/test/error_test_data/list_of_list_not_supported.dart b/generator/test/error_test_data/list_of_list_not_supported.dart index 6d7b3beaa7..0d219b6fda 100644 --- a/generator/test/error_test_data/list_of_list_not_supported.dart +++ b/generator/test/error_test_data/list_of_list_not_supported.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'list_of_list_not_supported.g.dart'; +//part 'list_of_list_not_supported.realm.dart'; @RealmModel() class _Bad { diff --git a/generator/test/error_test_data/long_class_name.dart b/generator/test/error_test_data/long_class_name.dart index 224ac0d355..320ad8e37c 100644 --- a/generator/test/error_test_data/long_class_name.dart +++ b/generator/test/error_test_data/long_class_name.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'long_class_name.g.dart'; +//part 'long_class_name.realm.dart'; @RealmModel() class _ThisIsAVeryLongClassNameSoLongInFactThatItRunsOverThe57CharacterLimit { diff --git a/generator/test/error_test_data/long_mapped_to_name.dart b/generator/test/error_test_data/long_mapped_to_name.dart index a14717123c..61a381ae3b 100644 --- a/generator/test/error_test_data/long_mapped_to_name.dart +++ b/generator/test/error_test_data/long_mapped_to_name.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'long_mapped_to_name.g.dart'; +//part 'long_mapped_to_name.realm.dart'; @RealmModel() @MapTo('ThisIsAVeryLongClassNameSoLongInFactThatItRunsOverThe57CharacterLimit') diff --git a/generator/test/error_test_data/map_unsupported.dart b/generator/test/error_test_data/map_unsupported.dart index d7b8eb47de..15cc6587d9 100644 --- a/generator/test/error_test_data/map_unsupported.dart +++ b/generator/test/error_test_data/map_unsupported.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'map_unsupported.g.dart'; +//part 'map_unsupported.realm.dart'; @RealmModel() class _Person { diff --git a/generator/test/error_test_data/missing_underscore.dart b/generator/test/error_test_data/missing_underscore.dart index 0f5e7f480c..bb539e4ab5 100644 --- a/generator/test/error_test_data/missing_underscore.dart +++ b/generator/test/error_test_data/missing_underscore.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -part 'missing_underscore.g.dart'; +part 'missing_underscore.realm.dart'; @RealmModel() class _Bad { diff --git a/generator/test/error_test_data/non_nullable_realm_object_reference.dart b/generator/test/error_test_data/non_nullable_realm_object_reference.dart index 66d69f827e..8c1d1eb1da 100644 --- a/generator/test/error_test_data/non_nullable_realm_object_reference.dart +++ b/generator/test/error_test_data/non_nullable_realm_object_reference.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'non_nullable_realm_object_reference.g.dart'; +//part 'non_nullable_realm_object_reference.realm.dart'; @RealmModel() class _Other {} diff --git a/generator/test/error_test_data/not_a_realm_type.dart b/generator/test/error_test_data/not_a_realm_type.dart index 3d7e0ae285..8bbcc24fda 100644 --- a/generator/test/error_test_data/not_a_realm_type.dart +++ b/generator/test/error_test_data/not_a_realm_type.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'not_a_realm_type.g.dart'; +//part 'not_a_realm_type.realm.dart'; class NonRealm {} diff --git a/generator/test/error_test_data/not_an_indexable_type.dart b/generator/test/error_test_data/not_an_indexable_type.dart index ed14dd35ed..83531f625d 100644 --- a/generator/test/error_test_data/not_an_indexable_type.dart +++ b/generator/test/error_test_data/not_an_indexable_type.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'not_an_indexable_type.g.dart'; +//part 'not_an_indexable_type.realm.dart'; @RealmModel() class _Bad { diff --git a/generator/test/error_test_data/nullable_list.dart b/generator/test/error_test_data/nullable_list.dart index 484c92c04f..51687a869c 100644 --- a/generator/test/error_test_data/nullable_list.dart +++ b/generator/test/error_test_data/nullable_list.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'nullable_list.g.dart'; +//part 'nullable_list.realm.dart'; @RealmModel() class _Bad { diff --git a/generator/test/error_test_data/nullable_list_elements.dart b/generator/test/error_test_data/nullable_list_elements.dart index a1d3f9a946..fe3d4ddc85 100644 --- a/generator/test/error_test_data/nullable_list_elements.dart +++ b/generator/test/error_test_data/nullable_list_elements.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'nullable_list_elements.g.dart'; +//part 'nullable_list_elements.realm.dart'; @RealmModel() class _Other {} diff --git a/generator/test/error_test_data/nullable_realm_value.dart b/generator/test/error_test_data/nullable_realm_value.dart index cc57f41c46..682b70865c 100644 --- a/generator/test/error_test_data/nullable_realm_value.dart +++ b/generator/test/error_test_data/nullable_realm_value.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'nullable_list.g.dart'; +//part 'nullable_list.realm.dart'; @RealmModel() class _Bad { diff --git a/generator/test/error_test_data/nullable_set.dart b/generator/test/error_test_data/nullable_set.dart index 792bb11f27..8b171a972b 100644 --- a/generator/test/error_test_data/nullable_set.dart +++ b/generator/test/error_test_data/nullable_set.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'nullable_set.g.dart'; +//part 'nullable_set.realm.dart'; @RealmModel() class _Bad { diff --git a/generator/test/error_test_data/repeated_class_annotations.dart b/generator/test/error_test_data/repeated_class_annotations.dart index c2f942fe4a..d96dc96b0b 100644 --- a/generator/test/error_test_data/repeated_class_annotations.dart +++ b/generator/test/error_test_data/repeated_class_annotations.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'repeated_class_annotations.g.dart'; +//part 'repeated_class_annotations.realm.dart'; @RealmModel() @MapTo('Bad') diff --git a/generator/test/error_test_data/repeated_field_annotations.dart b/generator/test/error_test_data/repeated_field_annotations.dart index 89bc8a5806..dc3648f9a2 100644 --- a/generator/test/error_test_data/repeated_field_annotations.dart +++ b/generator/test/error_test_data/repeated_field_annotations.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'repeated_field_annotations.g.dart'; +//part 'repeated_field_annotations.realm.dart'; @RealmModel() class _Bad { diff --git a/generator/test/error_test_data/unsupported_non_realm_type_set.dart b/generator/test/error_test_data/unsupported_non_realm_type_set.dart index d9d45e7d0c..c1f7eb0157 100644 --- a/generator/test/error_test_data/unsupported_non_realm_type_set.dart +++ b/generator/test/error_test_data/unsupported_non_realm_type_set.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'unsupported_non_realm_type_set.g.dart'; +//part 'unsupported_non_realm_type_set.realm.dart'; @RealmModel() class _Bad { diff --git a/generator/test/error_test_data/unsupported_realm_set_of_nullable_realmobject.dart b/generator/test/error_test_data/unsupported_realm_set_of_nullable_realmobject.dart index 1ca2250c06..94ab88498b 100644 --- a/generator/test/error_test_data/unsupported_realm_set_of_nullable_realmobject.dart +++ b/generator/test/error_test_data/unsupported_realm_set_of_nullable_realmobject.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'unsupported_realm_set_of_nullable_realmvalue.g.dart'; +//part 'unsupported_realm_set_of_nullable_realmvalue.realm.dart'; @RealmModel() class _Bad { diff --git a/generator/test/error_test_data/unsupported_realm_set_of_nullable_realmvalue.dart b/generator/test/error_test_data/unsupported_realm_set_of_nullable_realmvalue.dart index dbc9214cde..145eec2bcc 100644 --- a/generator/test/error_test_data/unsupported_realm_set_of_nullable_realmvalue.dart +++ b/generator/test/error_test_data/unsupported_realm_set_of_nullable_realmvalue.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'unsupported_realm_set_of_nullable_realmvalue.g.dart'; +//part 'unsupported_realm_set_of_nullable_realmvalue.realm.dart'; @RealmModel() class _Bad { diff --git a/generator/test/error_test_data/unsupported_realm_set_with_default_values.dart b/generator/test/error_test_data/unsupported_realm_set_with_default_values.dart index 656bc3bdcc..7cd3f588d4 100644 --- a/generator/test/error_test_data/unsupported_realm_set_with_default_values.dart +++ b/generator/test/error_test_data/unsupported_realm_set_with_default_values.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'unsupported_realm_set_of_nullable_realmvalue.g.dart'; +//part 'unsupported_realm_set_of_nullable_realmvalue.realm.dart'; @RealmModel() class _Bad { diff --git a/generator/test/good_test.dart b/generator/test/good_test.dart index bc0e3a6f91..ce161918fa 100644 --- a/generator/test/good_test.dart +++ b/generator/test/good_test.dart @@ -19,7 +19,7 @@ void main() { import 'package:realm_common/realm_common.dart'; import 'mapto.dart'; -part 'another_mapto.g.dart'; +part 'another_mapto.realm.dart'; @RealmModel() @MapTo('this is also mapped') @@ -31,7 +31,7 @@ class _MappedToo { '''; final outputs = await getExpectedFileAsset('$directory/mapto.dart', '$directory/mapto.expected'); - outputs['pkg|$directory/another_mapto.realm_objects.g.part'] = r''' + outputs['pkg|$directory/another_mapto.realm.dart'] = r''' // ************************************************************************** // RealmObjectGenerator // ************************************************************************** diff --git a/generator/test/good_test_data/indexable_types.dart b/generator/test/good_test_data/indexable_types.dart index 3aeb467eee..0fe6073ec5 100644 --- a/generator/test/good_test_data/indexable_types.dart +++ b/generator/test/good_test_data/indexable_types.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -// part 'indexable_types.g.dart'; +// part 'indexable_types.realm.dart'; @RealmModel() class _Indexable { diff --git a/generator/test/good_test_data/list_initialization.dart b/generator/test/good_test_data/list_initialization.dart index 66e6e8eb04..6287c6944f 100644 --- a/generator/test/good_test_data/list_initialization.dart +++ b/generator/test/good_test_data/list_initialization.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'list_initialization.g.dart'; +//part 'list_initialization.realm.dart'; @RealmModel() class _Person { diff --git a/generator/test/good_test_data/mapto.dart b/generator/test/good_test_data/mapto.dart index 3bdcbdb2c1..252ffc4fdd 100644 --- a/generator/test/good_test_data/mapto.dart +++ b/generator/test/good_test_data/mapto.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'mapto.g.dart'; +//part 'mapto.realm.dart'; @RealmModel() @MapTo('another type') diff --git a/generator/test/good_test_data/optional_argument.dart b/generator/test/good_test_data/optional_argument.dart index c5e674be8d..d32bdb68a5 100644 --- a/generator/test/good_test_data/optional_argument.dart +++ b/generator/test/good_test_data/optional_argument.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'optional_argument.g.dart'; +//part 'optional_argument.realm.dart'; @RealmModel() class _Person { diff --git a/generator/test/good_test_data/pinhole.dart b/generator/test/good_test_data/pinhole.dart index c0142c1cd2..7d83919ac0 100644 --- a/generator/test/good_test_data/pinhole.dart +++ b/generator/test/good_test_data/pinhole.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'pinhole.g.dart'; +//part 'pinhole.realm.dart'; @RealmModel() class _Foo { diff --git a/generator/test/good_test_data/required_argument.dart b/generator/test/good_test_data/required_argument.dart index 5610fe2bc3..1fcfba2a25 100644 --- a/generator/test/good_test_data/required_argument.dart +++ b/generator/test/good_test_data/required_argument.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'required_argument.g.dart'; +//part 'required_argument.realm.dart'; @RealmModel() class _Person { diff --git a/generator/test/good_test_data/required_argument_with_default_value.dart b/generator/test/good_test_data/required_argument_with_default_value.dart index 1cbd8cf22a..a428891a68 100644 --- a/generator/test/good_test_data/required_argument_with_default_value.dart +++ b/generator/test/good_test_data/required_argument_with_default_value.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'required_argument_with_default_value.g.dart'; +//part 'required_argument_with_default_value.realm.dart'; @RealmModel() class _Person { diff --git a/generator/test/good_test_data/user_defined_getter.dart b/generator/test/good_test_data/user_defined_getter.dart index 4794187367..6ddac7966e 100644 --- a/generator/test/good_test_data/user_defined_getter.dart +++ b/generator/test/good_test_data/user_defined_getter.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'user_defined_getter.g.dart'; +//part 'user_defined_getter.realm.dart'; @RealmModel() class _Person { diff --git a/generator/test/info_test_data/primary_key_always_indexed.dart b/generator/test/info_test_data/primary_key_always_indexed.dart index 12f8863b31..9503c4b7af 100644 --- a/generator/test/info_test_data/primary_key_always_indexed.dart +++ b/generator/test/info_test_data/primary_key_always_indexed.dart @@ -1,6 +1,6 @@ import 'package:realm_common/realm_common.dart'; -//part 'primary_key_always_indexed.g.dart'; +//part 'primary_key_always_indexed.realm.dart'; @RealmModel() class _Questionable { diff --git a/generator/test/test_util.dart b/generator/test/test_util.dart index 8f4a93de77..25c1536f98 100644 --- a/generator/test/test_util.dart +++ b/generator/test/test_util.dart @@ -65,8 +65,10 @@ class LinesEqualsMatcher extends Matcher { final result = _matches(actualLines, matchState); if (!result) { print("\nGenerator Failed\n"); - print("Expected ======================================================================================================\n$expected\n======================================================================================================\n"); - print("Actual ======================================================================================================\n$actualValue\n======================================================================================================\n"); + print( + "Expected ======================================================================================================\n$expected\n======================================================================================================\n"); + print( + "Actual ======================================================================================================\n$actualValue\n======================================================================================================\n"); } return result; @@ -76,21 +78,21 @@ class LinesEqualsMatcher extends Matcher { for (var i = 0; i < expectedLines.length - 1; i++) { if (i >= actualLines.length) { matchState["Error"] = "Difference at line ${i + 1}. \nExpected: ${expectedLines[i]}.\n Actual: empty"; - + return false; } - + if (expectedLines[i] != actualLines[i]) { matchState["Error"] = "Difference at line ${i + 1}. \nExpected: ${expectedLines[i]}.\n Actual: ${actualLines[i]}"; return false; } } - + if (actualLines.length != expectedLines.length) { matchState["Error"] = "Different number of lines. \nExpected: ${expectedLines.length}\nActual: ${actualLines.length}"; return false; } - + return true; } @@ -105,7 +107,7 @@ class LinesEqualsMatcher extends Matcher { } Future> getExpectedFileAsset(String inputFilePath, String expectedFilePath) async { - var key = 'pkg|${_path.setExtension(inputFilePath, '.realm_objects.g.part')}'; + var key = 'pkg|${_path.setExtension(inputFilePath, '.realm.dart')}'; String expectedContent = await readFileAsDartFormattedString(expectedFilePath); return {key: LinesEqualsMatcher(expectedContent)}; @@ -138,4 +140,4 @@ String _stringReplacements(String content) { String getTestName(String file) { return _path.basename(file); -} \ No newline at end of file +} diff --git a/lib/src/cli/archive/options.g.dart b/lib/src/cli/archive/options.g.dart index ef95f6072a..87728fd48a 100644 --- a/lib/src/cli/archive/options.g.dart +++ b/lib/src/cli/archive/options.g.dart @@ -1,5 +1,7 @@ // GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint + part of 'options.dart'; // ************************************************************************** diff --git a/lib/src/cli/atlas_apps/options.g.dart b/lib/src/cli/atlas_apps/options.g.dart index 10c4720f9b..db584b913c 100644 --- a/lib/src/cli/atlas_apps/options.g.dart +++ b/lib/src/cli/atlas_apps/options.g.dart @@ -1,5 +1,7 @@ // GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint + part of 'options.dart'; // ************************************************************************** diff --git a/lib/src/cli/extract/options.g.dart b/lib/src/cli/extract/options.g.dart index fcc07e1e78..fed7b292fb 100644 --- a/lib/src/cli/extract/options.g.dart +++ b/lib/src/cli/extract/options.g.dart @@ -1,5 +1,7 @@ // GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint + part of 'options.dart'; // ************************************************************************** diff --git a/lib/src/cli/generate/options.g.dart b/lib/src/cli/generate/options.g.dart index 2737cee261..6a681b0e64 100644 --- a/lib/src/cli/generate/options.g.dart +++ b/lib/src/cli/generate/options.g.dart @@ -1,5 +1,7 @@ // GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint + part of 'options.dart'; // ************************************************************************** diff --git a/lib/src/cli/install/options.g.dart b/lib/src/cli/install/options.g.dart index 0da5c69cf2..bcab43bc4d 100644 --- a/lib/src/cli/install/options.g.dart +++ b/lib/src/cli/install/options.g.dart @@ -1,5 +1,7 @@ // GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint + part of 'options.dart'; // ************************************************************************** diff --git a/lib/src/cli/metrics/flutter_info.g.dart b/lib/src/cli/metrics/flutter_info.g.dart index c737361bcf..8980cb5e00 100644 --- a/lib/src/cli/metrics/flutter_info.g.dart +++ b/lib/src/cli/metrics/flutter_info.g.dart @@ -1,5 +1,7 @@ // GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint + part of 'flutter_info.dart'; // ************************************************************************** diff --git a/lib/src/cli/metrics/metrics.g.dart b/lib/src/cli/metrics/metrics.g.dart index f479ed0ce4..6de2a3fcd7 100644 --- a/lib/src/cli/metrics/metrics.g.dart +++ b/lib/src/cli/metrics/metrics.g.dart @@ -1,5 +1,7 @@ // GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint + part of 'metrics.dart'; // ************************************************************************** diff --git a/lib/src/cli/metrics/options.g.dart b/lib/src/cli/metrics/options.g.dart index 9559e04388..5ada75fbdc 100644 --- a/lib/src/cli/metrics/options.g.dart +++ b/lib/src/cli/metrics/options.g.dart @@ -1,5 +1,7 @@ // GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint + part of 'options.dart'; // ************************************************************************** diff --git a/pubspec.yaml b/pubspec.yaml index 71d4f65a21..1ca1868195 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,6 +16,8 @@ dependencies: build_cli_annotations: ^2.0.0 collection: ^1.16.0 crypto: ^3.0.0 + ejson_annotation: ^0.1.0 + ejson: ^0.1.0 ffi: ^2.0.1 json_annotation: ^4.7.0 logging: ^1.2.0 @@ -35,6 +37,7 @@ dependencies: dev_dependencies: build_cli: ^2.2.0 + ejson_generator: ^0.1.0 json_serializable: ^6.3.1 lints: ^2.0.0 test: ^1.14.3 diff --git a/pubspec_overrides.yaml b/pubspec_overrides.yaml new file mode 100644 index 0000000000..3ed2e09ab6 --- /dev/null +++ b/pubspec_overrides.yaml @@ -0,0 +1,9 @@ +dependency_overrides: + ejson: + path: ./ejson/packages/ejson + ejson_annotation: + path: ./ejson/packages/ejson_annotation + ejson_generator: + path: ./ejson/packages/ejson_generator + ejson_analyzer: + path: ./ejson/packages/ejson_analyzer \ No newline at end of file diff --git a/test/backlinks_test.dart b/test/backlinks_test.dart index bba22afeae..fa8d9a466d 100644 --- a/test/backlinks_test.dart +++ b/test/backlinks_test.dart @@ -16,11 +16,15 @@ // //////////////////////////////////////////////////////////////////////////////// +import 'package:ejson_annotation/ejson_annotation.dart'; +import 'package:ejson/ejson.dart'; + import 'package:test/expect.dart'; import '../lib/realm.dart'; import 'test.dart'; +part 'backlinks_test.realm.dart'; part 'backlinks_test.g.dart'; @RealmModel() diff --git a/test/backlinks_test.g.dart b/test/backlinks_test.g.dart index 906a026a14..c0a0728468 100644 --- a/test/backlinks_test.g.dart +++ b/test/backlinks_test.g.dart @@ -1,128 +1,53 @@ // GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint + part of 'backlinks_test.dart'; // ************************************************************************** -// RealmObjectGenerator +// EJsonGenerator // ************************************************************************** -class Source extends _Source with RealmEntity, RealmObjectBase, RealmObject { - static var _defaultsSet = false; - - Source({ - String name = 'source', - Target? oneTarget, - Iterable manyTargets = const [], - }) { - if (!_defaultsSet) { - _defaultsSet = RealmObjectBase.setDefaults({ - 'name': 'source', - }); - } - RealmObjectBase.set(this, 'name', name); - RealmObjectBase.set(this, 'et mål', oneTarget); - RealmObjectBase.set>( - this, 'manyTargets', RealmList(manyTargets)); - } - - Source._(); - - @override - String get name => RealmObjectBase.get(this, 'name') as String; - @override - set name(String value) => RealmObjectBase.set(this, 'name', value); - - @override - Target? get oneTarget => - RealmObjectBase.get(this, 'et mål') as Target?; - @override - set oneTarget(covariant Target? value) => - RealmObjectBase.set(this, 'et mål', value); - - @override - RealmList get manyTargets => - RealmObjectBase.get(this, 'manyTargets') as RealmList; - @override - set manyTargets(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - Source freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(Source._); - return const SchemaObject(ObjectType.realmObject, Source, 'Source', [ - SchemaProperty('name', RealmPropertyType.string), - SchemaProperty('oneTarget', RealmPropertyType.object, - mapTo: 'et mål', optional: true, linkTarget: 'Target'), - SchemaProperty('manyTargets', RealmPropertyType.object, - linkTarget: 'Target', collectionType: RealmCollectionType.list), - ]); - } +EJsonValue encodeSource(Source value) { + return { + 'name': value.name.toEJson(), + 'oneTarget': value.oneTarget.toEJson(), + 'manyTargets': value.manyTargets.toEJson() + }; } -class Target extends _Target with RealmEntity, RealmObjectBase, RealmObject { - static var _defaultsSet = false; - - Target({ - String name = 'target', - }) { - if (!_defaultsSet) { - _defaultsSet = RealmObjectBase.setDefaults({ - 'name': 'target', - }); - } - RealmObjectBase.set(this, 'name', name); - } - - Target._(); - - @override - String get name => RealmObjectBase.get(this, 'name') as String; - @override - set name(String value) => RealmObjectBase.set(this, 'name', value); - - @override - RealmResults get oneToMany => - RealmObjectBase.get(this, 'oneToMany') as RealmResults; - @override - set oneToMany(covariant RealmResults value) => - throw RealmUnsupportedSetError(); +Source decodeSource(EJsonValue ejson) { + return switch (ejson) { + { + 'name': EJsonValue name, + 'oneTarget': EJsonValue oneTarget, + 'manyTargets': EJsonValue manyTargets + } => + Source( + name: name.to(), + oneTarget: oneTarget.to(), + manyTargets: manyTargets.to>()), + _ => raiseInvalidEJson(ejson), + }; +} - @override - RealmResults get manyToMany => - RealmObjectBase.get(this, 'manyToMany') as RealmResults; - @override - set manyToMany(covariant RealmResults value) => - throw RealmUnsupportedSetError(); +extension SourceEJsonEncoderExtension on Source { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeSource(this); +} - @override - Stream> get changes => - RealmObjectBase.getChanges(this); +EJsonValue encodeTarget(Target value) { + return {'name': value.name.toEJson()}; +} - @override - Target freeze() => RealmObjectBase.freezeObject(this); +Target decodeTarget(EJsonValue ejson) { + return switch (ejson) { + {'name': EJsonValue name} => Target(name: name.to()), + _ => raiseInvalidEJson(ejson), + }; +} - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(Target._); - return const SchemaObject(ObjectType.realmObject, Target, 'Target', [ - SchemaProperty('name', RealmPropertyType.string), - SchemaProperty('oneToMany', RealmPropertyType.linkingObjects, - linkOriginProperty: 'et mål', - collectionType: RealmCollectionType.list, - linkTarget: 'Source'), - SchemaProperty('manyToMany', RealmPropertyType.linkingObjects, - linkOriginProperty: 'manyTargets', - collectionType: RealmCollectionType.list, - linkTarget: 'Source'), - ]); - } +extension TargetEJsonEncoderExtension on Target { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeTarget(this); } diff --git a/test/backlinks_test.realm.dart b/test/backlinks_test.realm.dart new file mode 100644 index 0000000000..099905317f --- /dev/null +++ b/test/backlinks_test.realm.dart @@ -0,0 +1,131 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'backlinks_test.dart'; + +// ************************************************************************** +// RealmObjectGenerator +// ************************************************************************** + +class Source extends _Source with RealmEntity, RealmObjectBase, RealmObject { + static var _defaultsSet = false; + + @ejson + Source({ + String name = 'source', + Target? oneTarget, + Iterable manyTargets = const [], + }) { + if (!_defaultsSet) { + _defaultsSet = RealmObjectBase.setDefaults({ + 'name': 'source', + }); + } + RealmObjectBase.set(this, 'name', name); + RealmObjectBase.set(this, 'et mål', oneTarget); + RealmObjectBase.set>( + this, 'manyTargets', RealmList(manyTargets)); + } + + Source._(); + + @override + String get name => RealmObjectBase.get(this, 'name') as String; + @override + set name(String value) => RealmObjectBase.set(this, 'name', value); + + @override + Target? get oneTarget => + RealmObjectBase.get(this, 'et mål') as Target?; + @override + set oneTarget(covariant Target? value) => + RealmObjectBase.set(this, 'et mål', value); + + @override + RealmList get manyTargets => + RealmObjectBase.get(this, 'manyTargets') as RealmList; + @override + set manyTargets(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + Source freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(Source._); + return const SchemaObject(ObjectType.realmObject, Source, 'Source', [ + SchemaProperty('name', RealmPropertyType.string), + SchemaProperty('oneTarget', RealmPropertyType.object, + mapTo: 'et mål', optional: true, linkTarget: 'Target'), + SchemaProperty('manyTargets', RealmPropertyType.object, + linkTarget: 'Target', collectionType: RealmCollectionType.list), + ]); + } +} + +class Target extends _Target with RealmEntity, RealmObjectBase, RealmObject { + static var _defaultsSet = false; + + @ejson + Target({ + String name = 'target', + }) { + if (!_defaultsSet) { + _defaultsSet = RealmObjectBase.setDefaults({ + 'name': 'target', + }); + } + RealmObjectBase.set(this, 'name', name); + } + + Target._(); + + @override + String get name => RealmObjectBase.get(this, 'name') as String; + @override + set name(String value) => RealmObjectBase.set(this, 'name', value); + + @override + RealmResults get oneToMany => + RealmObjectBase.get(this, 'oneToMany') as RealmResults; + @override + set oneToMany(covariant RealmResults value) => + throw RealmUnsupportedSetError(); + + @override + RealmResults get manyToMany => + RealmObjectBase.get(this, 'manyToMany') as RealmResults; + @override + set manyToMany(covariant RealmResults value) => + throw RealmUnsupportedSetError(); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + Target freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(Target._); + return const SchemaObject(ObjectType.realmObject, Target, 'Target', [ + SchemaProperty('name', RealmPropertyType.string), + SchemaProperty('oneToMany', RealmPropertyType.linkingObjects, + linkOriginProperty: 'et mål', + collectionType: RealmCollectionType.list, + linkTarget: 'Source'), + SchemaProperty('manyToMany', RealmPropertyType.linkingObjects, + linkOriginProperty: 'manyTargets', + collectionType: RealmCollectionType.list, + linkTarget: 'Source'), + ]); + } +} diff --git a/test/configuration_test.dart b/test/configuration_test.dart index 93b80494fd..37cb51eafc 100644 --- a/test/configuration_test.dart +++ b/test/configuration_test.dart @@ -17,6 +17,7 @@ //////////////////////////////////////////////////////////////////////////////// // ignore_for_file: unused_local_variable + import 'dart:io'; import 'dart:math'; import 'package:test/test.dart' hide test, throws; diff --git a/test/indexed_test.dart b/test/indexed_test.dart index c3b7e44d82..1560505131 100644 --- a/test/indexed_test.dart +++ b/test/indexed_test.dart @@ -16,6 +16,9 @@ // //////////////////////////////////////////////////////////////////////////////// +import 'package:ejson_annotation/ejson_annotation.dart'; +import 'package:ejson/ejson.dart'; + import 'dart:math'; import 'dart:typed_data'; @@ -26,6 +29,7 @@ import 'test.dart'; import '../lib/realm.dart'; +part 'indexed_test.realm.dart'; part 'indexed_test.g.dart'; // Don't import our own test.dart here. It will break AOT compilation. diff --git a/test/indexed_test.g.dart b/test/indexed_test.g.dart index 18d108a859..31a1e94ca1 100644 --- a/test/indexed_test.g.dart +++ b/test/indexed_test.g.dart @@ -1,218 +1,73 @@ // GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint + part of 'indexed_test.dart'; // ************************************************************************** -// RealmObjectGenerator +// EJsonGenerator // ************************************************************************** -class WithIndexes extends _WithIndexes - with RealmEntity, RealmObjectBase, RealmObject { - WithIndexes( - int anInt, - bool aBool, - String string, - DateTime timestamp, - ObjectId objectId, - Uuid uuid, - ) { - RealmObjectBase.set(this, 'anInt', anInt); - RealmObjectBase.set(this, 'aBool', aBool); - RealmObjectBase.set(this, 'string', string); - RealmObjectBase.set(this, 'timestamp', timestamp); - RealmObjectBase.set(this, 'objectId', objectId); - RealmObjectBase.set(this, 'uuid', uuid); - } - - WithIndexes._(); - - @override - int get anInt => RealmObjectBase.get(this, 'anInt') as int; - @override - set anInt(int value) => RealmObjectBase.set(this, 'anInt', value); - - @override - bool get aBool => RealmObjectBase.get(this, 'aBool') as bool; - @override - set aBool(bool value) => RealmObjectBase.set(this, 'aBool', value); - - @override - String get string => RealmObjectBase.get(this, 'string') as String; - @override - set string(String value) => RealmObjectBase.set(this, 'string', value); - - @override - DateTime get timestamp => - RealmObjectBase.get(this, 'timestamp') as DateTime; - @override - set timestamp(DateTime value) => - RealmObjectBase.set(this, 'timestamp', value); - - @override - ObjectId get objectId => - RealmObjectBase.get(this, 'objectId') as ObjectId; - @override - set objectId(ObjectId value) => RealmObjectBase.set(this, 'objectId', value); - - @override - Uuid get uuid => RealmObjectBase.get(this, 'uuid') as Uuid; - @override - set uuid(Uuid value) => RealmObjectBase.set(this, 'uuid', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - WithIndexes freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(WithIndexes._); - return const SchemaObject( - ObjectType.realmObject, WithIndexes, 'WithIndexes', [ - SchemaProperty('anInt', RealmPropertyType.int, - indexType: RealmIndexType.regular), - SchemaProperty('aBool', RealmPropertyType.bool, - indexType: RealmIndexType.regular), - SchemaProperty('string', RealmPropertyType.string, - indexType: RealmIndexType.regular), - SchemaProperty('timestamp', RealmPropertyType.timestamp, - indexType: RealmIndexType.regular), - SchemaProperty('objectId', RealmPropertyType.objectid, - indexType: RealmIndexType.regular), - SchemaProperty('uuid', RealmPropertyType.uuid, - indexType: RealmIndexType.regular), - ]); - } +EJsonValue encodeWithIndexes(WithIndexes value) { + return { + 'anInt': value.anInt.toEJson(), + 'aBool': value.aBool.toEJson(), + 'string': value.string.toEJson(), + 'timestamp': value.timestamp.toEJson(), + 'objectId': value.objectId.toEJson(), + 'uuid': value.uuid.toEJson() + }; } -class NoIndexes extends _NoIndexes - with RealmEntity, RealmObjectBase, RealmObject { - NoIndexes( - int anInt, - bool aBool, - String string, - DateTime timestamp, - ObjectId objectId, - Uuid uuid, - ) { - RealmObjectBase.set(this, 'anInt', anInt); - RealmObjectBase.set(this, 'aBool', aBool); - RealmObjectBase.set(this, 'string', string); - RealmObjectBase.set(this, 'timestamp', timestamp); - RealmObjectBase.set(this, 'objectId', objectId); - RealmObjectBase.set(this, 'uuid', uuid); - } - - NoIndexes._(); - - @override - int get anInt => RealmObjectBase.get(this, 'anInt') as int; - @override - set anInt(int value) => RealmObjectBase.set(this, 'anInt', value); - - @override - bool get aBool => RealmObjectBase.get(this, 'aBool') as bool; - @override - set aBool(bool value) => RealmObjectBase.set(this, 'aBool', value); - - @override - String get string => RealmObjectBase.get(this, 'string') as String; - @override - set string(String value) => RealmObjectBase.set(this, 'string', value); - - @override - DateTime get timestamp => - RealmObjectBase.get(this, 'timestamp') as DateTime; - @override - set timestamp(DateTime value) => - RealmObjectBase.set(this, 'timestamp', value); - - @override - ObjectId get objectId => - RealmObjectBase.get(this, 'objectId') as ObjectId; - @override - set objectId(ObjectId value) => RealmObjectBase.set(this, 'objectId', value); - - @override - Uuid get uuid => RealmObjectBase.get(this, 'uuid') as Uuid; - @override - set uuid(Uuid value) => RealmObjectBase.set(this, 'uuid', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - NoIndexes freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(NoIndexes._); - return const SchemaObject(ObjectType.realmObject, NoIndexes, 'NoIndexes', [ - SchemaProperty('anInt', RealmPropertyType.int), - SchemaProperty('aBool', RealmPropertyType.bool), - SchemaProperty('string', RealmPropertyType.string), - SchemaProperty('timestamp', RealmPropertyType.timestamp), - SchemaProperty('objectId', RealmPropertyType.objectid), - SchemaProperty('uuid', RealmPropertyType.uuid), - ]); - } +WithIndexes decodeWithIndexes(EJsonValue ejson) { + return switch (ejson) { + { + 'anInt': EJsonValue anInt, + 'aBool': EJsonValue aBool, + 'string': EJsonValue string, + 'timestamp': EJsonValue timestamp, + 'objectId': EJsonValue objectId, + 'uuid': EJsonValue uuid + } => + WithIndexes(anInt.to(), aBool.to(), string.to(), + timestamp.to(), objectId.to(), uuid.to()), + _ => raiseInvalidEJson(ejson), + }; } -class ObjectWithFTSIndex extends _ObjectWithFTSIndex - with RealmEntity, RealmObjectBase, RealmObject { - ObjectWithFTSIndex( - String title, - String summary, { - String? nullableSummary, - }) { - RealmObjectBase.set(this, 'title', title); - RealmObjectBase.set(this, 'summary', summary); - RealmObjectBase.set(this, 'nullableSummary', nullableSummary); - } - - ObjectWithFTSIndex._(); - - @override - String get title => RealmObjectBase.get(this, 'title') as String; - @override - set title(String value) => RealmObjectBase.set(this, 'title', value); - - @override - String get summary => RealmObjectBase.get(this, 'summary') as String; - @override - set summary(String value) => RealmObjectBase.set(this, 'summary', value); - - @override - String? get nullableSummary => - RealmObjectBase.get(this, 'nullableSummary') as String?; - @override - set nullableSummary(String? value) => - RealmObjectBase.set(this, 'nullableSummary', value); +extension WithIndexesEJsonEncoderExtension on WithIndexes { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeWithIndexes(this); +} - @override - Stream> get changes => - RealmObjectBase.getChanges(this); +EJsonValue encodeNoIndexes(NoIndexes value) { + return { + 'anInt': value.anInt.toEJson(), + 'aBool': value.aBool.toEJson(), + 'string': value.string.toEJson(), + 'timestamp': value.timestamp.toEJson(), + 'objectId': value.objectId.toEJson(), + 'uuid': value.uuid.toEJson() + }; +} - @override - ObjectWithFTSIndex freeze() => - RealmObjectBase.freezeObject(this); +NoIndexes decodeNoIndexes(EJsonValue ejson) { + return switch (ejson) { + { + 'anInt': EJsonValue anInt, + 'aBool': EJsonValue aBool, + 'string': EJsonValue string, + 'timestamp': EJsonValue timestamp, + 'objectId': EJsonValue objectId, + 'uuid': EJsonValue uuid + } => + NoIndexes(anInt.to(), aBool.to(), string.to(), + timestamp.to(), objectId.to(), uuid.to()), + _ => raiseInvalidEJson(ejson), + }; +} - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(ObjectWithFTSIndex._); - return const SchemaObject( - ObjectType.realmObject, ObjectWithFTSIndex, 'ObjectWithFTSIndex', [ - SchemaProperty('title', RealmPropertyType.string), - SchemaProperty('summary', RealmPropertyType.string, - indexType: RealmIndexType.fullText), - SchemaProperty('nullableSummary', RealmPropertyType.string, - optional: true, indexType: RealmIndexType.fullText), - ]); - } +extension NoIndexesEJsonEncoderExtension on NoIndexes { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeNoIndexes(this); } diff --git a/test/indexed_test.realm.dart b/test/indexed_test.realm.dart new file mode 100644 index 0000000000..326d5a863d --- /dev/null +++ b/test/indexed_test.realm.dart @@ -0,0 +1,222 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'indexed_test.dart'; + +// ************************************************************************** +// RealmObjectGenerator +// ************************************************************************** + +class WithIndexes extends _WithIndexes + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + WithIndexes( + int anInt, + bool aBool, + String string, + DateTime timestamp, + ObjectId objectId, + Uuid uuid, + ) { + RealmObjectBase.set(this, 'anInt', anInt); + RealmObjectBase.set(this, 'aBool', aBool); + RealmObjectBase.set(this, 'string', string); + RealmObjectBase.set(this, 'timestamp', timestamp); + RealmObjectBase.set(this, 'objectId', objectId); + RealmObjectBase.set(this, 'uuid', uuid); + } + + WithIndexes._(); + + @override + int get anInt => RealmObjectBase.get(this, 'anInt') as int; + @override + set anInt(int value) => RealmObjectBase.set(this, 'anInt', value); + + @override + bool get aBool => RealmObjectBase.get(this, 'aBool') as bool; + @override + set aBool(bool value) => RealmObjectBase.set(this, 'aBool', value); + + @override + String get string => RealmObjectBase.get(this, 'string') as String; + @override + set string(String value) => RealmObjectBase.set(this, 'string', value); + + @override + DateTime get timestamp => + RealmObjectBase.get(this, 'timestamp') as DateTime; + @override + set timestamp(DateTime value) => + RealmObjectBase.set(this, 'timestamp', value); + + @override + ObjectId get objectId => + RealmObjectBase.get(this, 'objectId') as ObjectId; + @override + set objectId(ObjectId value) => RealmObjectBase.set(this, 'objectId', value); + + @override + Uuid get uuid => RealmObjectBase.get(this, 'uuid') as Uuid; + @override + set uuid(Uuid value) => RealmObjectBase.set(this, 'uuid', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + WithIndexes freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(WithIndexes._); + return const SchemaObject( + ObjectType.realmObject, WithIndexes, 'WithIndexes', [ + SchemaProperty('anInt', RealmPropertyType.int, + indexType: RealmIndexType.regular), + SchemaProperty('aBool', RealmPropertyType.bool, + indexType: RealmIndexType.regular), + SchemaProperty('string', RealmPropertyType.string, + indexType: RealmIndexType.regular), + SchemaProperty('timestamp', RealmPropertyType.timestamp, + indexType: RealmIndexType.regular), + SchemaProperty('objectId', RealmPropertyType.objectid, + indexType: RealmIndexType.regular), + SchemaProperty('uuid', RealmPropertyType.uuid, + indexType: RealmIndexType.regular), + ]); + } +} + +class NoIndexes extends _NoIndexes + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + NoIndexes( + int anInt, + bool aBool, + String string, + DateTime timestamp, + ObjectId objectId, + Uuid uuid, + ) { + RealmObjectBase.set(this, 'anInt', anInt); + RealmObjectBase.set(this, 'aBool', aBool); + RealmObjectBase.set(this, 'string', string); + RealmObjectBase.set(this, 'timestamp', timestamp); + RealmObjectBase.set(this, 'objectId', objectId); + RealmObjectBase.set(this, 'uuid', uuid); + } + + NoIndexes._(); + + @override + int get anInt => RealmObjectBase.get(this, 'anInt') as int; + @override + set anInt(int value) => RealmObjectBase.set(this, 'anInt', value); + + @override + bool get aBool => RealmObjectBase.get(this, 'aBool') as bool; + @override + set aBool(bool value) => RealmObjectBase.set(this, 'aBool', value); + + @override + String get string => RealmObjectBase.get(this, 'string') as String; + @override + set string(String value) => RealmObjectBase.set(this, 'string', value); + + @override + DateTime get timestamp => + RealmObjectBase.get(this, 'timestamp') as DateTime; + @override + set timestamp(DateTime value) => + RealmObjectBase.set(this, 'timestamp', value); + + @override + ObjectId get objectId => + RealmObjectBase.get(this, 'objectId') as ObjectId; + @override + set objectId(ObjectId value) => RealmObjectBase.set(this, 'objectId', value); + + @override + Uuid get uuid => RealmObjectBase.get(this, 'uuid') as Uuid; + @override + set uuid(Uuid value) => RealmObjectBase.set(this, 'uuid', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + NoIndexes freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(NoIndexes._); + return const SchemaObject(ObjectType.realmObject, NoIndexes, 'NoIndexes', [ + SchemaProperty('anInt', RealmPropertyType.int), + SchemaProperty('aBool', RealmPropertyType.bool), + SchemaProperty('string', RealmPropertyType.string), + SchemaProperty('timestamp', RealmPropertyType.timestamp), + SchemaProperty('objectId', RealmPropertyType.objectid), + SchemaProperty('uuid', RealmPropertyType.uuid), + ]); + } +} + +class ObjectWithFTSIndex extends _ObjectWithFTSIndex + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + ObjectWithFTSIndex( + String title, + String summary, { + String? nullableSummary, + }) { + RealmObjectBase.set(this, 'title', title); + RealmObjectBase.set(this, 'summary', summary); + RealmObjectBase.set(this, 'nullableSummary', nullableSummary); + } + + ObjectWithFTSIndex._(); + + @override + String get title => RealmObjectBase.get(this, 'title') as String; + @override + set title(String value) => RealmObjectBase.set(this, 'title', value); + + @override + String get summary => RealmObjectBase.get(this, 'summary') as String; + @override + set summary(String value) => RealmObjectBase.set(this, 'summary', value); + + @override + String? get nullableSummary => + RealmObjectBase.get(this, 'nullableSummary') as String?; + @override + set nullableSummary(String? value) => + RealmObjectBase.set(this, 'nullableSummary', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + ObjectWithFTSIndex freeze() => + RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(ObjectWithFTSIndex._); + return const SchemaObject( + ObjectType.realmObject, ObjectWithFTSIndex, 'ObjectWithFTSIndex', [ + SchemaProperty('title', RealmPropertyType.string), + SchemaProperty('summary', RealmPropertyType.string, + indexType: RealmIndexType.fullText), + SchemaProperty('nullableSummary', RealmPropertyType.string, + optional: true, indexType: RealmIndexType.fullText), + ]); + } +} diff --git a/test/migration_test.dart b/test/migration_test.dart index 15b7449e3b..a05b0d8311 100644 --- a/test/migration_test.dart +++ b/test/migration_test.dart @@ -18,6 +18,9 @@ // ignore_for_file: unused_local_variable +import 'package:ejson_annotation/ejson_annotation.dart'; +import 'package:ejson/ejson.dart'; + import 'dart:async'; import 'package:test/test.dart' hide test, throws; import '../lib/realm.dart'; @@ -26,6 +29,7 @@ import '../lib/src/results.dart'; import '../lib/src/realm_object.dart'; import '../lib/src/list.dart'; +part 'migration_test.realm.dart'; part 'migration_test.g.dart'; @RealmModel() diff --git a/test/migration_test.g.dart b/test/migration_test.g.dart index 7cb6db9e91..3ddbda1448 100644 --- a/test/migration_test.g.dart +++ b/test/migration_test.g.dart @@ -1,198 +1,95 @@ // GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint + part of 'migration_test.dart'; // ************************************************************************** -// RealmObjectGenerator +// EJsonGenerator // ************************************************************************** -class PersonIntName extends _PersonIntName - with RealmEntity, RealmObjectBase, RealmObject { - PersonIntName( - int name, - ) { - RealmObjectBase.set(this, 'name', name); - } - - PersonIntName._(); - - @override - int get name => RealmObjectBase.get(this, 'name') as int; - @override - set name(int value) => RealmObjectBase.set(this, 'name', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - PersonIntName freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(PersonIntName._); - return const SchemaObject(ObjectType.realmObject, PersonIntName, 'Person', [ - SchemaProperty('name', RealmPropertyType.int), - ]); - } +EJsonValue encodePersonIntName(PersonIntName value) { + return {'name': value.name.toEJson()}; +} + +PersonIntName decodePersonIntName(EJsonValue ejson) { + return switch (ejson) { + {'name': EJsonValue name} => PersonIntName(name.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension PersonIntNameEJsonEncoderExtension on PersonIntName { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodePersonIntName(this); +} + +EJsonValue encodeStudentV1(StudentV1 value) { + return { + 'name': value.name.toEJson(), + 'yearOfBirth': value.yearOfBirth.toEJson() + }; +} + +StudentV1 decodeStudentV1(EJsonValue ejson) { + return switch (ejson) { + {'name': EJsonValue name, 'yearOfBirth': EJsonValue yearOfBirth} => + StudentV1(name.to(), yearOfBirth: yearOfBirth.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension StudentV1EJsonEncoderExtension on StudentV1 { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeStudentV1(this); +} + +EJsonValue encodeMyObjectWithTypo(MyObjectWithTypo value) { + return {'nmae': value.nmae.toEJson(), 'vlaue': value.vlaue.toEJson()}; +} + +MyObjectWithTypo decodeMyObjectWithTypo(EJsonValue ejson) { + return switch (ejson) { + {'nmae': EJsonValue nmae, 'vlaue': EJsonValue vlaue} => + MyObjectWithTypo(nmae.to(), vlaue.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension MyObjectWithTypoEJsonEncoderExtension on MyObjectWithTypo { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeMyObjectWithTypo(this); +} + +EJsonValue encodeMyObjectWithoutTypo(MyObjectWithoutTypo value) { + return {'name': value.name.toEJson(), 'value': value.value.toEJson()}; +} + +MyObjectWithoutTypo decodeMyObjectWithoutTypo(EJsonValue ejson) { + return switch (ejson) { + {'name': EJsonValue name, 'value': EJsonValue value} => + MyObjectWithoutTypo(name.to(), value.to()), + _ => raiseInvalidEJson(ejson), + }; } -class StudentV1 extends _StudentV1 - with RealmEntity, RealmObjectBase, RealmObject { - StudentV1( - String name, { - int? yearOfBirth, - }) { - RealmObjectBase.set(this, 'name', name); - RealmObjectBase.set(this, 'yearOfBirth', yearOfBirth); - } - - StudentV1._(); - - @override - String get name => RealmObjectBase.get(this, 'name') as String; - @override - set name(String value) => RealmObjectBase.set(this, 'name', value); - - @override - int? get yearOfBirth => RealmObjectBase.get(this, 'yearOfBirth') as int?; - @override - set yearOfBirth(int? value) => - RealmObjectBase.set(this, 'yearOfBirth', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - StudentV1 freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(StudentV1._); - return const SchemaObject(ObjectType.realmObject, StudentV1, 'Student', [ - SchemaProperty('name', RealmPropertyType.string, primaryKey: true), - SchemaProperty('yearOfBirth', RealmPropertyType.int, optional: true), - ]); - } +extension MyObjectWithoutTypoEJsonEncoderExtension on MyObjectWithoutTypo { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeMyObjectWithoutTypo(this); } -class MyObjectWithTypo extends _MyObjectWithTypo - with RealmEntity, RealmObjectBase, RealmObject { - MyObjectWithTypo( - String nmae, - int vlaue, - ) { - RealmObjectBase.set(this, 'nmae', nmae); - RealmObjectBase.set(this, 'vlaue', vlaue); - } - - MyObjectWithTypo._(); - - @override - String get nmae => RealmObjectBase.get(this, 'nmae') as String; - @override - set nmae(String value) => RealmObjectBase.set(this, 'nmae', value); - - @override - int get vlaue => RealmObjectBase.get(this, 'vlaue') as int; - @override - set vlaue(int value) => RealmObjectBase.set(this, 'vlaue', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - MyObjectWithTypo freeze() => - RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(MyObjectWithTypo._); - return const SchemaObject( - ObjectType.realmObject, MyObjectWithTypo, 'MyObject', [ - SchemaProperty('nmae', RealmPropertyType.string), - SchemaProperty('vlaue', RealmPropertyType.int), - ]); - } +EJsonValue encodeMyObjectWithoutValue(MyObjectWithoutValue value) { + return {'name': value.name.toEJson()}; } -class MyObjectWithoutTypo extends _MyObjectWithoutTypo - with RealmEntity, RealmObjectBase, RealmObject { - MyObjectWithoutTypo( - String name, - int value, - ) { - RealmObjectBase.set(this, 'name', name); - RealmObjectBase.set(this, 'value', value); - } - - MyObjectWithoutTypo._(); - - @override - String get name => RealmObjectBase.get(this, 'name') as String; - @override - set name(String value) => RealmObjectBase.set(this, 'name', value); - - @override - int get value => RealmObjectBase.get(this, 'value') as int; - @override - set value(int value) => RealmObjectBase.set(this, 'value', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - MyObjectWithoutTypo freeze() => - RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(MyObjectWithoutTypo._); - return const SchemaObject( - ObjectType.realmObject, MyObjectWithoutTypo, 'MyObject', [ - SchemaProperty('name', RealmPropertyType.string), - SchemaProperty('value', RealmPropertyType.int), - ]); - } +MyObjectWithoutValue decodeMyObjectWithoutValue(EJsonValue ejson) { + return switch (ejson) { + {'name': EJsonValue name} => MyObjectWithoutValue(name.to()), + _ => raiseInvalidEJson(ejson), + }; } -class MyObjectWithoutValue extends _MyObjectWithoutValue - with RealmEntity, RealmObjectBase, RealmObject { - MyObjectWithoutValue( - String name, - ) { - RealmObjectBase.set(this, 'name', name); - } - - MyObjectWithoutValue._(); - - @override - String get name => RealmObjectBase.get(this, 'name') as String; - @override - set name(String value) => RealmObjectBase.set(this, 'name', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - MyObjectWithoutValue freeze() => - RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(MyObjectWithoutValue._); - return const SchemaObject( - ObjectType.realmObject, MyObjectWithoutValue, 'MyObject', [ - SchemaProperty('name', RealmPropertyType.string), - ]); - } +extension MyObjectWithoutValueEJsonEncoderExtension on MyObjectWithoutValue { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeMyObjectWithoutValue(this); } diff --git a/test/migration_test.realm.dart b/test/migration_test.realm.dart new file mode 100644 index 0000000000..bfe64eee54 --- /dev/null +++ b/test/migration_test.realm.dart @@ -0,0 +1,204 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'migration_test.dart'; + +// ************************************************************************** +// RealmObjectGenerator +// ************************************************************************** + +class PersonIntName extends _PersonIntName + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + PersonIntName( + int name, + ) { + RealmObjectBase.set(this, 'name', name); + } + + PersonIntName._(); + + @override + int get name => RealmObjectBase.get(this, 'name') as int; + @override + set name(int value) => RealmObjectBase.set(this, 'name', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + PersonIntName freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(PersonIntName._); + return const SchemaObject(ObjectType.realmObject, PersonIntName, 'Person', [ + SchemaProperty('name', RealmPropertyType.int), + ]); + } +} + +class StudentV1 extends _StudentV1 + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + StudentV1( + String name, { + int? yearOfBirth, + }) { + RealmObjectBase.set(this, 'name', name); + RealmObjectBase.set(this, 'yearOfBirth', yearOfBirth); + } + + StudentV1._(); + + @override + String get name => RealmObjectBase.get(this, 'name') as String; + @override + set name(String value) => RealmObjectBase.set(this, 'name', value); + + @override + int? get yearOfBirth => RealmObjectBase.get(this, 'yearOfBirth') as int?; + @override + set yearOfBirth(int? value) => + RealmObjectBase.set(this, 'yearOfBirth', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + StudentV1 freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(StudentV1._); + return const SchemaObject(ObjectType.realmObject, StudentV1, 'Student', [ + SchemaProperty('name', RealmPropertyType.string, primaryKey: true), + SchemaProperty('yearOfBirth', RealmPropertyType.int, optional: true), + ]); + } +} + +class MyObjectWithTypo extends _MyObjectWithTypo + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + MyObjectWithTypo( + String nmae, + int vlaue, + ) { + RealmObjectBase.set(this, 'nmae', nmae); + RealmObjectBase.set(this, 'vlaue', vlaue); + } + + MyObjectWithTypo._(); + + @override + String get nmae => RealmObjectBase.get(this, 'nmae') as String; + @override + set nmae(String value) => RealmObjectBase.set(this, 'nmae', value); + + @override + int get vlaue => RealmObjectBase.get(this, 'vlaue') as int; + @override + set vlaue(int value) => RealmObjectBase.set(this, 'vlaue', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + MyObjectWithTypo freeze() => + RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(MyObjectWithTypo._); + return const SchemaObject( + ObjectType.realmObject, MyObjectWithTypo, 'MyObject', [ + SchemaProperty('nmae', RealmPropertyType.string), + SchemaProperty('vlaue', RealmPropertyType.int), + ]); + } +} + +class MyObjectWithoutTypo extends _MyObjectWithoutTypo + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + MyObjectWithoutTypo( + String name, + int value, + ) { + RealmObjectBase.set(this, 'name', name); + RealmObjectBase.set(this, 'value', value); + } + + MyObjectWithoutTypo._(); + + @override + String get name => RealmObjectBase.get(this, 'name') as String; + @override + set name(String value) => RealmObjectBase.set(this, 'name', value); + + @override + int get value => RealmObjectBase.get(this, 'value') as int; + @override + set value(int value) => RealmObjectBase.set(this, 'value', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + MyObjectWithoutTypo freeze() => + RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(MyObjectWithoutTypo._); + return const SchemaObject( + ObjectType.realmObject, MyObjectWithoutTypo, 'MyObject', [ + SchemaProperty('name', RealmPropertyType.string), + SchemaProperty('value', RealmPropertyType.int), + ]); + } +} + +class MyObjectWithoutValue extends _MyObjectWithoutValue + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + MyObjectWithoutValue( + String name, + ) { + RealmObjectBase.set(this, 'name', name); + } + + MyObjectWithoutValue._(); + + @override + String get name => RealmObjectBase.get(this, 'name') as String; + @override + set name(String value) => RealmObjectBase.set(this, 'name', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + MyObjectWithoutValue freeze() => + RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(MyObjectWithoutValue._); + return const SchemaObject( + ObjectType.realmObject, MyObjectWithoutValue, 'MyObject', [ + SchemaProperty('name', RealmPropertyType.string), + ]); + } +} diff --git a/test/realm_object_test.dart b/test/realm_object_test.dart index 6dd476babd..1503378157 100644 --- a/test/realm_object_test.dart +++ b/test/realm_object_test.dart @@ -18,12 +18,16 @@ // ignore_for_file: unused_local_variable, avoid_relative_lib_imports +import 'package:ejson_annotation/ejson_annotation.dart'; +import 'package:ejson/ejson.dart'; + import 'dart:io'; import 'package:test/test.dart' hide test, throws; import '../lib/realm.dart'; import 'test.dart'; +part 'realm_object_test.realm.dart'; part 'realm_object_test.g.dart'; @RealmModel() diff --git a/test/realm_object_test.g.dart b/test/realm_object_test.g.dart index 39623e31d9..6b88df71d2 100644 --- a/test/realm_object_test.g.dart +++ b/test/realm_object_test.g.dart @@ -1,361 +1,176 @@ // GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint + part of 'realm_object_test.dart'; // ************************************************************************** -// RealmObjectGenerator +// EJsonGenerator // ************************************************************************** -class ObjectIdPrimaryKey extends _ObjectIdPrimaryKey - with RealmEntity, RealmObjectBase, RealmObject { - ObjectIdPrimaryKey( - ObjectId id, - ) { - RealmObjectBase.set(this, 'id', id); - } - - ObjectIdPrimaryKey._(); - - @override - ObjectId get id => RealmObjectBase.get(this, 'id') as ObjectId; - @override - set id(ObjectId value) => RealmObjectBase.set(this, 'id', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - ObjectIdPrimaryKey freeze() => - RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(ObjectIdPrimaryKey._); - return const SchemaObject( - ObjectType.realmObject, ObjectIdPrimaryKey, 'ObjectIdPrimaryKey', [ - SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), - ]); - } +EJsonValue encodeObjectIdPrimaryKey(ObjectIdPrimaryKey value) { + return {'id': value.id.toEJson()}; +} + +ObjectIdPrimaryKey decodeObjectIdPrimaryKey(EJsonValue ejson) { + return switch (ejson) { + {'id': EJsonValue id} => ObjectIdPrimaryKey(id.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension ObjectIdPrimaryKeyEJsonEncoderExtension on ObjectIdPrimaryKey { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeObjectIdPrimaryKey(this); +} + +EJsonValue encodeNullableObjectIdPrimaryKey(NullableObjectIdPrimaryKey value) { + return {'id': value.id.toEJson()}; +} + +NullableObjectIdPrimaryKey decodeNullableObjectIdPrimaryKey(EJsonValue ejson) { + return switch (ejson) { + {'id': EJsonValue id} => NullableObjectIdPrimaryKey(id.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension NullableObjectIdPrimaryKeyEJsonEncoderExtension + on NullableObjectIdPrimaryKey { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeNullableObjectIdPrimaryKey(this); +} + +EJsonValue encodeIntPrimaryKey(IntPrimaryKey value) { + return {'id': value.id.toEJson()}; +} + +IntPrimaryKey decodeIntPrimaryKey(EJsonValue ejson) { + return switch (ejson) { + {'id': EJsonValue id} => IntPrimaryKey(id.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension IntPrimaryKeyEJsonEncoderExtension on IntPrimaryKey { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeIntPrimaryKey(this); +} + +EJsonValue encodeNullableIntPrimaryKey(NullableIntPrimaryKey value) { + return {'id': value.id.toEJson()}; +} + +NullableIntPrimaryKey decodeNullableIntPrimaryKey(EJsonValue ejson) { + return switch (ejson) { + {'id': EJsonValue id} => NullableIntPrimaryKey(id.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension NullableIntPrimaryKeyEJsonEncoderExtension on NullableIntPrimaryKey { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeNullableIntPrimaryKey(this); +} + +EJsonValue encodeStringPrimaryKey(StringPrimaryKey value) { + return {'id': value.id.toEJson()}; +} + +StringPrimaryKey decodeStringPrimaryKey(EJsonValue ejson) { + return switch (ejson) { + {'id': EJsonValue id} => StringPrimaryKey(id.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension StringPrimaryKeyEJsonEncoderExtension on StringPrimaryKey { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeStringPrimaryKey(this); +} + +EJsonValue encodeNullableStringPrimaryKey(NullableStringPrimaryKey value) { + return {'id': value.id.toEJson()}; +} + +NullableStringPrimaryKey decodeNullableStringPrimaryKey(EJsonValue ejson) { + return switch (ejson) { + {'id': EJsonValue id} => NullableStringPrimaryKey(id.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension NullableStringPrimaryKeyEJsonEncoderExtension + on NullableStringPrimaryKey { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeNullableStringPrimaryKey(this); +} + +EJsonValue encodeUuidPrimaryKey(UuidPrimaryKey value) { + return {'id': value.id.toEJson()}; +} + +UuidPrimaryKey decodeUuidPrimaryKey(EJsonValue ejson) { + return switch (ejson) { + {'id': EJsonValue id} => UuidPrimaryKey(id.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension UuidPrimaryKeyEJsonEncoderExtension on UuidPrimaryKey { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeUuidPrimaryKey(this); } -class NullableObjectIdPrimaryKey extends _NullableObjectIdPrimaryKey - with RealmEntity, RealmObjectBase, RealmObject { - NullableObjectIdPrimaryKey( - ObjectId? id, - ) { - RealmObjectBase.set(this, 'id', id); - } - - NullableObjectIdPrimaryKey._(); - - @override - ObjectId? get id => RealmObjectBase.get(this, 'id') as ObjectId?; - @override - set id(ObjectId? value) => RealmObjectBase.set(this, 'id', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - NullableObjectIdPrimaryKey freeze() => - RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(NullableObjectIdPrimaryKey._); - return const SchemaObject(ObjectType.realmObject, - NullableObjectIdPrimaryKey, 'NullableObjectIdPrimaryKey', [ - SchemaProperty('id', RealmPropertyType.objectid, - optional: true, primaryKey: true), - ]); - } +EJsonValue encodeNullableUuidPrimaryKey(NullableUuidPrimaryKey value) { + return {'id': value.id.toEJson()}; } -class IntPrimaryKey extends _IntPrimaryKey - with RealmEntity, RealmObjectBase, RealmObject { - IntPrimaryKey( - int id, - ) { - RealmObjectBase.set(this, 'id', id); - } - - IntPrimaryKey._(); - - @override - int get id => RealmObjectBase.get(this, 'id') as int; - @override - set id(int value) => RealmObjectBase.set(this, 'id', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - IntPrimaryKey freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(IntPrimaryKey._); - return const SchemaObject( - ObjectType.realmObject, IntPrimaryKey, 'IntPrimaryKey', [ - SchemaProperty('id', RealmPropertyType.int, primaryKey: true), - ]); - } +NullableUuidPrimaryKey decodeNullableUuidPrimaryKey(EJsonValue ejson) { + return switch (ejson) { + {'id': EJsonValue id} => NullableUuidPrimaryKey(id.to()), + _ => raiseInvalidEJson(ejson), + }; } -class NullableIntPrimaryKey extends _NullableIntPrimaryKey - with RealmEntity, RealmObjectBase, RealmObject { - NullableIntPrimaryKey( - int? id, - ) { - RealmObjectBase.set(this, 'id', id); - } - - NullableIntPrimaryKey._(); - - @override - int? get id => RealmObjectBase.get(this, 'id') as int?; - @override - set id(int? value) => RealmObjectBase.set(this, 'id', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - NullableIntPrimaryKey freeze() => - RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(NullableIntPrimaryKey._); - return const SchemaObject(ObjectType.realmObject, NullableIntPrimaryKey, - 'NullableIntPrimaryKey', [ - SchemaProperty('id', RealmPropertyType.int, - optional: true, primaryKey: true), - ]); - } +extension NullableUuidPrimaryKeyEJsonEncoderExtension + on NullableUuidPrimaryKey { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeNullableUuidPrimaryKey(this); } -class StringPrimaryKey extends _StringPrimaryKey - with RealmEntity, RealmObjectBase, RealmObject { - StringPrimaryKey( - String id, - ) { - RealmObjectBase.set(this, 'id', id); - } - - StringPrimaryKey._(); - - @override - String get id => RealmObjectBase.get(this, 'id') as String; - @override - set id(String value) => RealmObjectBase.set(this, 'id', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - StringPrimaryKey freeze() => - RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(StringPrimaryKey._); - return const SchemaObject( - ObjectType.realmObject, StringPrimaryKey, 'StringPrimaryKey', [ - SchemaProperty('id', RealmPropertyType.string, primaryKey: true), - ]); - } +EJsonValue encodeRemappedFromAnotherFile(RemappedFromAnotherFile value) { + return {'linkToAnotherClass': value.linkToAnotherClass.toEJson()}; } -class NullableStringPrimaryKey extends _NullableStringPrimaryKey - with RealmEntity, RealmObjectBase, RealmObject { - NullableStringPrimaryKey( - String? id, - ) { - RealmObjectBase.set(this, 'id', id); - } - - NullableStringPrimaryKey._(); - - @override - String? get id => RealmObjectBase.get(this, 'id') as String?; - @override - set id(String? value) => RealmObjectBase.set(this, 'id', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - NullableStringPrimaryKey freeze() => - RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(NullableStringPrimaryKey._); - return const SchemaObject(ObjectType.realmObject, NullableStringPrimaryKey, - 'NullableStringPrimaryKey', [ - SchemaProperty('id', RealmPropertyType.string, - optional: true, primaryKey: true), - ]); - } +RemappedFromAnotherFile decodeRemappedFromAnotherFile(EJsonValue ejson) { + return switch (ejson) { + {'linkToAnotherClass': EJsonValue linkToAnotherClass} => + RemappedFromAnotherFile( + linkToAnotherClass: linkToAnotherClass.to()), + _ => raiseInvalidEJson(ejson), + }; } -class UuidPrimaryKey extends _UuidPrimaryKey - with RealmEntity, RealmObjectBase, RealmObject { - UuidPrimaryKey( - Uuid id, - ) { - RealmObjectBase.set(this, 'id', id); - } - - UuidPrimaryKey._(); - - @override - Uuid get id => RealmObjectBase.get(this, 'id') as Uuid; - @override - set id(Uuid value) => RealmObjectBase.set(this, 'id', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - UuidPrimaryKey freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(UuidPrimaryKey._); - return const SchemaObject( - ObjectType.realmObject, UuidPrimaryKey, 'UuidPrimaryKey', [ - SchemaProperty('id', RealmPropertyType.uuid, primaryKey: true), - ]); - } +extension RemappedFromAnotherFileEJsonEncoderExtension + on RemappedFromAnotherFile { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeRemappedFromAnotherFile(this); } -class NullableUuidPrimaryKey extends _NullableUuidPrimaryKey - with RealmEntity, RealmObjectBase, RealmObject { - NullableUuidPrimaryKey( - Uuid? id, - ) { - RealmObjectBase.set(this, 'id', id); - } - - NullableUuidPrimaryKey._(); - - @override - Uuid? get id => RealmObjectBase.get(this, 'id') as Uuid?; - @override - set id(Uuid? value) => RealmObjectBase.set(this, 'id', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - NullableUuidPrimaryKey freeze() => - RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(NullableUuidPrimaryKey._); - return const SchemaObject(ObjectType.realmObject, NullableUuidPrimaryKey, - 'NullableUuidPrimaryKey', [ - SchemaProperty('id', RealmPropertyType.uuid, - optional: true, primaryKey: true), - ]); - } +EJsonValue encodeBoolValue(BoolValue value) { + return {'key': value.key.toEJson(), 'value': value.value.toEJson()}; } -class RemappedFromAnotherFile extends _RemappedFromAnotherFile - with RealmEntity, RealmObjectBase, RealmObject { - RemappedFromAnotherFile({ - RemappedClass? linkToAnotherClass, - }) { - RealmObjectBase.set(this, 'property with spaces', linkToAnotherClass); - } - - RemappedFromAnotherFile._(); - - @override - RemappedClass? get linkToAnotherClass => - RealmObjectBase.get(this, 'property with spaces') - as RemappedClass?; - @override - set linkToAnotherClass(covariant RemappedClass? value) => - RealmObjectBase.set(this, 'property with spaces', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - RemappedFromAnotherFile freeze() => - RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(RemappedFromAnotherFile._); - return const SchemaObject( - ObjectType.realmObject, RemappedFromAnotherFile, 'class with spaces', [ - SchemaProperty('linkToAnotherClass', RealmPropertyType.object, - mapTo: 'property with spaces', - optional: true, - linkTarget: 'myRemappedClass'), - ]); - } +BoolValue decodeBoolValue(EJsonValue ejson) { + return switch (ejson) { + {'key': EJsonValue key, 'value': EJsonValue value} => + BoolValue(key.to(), value.to()), + _ => raiseInvalidEJson(ejson), + }; } -class BoolValue extends _BoolValue - with RealmEntity, RealmObjectBase, RealmObject { - BoolValue( - int key, - bool value, - ) { - RealmObjectBase.set(this, 'key', key); - RealmObjectBase.set(this, 'value', value); - } - - BoolValue._(); - - @override - int get key => RealmObjectBase.get(this, 'key') as int; - @override - set key(int value) => RealmObjectBase.set(this, 'key', value); - - @override - bool get value => RealmObjectBase.get(this, 'value') as bool; - @override - set value(bool value) => RealmObjectBase.set(this, 'value', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - BoolValue freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(BoolValue._); - return const SchemaObject(ObjectType.realmObject, BoolValue, 'BoolValue', [ - SchemaProperty('key', RealmPropertyType.int, primaryKey: true), - SchemaProperty('value', RealmPropertyType.bool), - ]); - } +extension BoolValueEJsonEncoderExtension on BoolValue { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeBoolValue(this); } diff --git a/test/realm_object_test.realm.dart b/test/realm_object_test.realm.dart new file mode 100644 index 0000000000..768a686113 --- /dev/null +++ b/test/realm_object_test.realm.dart @@ -0,0 +1,372 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'realm_object_test.dart'; + +// ************************************************************************** +// RealmObjectGenerator +// ************************************************************************** + +class ObjectIdPrimaryKey extends _ObjectIdPrimaryKey + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + ObjectIdPrimaryKey( + ObjectId id, + ) { + RealmObjectBase.set(this, 'id', id); + } + + ObjectIdPrimaryKey._(); + + @override + ObjectId get id => RealmObjectBase.get(this, 'id') as ObjectId; + @override + set id(ObjectId value) => RealmObjectBase.set(this, 'id', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + ObjectIdPrimaryKey freeze() => + RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(ObjectIdPrimaryKey._); + return const SchemaObject( + ObjectType.realmObject, ObjectIdPrimaryKey, 'ObjectIdPrimaryKey', [ + SchemaProperty('id', RealmPropertyType.objectid, primaryKey: true), + ]); + } +} + +class NullableObjectIdPrimaryKey extends _NullableObjectIdPrimaryKey + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + NullableObjectIdPrimaryKey( + ObjectId? id, + ) { + RealmObjectBase.set(this, 'id', id); + } + + NullableObjectIdPrimaryKey._(); + + @override + ObjectId? get id => RealmObjectBase.get(this, 'id') as ObjectId?; + @override + set id(ObjectId? value) => RealmObjectBase.set(this, 'id', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + NullableObjectIdPrimaryKey freeze() => + RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(NullableObjectIdPrimaryKey._); + return const SchemaObject(ObjectType.realmObject, + NullableObjectIdPrimaryKey, 'NullableObjectIdPrimaryKey', [ + SchemaProperty('id', RealmPropertyType.objectid, + optional: true, primaryKey: true), + ]); + } +} + +class IntPrimaryKey extends _IntPrimaryKey + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + IntPrimaryKey( + int id, + ) { + RealmObjectBase.set(this, 'id', id); + } + + IntPrimaryKey._(); + + @override + int get id => RealmObjectBase.get(this, 'id') as int; + @override + set id(int value) => RealmObjectBase.set(this, 'id', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + IntPrimaryKey freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(IntPrimaryKey._); + return const SchemaObject( + ObjectType.realmObject, IntPrimaryKey, 'IntPrimaryKey', [ + SchemaProperty('id', RealmPropertyType.int, primaryKey: true), + ]); + } +} + +class NullableIntPrimaryKey extends _NullableIntPrimaryKey + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + NullableIntPrimaryKey( + int? id, + ) { + RealmObjectBase.set(this, 'id', id); + } + + NullableIntPrimaryKey._(); + + @override + int? get id => RealmObjectBase.get(this, 'id') as int?; + @override + set id(int? value) => RealmObjectBase.set(this, 'id', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + NullableIntPrimaryKey freeze() => + RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(NullableIntPrimaryKey._); + return const SchemaObject(ObjectType.realmObject, NullableIntPrimaryKey, + 'NullableIntPrimaryKey', [ + SchemaProperty('id', RealmPropertyType.int, + optional: true, primaryKey: true), + ]); + } +} + +class StringPrimaryKey extends _StringPrimaryKey + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + StringPrimaryKey( + String id, + ) { + RealmObjectBase.set(this, 'id', id); + } + + StringPrimaryKey._(); + + @override + String get id => RealmObjectBase.get(this, 'id') as String; + @override + set id(String value) => RealmObjectBase.set(this, 'id', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + StringPrimaryKey freeze() => + RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(StringPrimaryKey._); + return const SchemaObject( + ObjectType.realmObject, StringPrimaryKey, 'StringPrimaryKey', [ + SchemaProperty('id', RealmPropertyType.string, primaryKey: true), + ]); + } +} + +class NullableStringPrimaryKey extends _NullableStringPrimaryKey + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + NullableStringPrimaryKey( + String? id, + ) { + RealmObjectBase.set(this, 'id', id); + } + + NullableStringPrimaryKey._(); + + @override + String? get id => RealmObjectBase.get(this, 'id') as String?; + @override + set id(String? value) => RealmObjectBase.set(this, 'id', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + NullableStringPrimaryKey freeze() => + RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(NullableStringPrimaryKey._); + return const SchemaObject(ObjectType.realmObject, NullableStringPrimaryKey, + 'NullableStringPrimaryKey', [ + SchemaProperty('id', RealmPropertyType.string, + optional: true, primaryKey: true), + ]); + } +} + +class UuidPrimaryKey extends _UuidPrimaryKey + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + UuidPrimaryKey( + Uuid id, + ) { + RealmObjectBase.set(this, 'id', id); + } + + UuidPrimaryKey._(); + + @override + Uuid get id => RealmObjectBase.get(this, 'id') as Uuid; + @override + set id(Uuid value) => RealmObjectBase.set(this, 'id', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + UuidPrimaryKey freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(UuidPrimaryKey._); + return const SchemaObject( + ObjectType.realmObject, UuidPrimaryKey, 'UuidPrimaryKey', [ + SchemaProperty('id', RealmPropertyType.uuid, primaryKey: true), + ]); + } +} + +class NullableUuidPrimaryKey extends _NullableUuidPrimaryKey + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + NullableUuidPrimaryKey( + Uuid? id, + ) { + RealmObjectBase.set(this, 'id', id); + } + + NullableUuidPrimaryKey._(); + + @override + Uuid? get id => RealmObjectBase.get(this, 'id') as Uuid?; + @override + set id(Uuid? value) => RealmObjectBase.set(this, 'id', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + NullableUuidPrimaryKey freeze() => + RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(NullableUuidPrimaryKey._); + return const SchemaObject(ObjectType.realmObject, NullableUuidPrimaryKey, + 'NullableUuidPrimaryKey', [ + SchemaProperty('id', RealmPropertyType.uuid, + optional: true, primaryKey: true), + ]); + } +} + +class RemappedFromAnotherFile extends _RemappedFromAnotherFile + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + RemappedFromAnotherFile({ + RemappedClass? linkToAnotherClass, + }) { + RealmObjectBase.set(this, 'property with spaces', linkToAnotherClass); + } + + RemappedFromAnotherFile._(); + + @override + RemappedClass? get linkToAnotherClass => + RealmObjectBase.get(this, 'property with spaces') + as RemappedClass?; + @override + set linkToAnotherClass(covariant RemappedClass? value) => + RealmObjectBase.set(this, 'property with spaces', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + RemappedFromAnotherFile freeze() => + RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(RemappedFromAnotherFile._); + return const SchemaObject( + ObjectType.realmObject, RemappedFromAnotherFile, 'class with spaces', [ + SchemaProperty('linkToAnotherClass', RealmPropertyType.object, + mapTo: 'property with spaces', + optional: true, + linkTarget: 'myRemappedClass'), + ]); + } +} + +class BoolValue extends _BoolValue + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + BoolValue( + int key, + bool value, + ) { + RealmObjectBase.set(this, 'key', key); + RealmObjectBase.set(this, 'value', value); + } + + BoolValue._(); + + @override + int get key => RealmObjectBase.get(this, 'key') as int; + @override + set key(int value) => RealmObjectBase.set(this, 'key', value); + + @override + bool get value => RealmObjectBase.get(this, 'value') as bool; + @override + set value(bool value) => RealmObjectBase.set(this, 'value', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + BoolValue freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(BoolValue._); + return const SchemaObject(ObjectType.realmObject, BoolValue, 'BoolValue', [ + SchemaProperty('key', RealmPropertyType.int, primaryKey: true), + SchemaProperty('value', RealmPropertyType.bool), + ]); + } +} diff --git a/test/realm_set_test.dart b/test/realm_set_test.dart index 8585cf673d..b832354294 100644 --- a/test/realm_set_test.dart +++ b/test/realm_set_test.dart @@ -16,11 +16,15 @@ // //////////////////////////////////////////////////////////////////////////////// +import 'package:ejson_annotation/ejson_annotation.dart'; +import 'package:ejson/ejson.dart'; + import 'package:test/test.dart' hide test, throws; import '../lib/realm.dart'; import 'test.dart'; +part 'realm_set_test.realm.dart'; part 'realm_set_test.g.dart'; class _NullableBool {} diff --git a/test/realm_set_test.g.dart b/test/realm_set_test.g.dart index c5000b1f11..5ed03f6700 100644 --- a/test/realm_set_test.g.dart +++ b/test/realm_set_test.g.dart @@ -1,265 +1,94 @@ // GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint + part of 'realm_set_test.dart'; // ************************************************************************** -// RealmObjectGenerator +// EJsonGenerator // ************************************************************************** -class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { - Car( - String make, - ) { - RealmObjectBase.set(this, 'make', make); - } - - Car._(); - - @override - String get make => RealmObjectBase.get(this, 'make') as String; - @override - set make(String value) => RealmObjectBase.set(this, 'make', 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('make', RealmPropertyType.string, primaryKey: true), - ]); - } +EJsonValue encodeCar(Car value) { + return {'make': value.make.toEJson()}; } -class TestRealmSets extends _TestRealmSets - with RealmEntity, RealmObjectBase, RealmObject { - TestRealmSets( - int key, { - Set boolSet = const {}, - Set intSet = const {}, - Set stringSet = const {}, - Set doubleSet = const {}, - Set dateTimeSet = const {}, - Set objectIdSet = const {}, - Set uuidSet = const {}, - Set mixedSet = const {}, - Set objectsSet = const {}, - Set nullableBoolSet = const {}, - Set nullableIntSet = const {}, - Set nullableStringSet = const {}, - Set nullableDoubleSet = const {}, - Set nullableDateTimeSet = const {}, - Set nullableObjectIdSet = const {}, - Set nullableUuidSet = const {}, - }) { - RealmObjectBase.set(this, 'key', key); - RealmObjectBase.set>( - this, 'boolSet', RealmSet(boolSet)); - RealmObjectBase.set>(this, 'intSet', RealmSet(intSet)); - RealmObjectBase.set>( - this, 'stringSet', RealmSet(stringSet)); - RealmObjectBase.set>( - this, 'doubleSet', RealmSet(doubleSet)); - RealmObjectBase.set>( - this, 'dateTimeSet', RealmSet(dateTimeSet)); - RealmObjectBase.set>( - this, 'objectIdSet', RealmSet(objectIdSet)); - RealmObjectBase.set>( - this, 'uuidSet', RealmSet(uuidSet)); - RealmObjectBase.set>( - this, 'mixedSet', RealmSet(mixedSet)); - RealmObjectBase.set>( - this, 'objectsSet', RealmSet(objectsSet)); - RealmObjectBase.set>( - this, 'nullableBoolSet', RealmSet(nullableBoolSet)); - RealmObjectBase.set>( - this, 'nullableIntSet', RealmSet(nullableIntSet)); - RealmObjectBase.set>( - this, 'nullableStringSet', RealmSet(nullableStringSet)); - RealmObjectBase.set>( - this, 'nullableDoubleSet', RealmSet(nullableDoubleSet)); - RealmObjectBase.set>( - this, 'nullableDateTimeSet', RealmSet(nullableDateTimeSet)); - RealmObjectBase.set>( - this, 'nullableObjectIdSet', RealmSet(nullableObjectIdSet)); - RealmObjectBase.set>( - this, 'nullableUuidSet', RealmSet(nullableUuidSet)); - } - - TestRealmSets._(); - - @override - int get key => RealmObjectBase.get(this, 'key') as int; - @override - set key(int value) => RealmObjectBase.set(this, 'key', value); - - @override - RealmSet get boolSet => - RealmObjectBase.get(this, 'boolSet') as RealmSet; - @override - set boolSet(covariant RealmSet value) => - throw RealmUnsupportedSetError(); - - @override - RealmSet get intSet => - RealmObjectBase.get(this, 'intSet') as RealmSet; - @override - set intSet(covariant RealmSet value) => throw RealmUnsupportedSetError(); - - @override - RealmSet get stringSet => - RealmObjectBase.get(this, 'stringSet') as RealmSet; - @override - set stringSet(covariant RealmSet value) => - throw RealmUnsupportedSetError(); - - @override - RealmSet get doubleSet => - RealmObjectBase.get(this, 'doubleSet') as RealmSet; - @override - set doubleSet(covariant RealmSet value) => - throw RealmUnsupportedSetError(); - - @override - RealmSet get dateTimeSet => - RealmObjectBase.get(this, 'dateTimeSet') as RealmSet; - @override - set dateTimeSet(covariant RealmSet value) => - throw RealmUnsupportedSetError(); - - @override - RealmSet get objectIdSet => - RealmObjectBase.get(this, 'objectIdSet') as RealmSet; - @override - set objectIdSet(covariant RealmSet value) => - throw RealmUnsupportedSetError(); - - @override - RealmSet get uuidSet => - RealmObjectBase.get(this, 'uuidSet') as RealmSet; - @override - set uuidSet(covariant RealmSet value) => - throw RealmUnsupportedSetError(); - - @override - RealmSet get mixedSet => - RealmObjectBase.get(this, 'mixedSet') as RealmSet; - @override - set mixedSet(covariant RealmSet value) => - throw RealmUnsupportedSetError(); - - @override - RealmSet get objectsSet => - RealmObjectBase.get(this, 'objectsSet') as RealmSet; - @override - set objectsSet(covariant RealmSet value) => - throw RealmUnsupportedSetError(); - - @override - RealmSet get nullableBoolSet => - RealmObjectBase.get(this, 'nullableBoolSet') as RealmSet; - @override - set nullableBoolSet(covariant RealmSet value) => - throw RealmUnsupportedSetError(); - - @override - RealmSet get nullableIntSet => - RealmObjectBase.get(this, 'nullableIntSet') as RealmSet; - @override - set nullableIntSet(covariant RealmSet value) => - throw RealmUnsupportedSetError(); - - @override - RealmSet get nullableStringSet => - RealmObjectBase.get(this, 'nullableStringSet') - as RealmSet; - @override - set nullableStringSet(covariant RealmSet value) => - throw RealmUnsupportedSetError(); - - @override - RealmSet get nullableDoubleSet => - RealmObjectBase.get(this, 'nullableDoubleSet') - as RealmSet; - @override - set nullableDoubleSet(covariant RealmSet value) => - throw RealmUnsupportedSetError(); - - @override - RealmSet get nullableDateTimeSet => - RealmObjectBase.get(this, 'nullableDateTimeSet') - as RealmSet; - @override - set nullableDateTimeSet(covariant RealmSet value) => - throw RealmUnsupportedSetError(); - - @override - RealmSet get nullableObjectIdSet => - RealmObjectBase.get(this, 'nullableObjectIdSet') - as RealmSet; - @override - set nullableObjectIdSet(covariant RealmSet value) => - throw RealmUnsupportedSetError(); +Car decodeCar(EJsonValue ejson) { + return switch (ejson) { + {'make': EJsonValue make} => Car(make.to()), + _ => raiseInvalidEJson(ejson), + }; +} - @override - RealmSet get nullableUuidSet => - RealmObjectBase.get(this, 'nullableUuidSet') as RealmSet; - @override - set nullableUuidSet(covariant RealmSet value) => - throw RealmUnsupportedSetError(); +extension CarEJsonEncoderExtension on Car { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeCar(this); +} - @override - Stream> get changes => - RealmObjectBase.getChanges(this); +EJsonValue encodeTestRealmSets(TestRealmSets value) { + return { + 'key': value.key.toEJson(), + 'boolSet': value.boolSet.toEJson(), + 'intSet': value.intSet.toEJson(), + 'stringSet': value.stringSet.toEJson(), + 'doubleSet': value.doubleSet.toEJson(), + 'dateTimeSet': value.dateTimeSet.toEJson(), + 'objectIdSet': value.objectIdSet.toEJson(), + 'uuidSet': value.uuidSet.toEJson(), + 'mixedSet': value.mixedSet.toEJson(), + 'objectsSet': value.objectsSet.toEJson(), + 'nullableBoolSet': value.nullableBoolSet.toEJson(), + 'nullableIntSet': value.nullableIntSet.toEJson(), + 'nullableStringSet': value.nullableStringSet.toEJson(), + 'nullableDoubleSet': value.nullableDoubleSet.toEJson(), + 'nullableDateTimeSet': value.nullableDateTimeSet.toEJson(), + 'nullableObjectIdSet': value.nullableObjectIdSet.toEJson(), + 'nullableUuidSet': value.nullableUuidSet.toEJson() + }; +} - @override - TestRealmSets freeze() => RealmObjectBase.freezeObject(this); +TestRealmSets decodeTestRealmSets(EJsonValue ejson) { + return switch (ejson) { + { + 'key': EJsonValue key, + 'boolSet': EJsonValue boolSet, + 'intSet': EJsonValue intSet, + 'stringSet': EJsonValue stringSet, + 'doubleSet': EJsonValue doubleSet, + 'dateTimeSet': EJsonValue dateTimeSet, + 'objectIdSet': EJsonValue objectIdSet, + 'uuidSet': EJsonValue uuidSet, + 'mixedSet': EJsonValue mixedSet, + 'objectsSet': EJsonValue objectsSet, + 'nullableBoolSet': EJsonValue nullableBoolSet, + 'nullableIntSet': EJsonValue nullableIntSet, + 'nullableStringSet': EJsonValue nullableStringSet, + 'nullableDoubleSet': EJsonValue nullableDoubleSet, + 'nullableDateTimeSet': EJsonValue nullableDateTimeSet, + 'nullableObjectIdSet': EJsonValue nullableObjectIdSet, + 'nullableUuidSet': EJsonValue nullableUuidSet + } => + TestRealmSets(key.to(), + boolSet: boolSet.to>(), + intSet: intSet.to>(), + stringSet: stringSet.to>(), + doubleSet: doubleSet.to>(), + dateTimeSet: dateTimeSet.to>(), + objectIdSet: objectIdSet.to>(), + uuidSet: uuidSet.to>(), + mixedSet: mixedSet.to>(), + objectsSet: objectsSet.to>(), + nullableBoolSet: nullableBoolSet.to>(), + nullableIntSet: nullableIntSet.to>(), + nullableStringSet: nullableStringSet.to>(), + nullableDoubleSet: nullableDoubleSet.to>(), + nullableDateTimeSet: nullableDateTimeSet.to>(), + nullableObjectIdSet: nullableObjectIdSet.to>(), + nullableUuidSet: nullableUuidSet.to>()), + _ => raiseInvalidEJson(ejson), + }; +} - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(TestRealmSets._); - return const SchemaObject( - ObjectType.realmObject, TestRealmSets, 'TestRealmSets', [ - SchemaProperty('key', RealmPropertyType.int, primaryKey: true), - SchemaProperty('boolSet', RealmPropertyType.bool, - collectionType: RealmCollectionType.set), - SchemaProperty('intSet', RealmPropertyType.int, - collectionType: RealmCollectionType.set), - SchemaProperty('stringSet', RealmPropertyType.string, - collectionType: RealmCollectionType.set), - SchemaProperty('doubleSet', RealmPropertyType.double, - collectionType: RealmCollectionType.set), - SchemaProperty('dateTimeSet', RealmPropertyType.timestamp, - collectionType: RealmCollectionType.set), - SchemaProperty('objectIdSet', RealmPropertyType.objectid, - collectionType: RealmCollectionType.set), - SchemaProperty('uuidSet', RealmPropertyType.uuid, - collectionType: RealmCollectionType.set), - SchemaProperty('mixedSet', RealmPropertyType.mixed, - optional: true, collectionType: RealmCollectionType.set), - SchemaProperty('objectsSet', RealmPropertyType.object, - linkTarget: 'Car', collectionType: RealmCollectionType.set), - SchemaProperty('nullableBoolSet', RealmPropertyType.bool, - optional: true, collectionType: RealmCollectionType.set), - SchemaProperty('nullableIntSet', RealmPropertyType.int, - optional: true, collectionType: RealmCollectionType.set), - SchemaProperty('nullableStringSet', RealmPropertyType.string, - optional: true, collectionType: RealmCollectionType.set), - SchemaProperty('nullableDoubleSet', RealmPropertyType.double, - optional: true, collectionType: RealmCollectionType.set), - SchemaProperty('nullableDateTimeSet', RealmPropertyType.timestamp, - optional: true, collectionType: RealmCollectionType.set), - SchemaProperty('nullableObjectIdSet', RealmPropertyType.objectid, - optional: true, collectionType: RealmCollectionType.set), - SchemaProperty('nullableUuidSet', RealmPropertyType.uuid, - optional: true, collectionType: RealmCollectionType.set), - ]); - } +extension TestRealmSetsEJsonEncoderExtension on TestRealmSets { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeTestRealmSets(this); } diff --git a/test/realm_set_test.realm.dart b/test/realm_set_test.realm.dart new file mode 100644 index 0000000000..2db27a662d --- /dev/null +++ b/test/realm_set_test.realm.dart @@ -0,0 +1,268 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'realm_set_test.dart'; + +// ************************************************************************** +// RealmObjectGenerator +// ************************************************************************** + +class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { + @ejson + Car( + String make, + ) { + RealmObjectBase.set(this, 'make', make); + } + + Car._(); + + @override + String get make => RealmObjectBase.get(this, 'make') as String; + @override + set make(String value) => RealmObjectBase.set(this, 'make', 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('make', RealmPropertyType.string, primaryKey: true), + ]); + } +} + +class TestRealmSets extends _TestRealmSets + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + TestRealmSets( + int key, { + Set boolSet = const {}, + Set intSet = const {}, + Set stringSet = const {}, + Set doubleSet = const {}, + Set dateTimeSet = const {}, + Set objectIdSet = const {}, + Set uuidSet = const {}, + Set mixedSet = const {}, + Set objectsSet = const {}, + Set nullableBoolSet = const {}, + Set nullableIntSet = const {}, + Set nullableStringSet = const {}, + Set nullableDoubleSet = const {}, + Set nullableDateTimeSet = const {}, + Set nullableObjectIdSet = const {}, + Set nullableUuidSet = const {}, + }) { + RealmObjectBase.set(this, 'key', key); + RealmObjectBase.set>( + this, 'boolSet', RealmSet(boolSet)); + RealmObjectBase.set>(this, 'intSet', RealmSet(intSet)); + RealmObjectBase.set>( + this, 'stringSet', RealmSet(stringSet)); + RealmObjectBase.set>( + this, 'doubleSet', RealmSet(doubleSet)); + RealmObjectBase.set>( + this, 'dateTimeSet', RealmSet(dateTimeSet)); + RealmObjectBase.set>( + this, 'objectIdSet', RealmSet(objectIdSet)); + RealmObjectBase.set>( + this, 'uuidSet', RealmSet(uuidSet)); + RealmObjectBase.set>( + this, 'mixedSet', RealmSet(mixedSet)); + RealmObjectBase.set>( + this, 'objectsSet', RealmSet(objectsSet)); + RealmObjectBase.set>( + this, 'nullableBoolSet', RealmSet(nullableBoolSet)); + RealmObjectBase.set>( + this, 'nullableIntSet', RealmSet(nullableIntSet)); + RealmObjectBase.set>( + this, 'nullableStringSet', RealmSet(nullableStringSet)); + RealmObjectBase.set>( + this, 'nullableDoubleSet', RealmSet(nullableDoubleSet)); + RealmObjectBase.set>( + this, 'nullableDateTimeSet', RealmSet(nullableDateTimeSet)); + RealmObjectBase.set>( + this, 'nullableObjectIdSet', RealmSet(nullableObjectIdSet)); + RealmObjectBase.set>( + this, 'nullableUuidSet', RealmSet(nullableUuidSet)); + } + + TestRealmSets._(); + + @override + int get key => RealmObjectBase.get(this, 'key') as int; + @override + set key(int value) => RealmObjectBase.set(this, 'key', value); + + @override + RealmSet get boolSet => + RealmObjectBase.get(this, 'boolSet') as RealmSet; + @override + set boolSet(covariant RealmSet value) => + throw RealmUnsupportedSetError(); + + @override + RealmSet get intSet => + RealmObjectBase.get(this, 'intSet') as RealmSet; + @override + set intSet(covariant RealmSet value) => throw RealmUnsupportedSetError(); + + @override + RealmSet get stringSet => + RealmObjectBase.get(this, 'stringSet') as RealmSet; + @override + set stringSet(covariant RealmSet value) => + throw RealmUnsupportedSetError(); + + @override + RealmSet get doubleSet => + RealmObjectBase.get(this, 'doubleSet') as RealmSet; + @override + set doubleSet(covariant RealmSet value) => + throw RealmUnsupportedSetError(); + + @override + RealmSet get dateTimeSet => + RealmObjectBase.get(this, 'dateTimeSet') as RealmSet; + @override + set dateTimeSet(covariant RealmSet value) => + throw RealmUnsupportedSetError(); + + @override + RealmSet get objectIdSet => + RealmObjectBase.get(this, 'objectIdSet') as RealmSet; + @override + set objectIdSet(covariant RealmSet value) => + throw RealmUnsupportedSetError(); + + @override + RealmSet get uuidSet => + RealmObjectBase.get(this, 'uuidSet') as RealmSet; + @override + set uuidSet(covariant RealmSet value) => + throw RealmUnsupportedSetError(); + + @override + RealmSet get mixedSet => + RealmObjectBase.get(this, 'mixedSet') as RealmSet; + @override + set mixedSet(covariant RealmSet value) => + throw RealmUnsupportedSetError(); + + @override + RealmSet get objectsSet => + RealmObjectBase.get(this, 'objectsSet') as RealmSet; + @override + set objectsSet(covariant RealmSet value) => + throw RealmUnsupportedSetError(); + + @override + RealmSet get nullableBoolSet => + RealmObjectBase.get(this, 'nullableBoolSet') as RealmSet; + @override + set nullableBoolSet(covariant RealmSet value) => + throw RealmUnsupportedSetError(); + + @override + RealmSet get nullableIntSet => + RealmObjectBase.get(this, 'nullableIntSet') as RealmSet; + @override + set nullableIntSet(covariant RealmSet value) => + throw RealmUnsupportedSetError(); + + @override + RealmSet get nullableStringSet => + RealmObjectBase.get(this, 'nullableStringSet') + as RealmSet; + @override + set nullableStringSet(covariant RealmSet value) => + throw RealmUnsupportedSetError(); + + @override + RealmSet get nullableDoubleSet => + RealmObjectBase.get(this, 'nullableDoubleSet') + as RealmSet; + @override + set nullableDoubleSet(covariant RealmSet value) => + throw RealmUnsupportedSetError(); + + @override + RealmSet get nullableDateTimeSet => + RealmObjectBase.get(this, 'nullableDateTimeSet') + as RealmSet; + @override + set nullableDateTimeSet(covariant RealmSet value) => + throw RealmUnsupportedSetError(); + + @override + RealmSet get nullableObjectIdSet => + RealmObjectBase.get(this, 'nullableObjectIdSet') + as RealmSet; + @override + set nullableObjectIdSet(covariant RealmSet value) => + throw RealmUnsupportedSetError(); + + @override + RealmSet get nullableUuidSet => + RealmObjectBase.get(this, 'nullableUuidSet') as RealmSet; + @override + set nullableUuidSet(covariant RealmSet value) => + throw RealmUnsupportedSetError(); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + TestRealmSets freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(TestRealmSets._); + return const SchemaObject( + ObjectType.realmObject, TestRealmSets, 'TestRealmSets', [ + SchemaProperty('key', RealmPropertyType.int, primaryKey: true), + SchemaProperty('boolSet', RealmPropertyType.bool, + collectionType: RealmCollectionType.set), + SchemaProperty('intSet', RealmPropertyType.int, + collectionType: RealmCollectionType.set), + SchemaProperty('stringSet', RealmPropertyType.string, + collectionType: RealmCollectionType.set), + SchemaProperty('doubleSet', RealmPropertyType.double, + collectionType: RealmCollectionType.set), + SchemaProperty('dateTimeSet', RealmPropertyType.timestamp, + collectionType: RealmCollectionType.set), + SchemaProperty('objectIdSet', RealmPropertyType.objectid, + collectionType: RealmCollectionType.set), + SchemaProperty('uuidSet', RealmPropertyType.uuid, + collectionType: RealmCollectionType.set), + SchemaProperty('mixedSet', RealmPropertyType.mixed, + optional: true, collectionType: RealmCollectionType.set), + SchemaProperty('objectsSet', RealmPropertyType.object, + linkTarget: 'Car', collectionType: RealmCollectionType.set), + SchemaProperty('nullableBoolSet', RealmPropertyType.bool, + optional: true, collectionType: RealmCollectionType.set), + SchemaProperty('nullableIntSet', RealmPropertyType.int, + optional: true, collectionType: RealmCollectionType.set), + SchemaProperty('nullableStringSet', RealmPropertyType.string, + optional: true, collectionType: RealmCollectionType.set), + SchemaProperty('nullableDoubleSet', RealmPropertyType.double, + optional: true, collectionType: RealmCollectionType.set), + SchemaProperty('nullableDateTimeSet', RealmPropertyType.timestamp, + optional: true, collectionType: RealmCollectionType.set), + SchemaProperty('nullableObjectIdSet', RealmPropertyType.objectid, + optional: true, collectionType: RealmCollectionType.set), + SchemaProperty('nullableUuidSet', RealmPropertyType.uuid, + optional: true, collectionType: RealmCollectionType.set), + ]); + } +} diff --git a/test/realm_test.dart b/test/realm_test.dart index 575be73c24..a362b093ff 100644 --- a/test/realm_test.dart +++ b/test/realm_test.dart @@ -18,6 +18,8 @@ // ignore_for_file: unused_local_variable, avoid_relative_lib_imports +import 'package:ejson_annotation/ejson_annotation.dart'; + import 'dart:async'; import 'dart:convert'; import 'dart:io'; diff --git a/test/realm_value_test.dart b/test/realm_value_test.dart index d8c0ffae03..ba77da574b 100644 --- a/test/realm_value_test.dart +++ b/test/realm_value_test.dart @@ -16,6 +16,9 @@ // //////////////////////////////////////////////////////////////////////////////// +import 'package:ejson_annotation/ejson_annotation.dart'; +import 'package:ejson/ejson.dart'; + import 'dart:io'; import 'package:test/test.dart' hide test, throws; @@ -23,6 +26,7 @@ import '../lib/realm.dart'; import 'test.dart'; +part 'realm_value_test.realm.dart'; part 'realm_value_test.g.dart'; @RealmModel(ObjectType.embeddedObject) diff --git a/test/realm_value_test.g.dart b/test/realm_value_test.g.dart index 44976478b9..690ab8c8d9 100644 --- a/test/realm_value_test.g.dart +++ b/test/realm_value_test.g.dart @@ -1,131 +1,60 @@ // GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint + part of 'realm_value_test.dart'; // ************************************************************************** -// RealmObjectGenerator +// EJsonGenerator // ************************************************************************** -class TuckedIn extends _TuckedIn - with RealmEntity, RealmObjectBase, EmbeddedObject { - static var _defaultsSet = false; - - TuckedIn({ - int x = 42, - }) { - if (!_defaultsSet) { - _defaultsSet = RealmObjectBase.setDefaults({ - 'x': 42, - }); - } - RealmObjectBase.set(this, 'x', x); - } - - TuckedIn._(); - - @override - int get x => RealmObjectBase.get(this, 'x') as int; - @override - set x(int value) => RealmObjectBase.set(this, 'x', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - TuckedIn freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(TuckedIn._); - return const SchemaObject(ObjectType.embeddedObject, TuckedIn, 'TuckedIn', [ - SchemaProperty('x', RealmPropertyType.int), - ]); - } +EJsonValue encodeTuckedIn(TuckedIn value) { + return {'x': value.x.toEJson()}; } -class AnythingGoes extends _AnythingGoes - with RealmEntity, RealmObjectBase, RealmObject { - AnythingGoes({ - RealmValue oneAny = const RealmValue.nullValue(), - Iterable manyAny = const [], - }) { - RealmObjectBase.set(this, 'oneAny', oneAny); - RealmObjectBase.set>( - this, 'manyAny', RealmList(manyAny)); - } - - AnythingGoes._(); - - @override - RealmValue get oneAny => - RealmObjectBase.get(this, 'oneAny') as RealmValue; - @override - set oneAny(RealmValue value) => RealmObjectBase.set(this, 'oneAny', value); - - @override - RealmList get manyAny => - RealmObjectBase.get(this, 'manyAny') as RealmList; - @override - set manyAny(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - AnythingGoes freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(AnythingGoes._); - return const SchemaObject( - ObjectType.realmObject, AnythingGoes, 'AnythingGoes', [ - SchemaProperty('oneAny', RealmPropertyType.mixed, - optional: true, indexType: RealmIndexType.regular), - SchemaProperty('manyAny', RealmPropertyType.mixed, - optional: true, collectionType: RealmCollectionType.list), - ]); - } +TuckedIn decodeTuckedIn(EJsonValue ejson) { + return switch (ejson) { + {'x': EJsonValue x} => TuckedIn(x: x.to()), + _ => raiseInvalidEJson(ejson), + }; } -class Stuff extends _Stuff with RealmEntity, RealmObjectBase, RealmObject { - static var _defaultsSet = false; +extension TuckedInEJsonEncoderExtension on TuckedIn { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeTuckedIn(this); +} - Stuff({ - int i = 42, - }) { - if (!_defaultsSet) { - _defaultsSet = RealmObjectBase.setDefaults({ - 'i': 42, - }); - } - RealmObjectBase.set(this, 'i', i); - } +EJsonValue encodeAnythingGoes(AnythingGoes value) { + return {'oneAny': value.oneAny.toEJson(), 'manyAny': value.manyAny.toEJson()}; +} - Stuff._(); +AnythingGoes decodeAnythingGoes(EJsonValue ejson) { + return switch (ejson) { + {'oneAny': EJsonValue oneAny, 'manyAny': EJsonValue manyAny} => + AnythingGoes( + oneAny: oneAny.to(), + manyAny: manyAny.to>()), + _ => raiseInvalidEJson(ejson), + }; +} - @override - int get i => RealmObjectBase.get(this, 'i') as int; - @override - set i(int value) => RealmObjectBase.set(this, 'i', value); +extension AnythingGoesEJsonEncoderExtension on AnythingGoes { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeAnythingGoes(this); +} - @override - Stream> get changes => - RealmObjectBase.getChanges(this); +EJsonValue encodeStuff(Stuff value) { + return {'i': value.i.toEJson()}; +} - @override - Stuff freeze() => RealmObjectBase.freezeObject(this); +Stuff decodeStuff(EJsonValue ejson) { + return switch (ejson) { + {'i': EJsonValue i} => Stuff(i: i.to()), + _ => raiseInvalidEJson(ejson), + }; +} - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(Stuff._); - return const SchemaObject(ObjectType.realmObject, Stuff, 'Stuff', [ - SchemaProperty('i', RealmPropertyType.int), - ]); - } +extension StuffEJsonEncoderExtension on Stuff { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeStuff(this); } diff --git a/test/realm_value_test.realm.dart b/test/realm_value_test.realm.dart new file mode 100644 index 0000000000..98794187b8 --- /dev/null +++ b/test/realm_value_test.realm.dart @@ -0,0 +1,135 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'realm_value_test.dart'; + +// ************************************************************************** +// RealmObjectGenerator +// ************************************************************************** + +class TuckedIn extends _TuckedIn + with RealmEntity, RealmObjectBase, EmbeddedObject { + static var _defaultsSet = false; + + @ejson + TuckedIn({ + int x = 42, + }) { + if (!_defaultsSet) { + _defaultsSet = RealmObjectBase.setDefaults({ + 'x': 42, + }); + } + RealmObjectBase.set(this, 'x', x); + } + + TuckedIn._(); + + @override + int get x => RealmObjectBase.get(this, 'x') as int; + @override + set x(int value) => RealmObjectBase.set(this, 'x', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + TuckedIn freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(TuckedIn._); + return const SchemaObject(ObjectType.embeddedObject, TuckedIn, 'TuckedIn', [ + SchemaProperty('x', RealmPropertyType.int), + ]); + } +} + +class AnythingGoes extends _AnythingGoes + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + AnythingGoes({ + RealmValue oneAny = const RealmValue.nullValue(), + Iterable manyAny = const [], + }) { + RealmObjectBase.set(this, 'oneAny', oneAny); + RealmObjectBase.set>( + this, 'manyAny', RealmList(manyAny)); + } + + AnythingGoes._(); + + @override + RealmValue get oneAny => + RealmObjectBase.get(this, 'oneAny') as RealmValue; + @override + set oneAny(RealmValue value) => RealmObjectBase.set(this, 'oneAny', value); + + @override + RealmList get manyAny => + RealmObjectBase.get(this, 'manyAny') as RealmList; + @override + set manyAny(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + AnythingGoes freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(AnythingGoes._); + return const SchemaObject( + ObjectType.realmObject, AnythingGoes, 'AnythingGoes', [ + SchemaProperty('oneAny', RealmPropertyType.mixed, + optional: true, indexType: RealmIndexType.regular), + SchemaProperty('manyAny', RealmPropertyType.mixed, + optional: true, collectionType: RealmCollectionType.list), + ]); + } +} + +class Stuff extends _Stuff with RealmEntity, RealmObjectBase, RealmObject { + static var _defaultsSet = false; + + @ejson + Stuff({ + int i = 42, + }) { + if (!_defaultsSet) { + _defaultsSet = RealmObjectBase.setDefaults({ + 'i': 42, + }); + } + RealmObjectBase.set(this, 'i', i); + } + + Stuff._(); + + @override + int get i => RealmObjectBase.get(this, 'i') as int; + @override + set i(int value) => RealmObjectBase.set(this, 'i', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + Stuff freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(Stuff._); + return const SchemaObject(ObjectType.realmObject, Stuff, 'Stuff', [ + SchemaProperty('i', RealmPropertyType.int), + ]); + } +} diff --git a/test/test.dart b/test/test.dart index 3e84f0fa7e..6a4a89b8ec 100644 --- a/test/test.dart +++ b/test/test.dart @@ -16,6 +16,9 @@ // //////////////////////////////////////////////////////////////////////////////// +import 'package:ejson_annotation/ejson_annotation.dart'; +import 'package:ejson/ejson.dart'; + import 'dart:async'; import 'dart:collection'; import 'dart:ffi'; @@ -32,6 +35,7 @@ import '../lib/src/cli/atlas_apps/baas_client.dart'; import '../lib/src/native/realm_core.dart'; import '../lib/src/configuration.dart'; +part 'test.realm.dart'; part 'test.g.dart'; @RealmModel() diff --git a/test/test.g.dart b/test/test.g.dart index 7805d4c714..78e81318f4 100644 --- a/test/test.g.dart +++ b/test/test.g.dart @@ -1,1990 +1,820 @@ // GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint + part of 'test.dart'; // ************************************************************************** -// RealmObjectGenerator +// EJsonGenerator // ************************************************************************** -class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { - Car( - String make, - ) { - RealmObjectBase.set(this, 'make', make); - } - - Car._(); - - @override - String get make => RealmObjectBase.get(this, 'make') as String; - @override - set make(String value) => RealmObjectBase.set(this, 'make', 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('make', RealmPropertyType.string, primaryKey: true), - ]); - } -} - -class Person extends _Person with RealmEntity, RealmObjectBase, RealmObject { - Person( - String name, - ) { - RealmObjectBase.set(this, 'name', name); - } - - Person._(); - - @override - String get name => RealmObjectBase.get(this, 'name') as String; - @override - set name(String value) => RealmObjectBase.set(this, 'name', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - Person freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(Person._); - return const SchemaObject(ObjectType.realmObject, Person, 'Person', [ - SchemaProperty('name', RealmPropertyType.string), - ]); - } -} - -class Dog extends _Dog with RealmEntity, RealmObjectBase, RealmObject { - Dog( - String name, { - int? age, - Person? owner, - }) { - RealmObjectBase.set(this, 'name', name); - RealmObjectBase.set(this, 'age', age); - RealmObjectBase.set(this, 'owner', owner); - } - - Dog._(); - - @override - String get name => RealmObjectBase.get(this, 'name') as String; - @override - set name(String value) => RealmObjectBase.set(this, 'name', value); - - @override - int? get age => RealmObjectBase.get(this, 'age') as int?; - @override - set age(int? value) => RealmObjectBase.set(this, 'age', value); - - @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 - Dog freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(Dog._); - return const SchemaObject(ObjectType.realmObject, Dog, 'Dog', [ - SchemaProperty('name', RealmPropertyType.string, primaryKey: true), - SchemaProperty('age', RealmPropertyType.int, optional: true), - SchemaProperty('owner', RealmPropertyType.object, - optional: true, linkTarget: 'Person'), - ]); - } -} - -class Team extends _Team with RealmEntity, RealmObjectBase, RealmObject { - Team( - String name, { - Iterable players = const [], - Iterable scores = const [], - }) { - RealmObjectBase.set(this, 'name', name); - RealmObjectBase.set>( - this, 'players', RealmList(players)); - RealmObjectBase.set>(this, 'scores', RealmList(scores)); - } - - Team._(); - - @override - String get name => RealmObjectBase.get(this, 'name') as String; - @override - set name(String value) => RealmObjectBase.set(this, 'name', value); - - @override - RealmList get players => - RealmObjectBase.get(this, 'players') as RealmList; - @override - set players(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RealmList get scores => - RealmObjectBase.get(this, 'scores') as RealmList; - @override - set scores(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - Team freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(Team._); - return const SchemaObject(ObjectType.realmObject, Team, 'Team', [ - SchemaProperty('name', RealmPropertyType.string), - SchemaProperty('players', RealmPropertyType.object, - linkTarget: 'Person', collectionType: RealmCollectionType.list), - SchemaProperty('scores', RealmPropertyType.int, - collectionType: RealmCollectionType.list), - ]); - } -} - -class Student extends _Student with RealmEntity, RealmObjectBase, RealmObject { - Student( - int number, { - String? name, - int? yearOfBirth, - School? school, - }) { - RealmObjectBase.set(this, 'number', number); - RealmObjectBase.set(this, 'name', name); - RealmObjectBase.set(this, 'yearOfBirth', yearOfBirth); - RealmObjectBase.set(this, 'school', school); - } - - Student._(); - - @override - int get number => RealmObjectBase.get(this, 'number') as int; - @override - set number(int value) => RealmObjectBase.set(this, 'number', value); - - @override - String? get name => RealmObjectBase.get(this, 'name') as String?; - @override - set name(String? value) => RealmObjectBase.set(this, 'name', value); - - @override - int? get yearOfBirth => RealmObjectBase.get(this, 'yearOfBirth') as int?; - @override - set yearOfBirth(int? value) => - RealmObjectBase.set(this, 'yearOfBirth', value); - - @override - School? get school => RealmObjectBase.get(this, 'school') as School?; - @override - set school(covariant School? value) => - RealmObjectBase.set(this, 'school', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - Student freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(Student._); - return const SchemaObject(ObjectType.realmObject, Student, 'Student', [ - SchemaProperty('number', RealmPropertyType.int, primaryKey: true), - SchemaProperty('name', RealmPropertyType.string, optional: true), - SchemaProperty('yearOfBirth', RealmPropertyType.int, optional: true), - SchemaProperty('school', RealmPropertyType.object, - optional: true, linkTarget: 'School'), - ]); - } -} - -class School extends _School with RealmEntity, RealmObjectBase, RealmObject { - School( - String name, { - String? city, - School? branchOfSchool, - Iterable students = const [], - Iterable branches = const [], - }) { - RealmObjectBase.set(this, 'name', name); - RealmObjectBase.set(this, 'city', city); - RealmObjectBase.set(this, 'branchOfSchool', branchOfSchool); - RealmObjectBase.set>( - this, 'students', RealmList(students)); - RealmObjectBase.set>( - this, 'branches', RealmList(branches)); - } - - School._(); - - @override - String get name => RealmObjectBase.get(this, 'name') as String; - @override - set name(String value) => RealmObjectBase.set(this, 'name', value); - - @override - String? get city => RealmObjectBase.get(this, 'city') as String?; - @override - set city(String? value) => RealmObjectBase.set(this, 'city', value); - - @override - RealmList get students => - RealmObjectBase.get(this, 'students') as RealmList; - @override - set students(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - School? get branchOfSchool => - RealmObjectBase.get(this, 'branchOfSchool') as School?; - @override - set branchOfSchool(covariant School? value) => - RealmObjectBase.set(this, 'branchOfSchool', value); - - @override - RealmList get branches => - RealmObjectBase.get(this, 'branches') as RealmList; - @override - set branches(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - School freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(School._); - return const SchemaObject(ObjectType.realmObject, School, 'School', [ - SchemaProperty('name', RealmPropertyType.string, primaryKey: true), - SchemaProperty('city', RealmPropertyType.string, optional: true), - SchemaProperty('students', RealmPropertyType.object, - linkTarget: 'Student', collectionType: RealmCollectionType.list), - SchemaProperty('branchOfSchool', RealmPropertyType.object, - optional: true, linkTarget: 'School'), - SchemaProperty('branches', RealmPropertyType.object, - linkTarget: 'School', collectionType: RealmCollectionType.list), - ]); - } -} - -class RemappedClass extends $RemappedClass - with RealmEntity, RealmObjectBase, RealmObject { - RemappedClass( - String remappedProperty, { - Iterable listProperty = const [], - }) { - RealmObjectBase.set(this, 'primitive_property', remappedProperty); - RealmObjectBase.set>( - this, 'list-with-dashes', RealmList(listProperty)); - } - - RemappedClass._(); - - @override - String get remappedProperty => - RealmObjectBase.get(this, 'primitive_property') as String; - @override - set remappedProperty(String value) => - RealmObjectBase.set(this, 'primitive_property', value); - - @override - RealmList get listProperty => - RealmObjectBase.get(this, 'list-with-dashes') - as RealmList; - @override - set listProperty(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - RemappedClass freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(RemappedClass._); - return const SchemaObject( - ObjectType.realmObject, RemappedClass, 'myRemappedClass', [ - SchemaProperty('remappedProperty', RealmPropertyType.string, - mapTo: 'primitive_property'), - SchemaProperty('listProperty', RealmPropertyType.object, - mapTo: 'list-with-dashes', - linkTarget: 'myRemappedClass', - collectionType: RealmCollectionType.list), - ]); - } -} - -class Task extends _Task with RealmEntity, RealmObjectBase, RealmObject { - Task( - ObjectId id, - ) { - RealmObjectBase.set(this, '_id', id); - } - - Task._(); - - @override - ObjectId get id => RealmObjectBase.get(this, '_id') as ObjectId; - @override - set id(ObjectId value) => RealmObjectBase.set(this, '_id', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - Task freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(Task._); - return const SchemaObject(ObjectType.realmObject, Task, 'Task', [ - SchemaProperty('id', RealmPropertyType.objectid, - mapTo: '_id', primaryKey: true), - ]); - } -} - -class Product extends _Product with RealmEntity, RealmObjectBase, RealmObject { - Product( - ObjectId id, - String name, - ) { - RealmObjectBase.set(this, '_id', id); - RealmObjectBase.set(this, 'stringQueryField', name); - } - - Product._(); - - @override - ObjectId get id => RealmObjectBase.get(this, '_id') as ObjectId; - @override - set id(ObjectId value) => RealmObjectBase.set(this, '_id', value); - - @override - String get name => - RealmObjectBase.get(this, 'stringQueryField') as String; - @override - set name(String value) => - RealmObjectBase.set(this, 'stringQueryField', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - Product freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(Product._); - return const SchemaObject(ObjectType.realmObject, Product, 'Product', [ - SchemaProperty('id', RealmPropertyType.objectid, - mapTo: '_id', primaryKey: true), - SchemaProperty('name', RealmPropertyType.string, - mapTo: 'stringQueryField'), - ]); - } -} - -class Schedule extends _Schedule - with RealmEntity, RealmObjectBase, RealmObject { - Schedule( - ObjectId id, { - Iterable tasks = const [], - }) { - RealmObjectBase.set(this, '_id', id); - RealmObjectBase.set>(this, 'tasks', RealmList(tasks)); - } - - Schedule._(); - - @override - ObjectId get id => RealmObjectBase.get(this, '_id') as ObjectId; - @override - set id(ObjectId value) => RealmObjectBase.set(this, '_id', value); - - @override - RealmList get tasks => - RealmObjectBase.get(this, 'tasks') as RealmList; - @override - set tasks(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - Schedule freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(Schedule._); - return const SchemaObject(ObjectType.realmObject, Schedule, 'Schedule', [ - SchemaProperty('id', RealmPropertyType.objectid, - mapTo: '_id', primaryKey: true), - SchemaProperty('tasks', RealmPropertyType.object, - linkTarget: 'Task', collectionType: RealmCollectionType.list), - ]); - } -} - -class AllTypes extends _AllTypes - with RealmEntity, RealmObjectBase, RealmObject { - AllTypes( - String stringProp, - bool boolProp, - DateTime dateProp, - double doubleProp, - ObjectId objectIdProp, - Uuid uuidProp, - int intProp, - Decimal128 decimalProp, { - String? nullableStringProp, - bool? nullableBoolProp, - DateTime? nullableDateProp, - double? nullableDoubleProp, - ObjectId? nullableObjectIdProp, - Uuid? nullableUuidProp, - int? nullableIntProp, - Decimal128? nullableDecimalProp, - }) { - RealmObjectBase.set(this, 'stringProp', stringProp); - RealmObjectBase.set(this, 'boolProp', boolProp); - RealmObjectBase.set(this, 'dateProp', dateProp); - RealmObjectBase.set(this, 'doubleProp', doubleProp); - RealmObjectBase.set(this, 'objectIdProp', objectIdProp); - RealmObjectBase.set(this, 'uuidProp', uuidProp); - RealmObjectBase.set(this, 'intProp', intProp); - RealmObjectBase.set(this, 'decimalProp', decimalProp); - RealmObjectBase.set(this, 'nullableStringProp', nullableStringProp); - RealmObjectBase.set(this, 'nullableBoolProp', nullableBoolProp); - RealmObjectBase.set(this, 'nullableDateProp', nullableDateProp); - RealmObjectBase.set(this, 'nullableDoubleProp', nullableDoubleProp); - RealmObjectBase.set(this, 'nullableObjectIdProp', nullableObjectIdProp); - RealmObjectBase.set(this, 'nullableUuidProp', nullableUuidProp); - RealmObjectBase.set(this, 'nullableIntProp', nullableIntProp); - RealmObjectBase.set(this, 'nullableDecimalProp', nullableDecimalProp); - } - - AllTypes._(); - - @override - String get stringProp => - RealmObjectBase.get(this, 'stringProp') as String; - @override - set stringProp(String value) => - RealmObjectBase.set(this, 'stringProp', value); - - @override - bool get boolProp => RealmObjectBase.get(this, 'boolProp') as bool; - @override - set boolProp(bool value) => RealmObjectBase.set(this, 'boolProp', value); - - @override - DateTime get dateProp => - RealmObjectBase.get(this, 'dateProp') as DateTime; - @override - set dateProp(DateTime value) => RealmObjectBase.set(this, 'dateProp', value); - - @override - double get doubleProp => - RealmObjectBase.get(this, 'doubleProp') as double; - @override - set doubleProp(double value) => - RealmObjectBase.set(this, 'doubleProp', value); - - @override - ObjectId get objectIdProp => - RealmObjectBase.get(this, 'objectIdProp') as ObjectId; - @override - set objectIdProp(ObjectId value) => - RealmObjectBase.set(this, 'objectIdProp', value); - - @override - Uuid get uuidProp => RealmObjectBase.get(this, 'uuidProp') as Uuid; - @override - set uuidProp(Uuid value) => RealmObjectBase.set(this, 'uuidProp', value); - - @override - int get intProp => RealmObjectBase.get(this, 'intProp') as int; - @override - set intProp(int value) => RealmObjectBase.set(this, 'intProp', value); - - @override - Decimal128 get decimalProp => - RealmObjectBase.get(this, 'decimalProp') as Decimal128; - @override - set decimalProp(Decimal128 value) => - RealmObjectBase.set(this, 'decimalProp', value); - - @override - String? get nullableStringProp => - RealmObjectBase.get(this, 'nullableStringProp') as String?; - @override - set nullableStringProp(String? value) => - RealmObjectBase.set(this, 'nullableStringProp', value); - - @override - bool? get nullableBoolProp => - RealmObjectBase.get(this, 'nullableBoolProp') as bool?; - @override - set nullableBoolProp(bool? value) => - RealmObjectBase.set(this, 'nullableBoolProp', value); - - @override - DateTime? get nullableDateProp => - RealmObjectBase.get(this, 'nullableDateProp') as DateTime?; - @override - set nullableDateProp(DateTime? value) => - RealmObjectBase.set(this, 'nullableDateProp', value); - - @override - double? get nullableDoubleProp => - RealmObjectBase.get(this, 'nullableDoubleProp') as double?; - @override - set nullableDoubleProp(double? value) => - RealmObjectBase.set(this, 'nullableDoubleProp', value); - - @override - ObjectId? get nullableObjectIdProp => - RealmObjectBase.get(this, 'nullableObjectIdProp') as ObjectId?; - @override - set nullableObjectIdProp(ObjectId? value) => - RealmObjectBase.set(this, 'nullableObjectIdProp', value); - - @override - Uuid? get nullableUuidProp => - RealmObjectBase.get(this, 'nullableUuidProp') as Uuid?; - @override - set nullableUuidProp(Uuid? value) => - RealmObjectBase.set(this, 'nullableUuidProp', value); - - @override - int? get nullableIntProp => - RealmObjectBase.get(this, 'nullableIntProp') as int?; - @override - set nullableIntProp(int? value) => - RealmObjectBase.set(this, 'nullableIntProp', value); - - @override - Decimal128? get nullableDecimalProp => - RealmObjectBase.get(this, 'nullableDecimalProp') - as Decimal128?; - @override - set nullableDecimalProp(Decimal128? value) => - RealmObjectBase.set(this, 'nullableDecimalProp', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - AllTypes freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(AllTypes._); - return const SchemaObject(ObjectType.realmObject, AllTypes, 'AllTypes', [ - SchemaProperty('stringProp', RealmPropertyType.string), - SchemaProperty('boolProp', RealmPropertyType.bool), - SchemaProperty('dateProp', RealmPropertyType.timestamp), - SchemaProperty('doubleProp', RealmPropertyType.double), - SchemaProperty('objectIdProp', RealmPropertyType.objectid), - SchemaProperty('uuidProp', RealmPropertyType.uuid), - SchemaProperty('intProp', RealmPropertyType.int), - SchemaProperty('decimalProp', RealmPropertyType.decimal128), - SchemaProperty('nullableStringProp', RealmPropertyType.string, - optional: true), - SchemaProperty('nullableBoolProp', RealmPropertyType.bool, - optional: true), - SchemaProperty('nullableDateProp', RealmPropertyType.timestamp, - optional: true), - SchemaProperty('nullableDoubleProp', RealmPropertyType.double, - optional: true), - SchemaProperty('nullableObjectIdProp', RealmPropertyType.objectid, - optional: true), - SchemaProperty('nullableUuidProp', RealmPropertyType.uuid, - optional: true), - SchemaProperty('nullableIntProp', RealmPropertyType.int, optional: true), - SchemaProperty('nullableDecimalProp', RealmPropertyType.decimal128, - optional: true), - ]); - } -} - -class LinksClass extends _LinksClass - with RealmEntity, RealmObjectBase, RealmObject { - LinksClass( - Uuid id, { - LinksClass? link, - Iterable list = const [], - }) { - RealmObjectBase.set(this, 'id', id); - RealmObjectBase.set(this, 'link', link); - RealmObjectBase.set>( - this, 'list', RealmList(list)); - } - - LinksClass._(); - - @override - Uuid get id => RealmObjectBase.get(this, 'id') as Uuid; - @override - set id(Uuid value) => RealmObjectBase.set(this, 'id', value); - - @override - LinksClass? get link => - RealmObjectBase.get(this, 'link') as LinksClass?; - @override - set link(covariant LinksClass? value) => - RealmObjectBase.set(this, 'link', value); - - @override - RealmList get list => - RealmObjectBase.get(this, 'list') as RealmList; - @override - set list(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - LinksClass freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(LinksClass._); - return const SchemaObject( - ObjectType.realmObject, LinksClass, 'LinksClass', [ - SchemaProperty('id', RealmPropertyType.uuid, primaryKey: true), - SchemaProperty('link', RealmPropertyType.object, - optional: true, linkTarget: 'LinksClass'), - SchemaProperty('list', RealmPropertyType.object, - linkTarget: 'LinksClass', collectionType: RealmCollectionType.list), - ]); - } -} - -class AllCollections extends _AllCollections - with RealmEntity, RealmObjectBase, RealmObject { - AllCollections({ - Iterable strings = const [], - Iterable bools = const [], - Iterable dates = const [], - Iterable doubles = const [], - Iterable objectIds = const [], - Iterable uuids = const [], - Iterable ints = const [], - Iterable decimals = const [], - Iterable nullableStrings = const [], - Iterable nullableBools = const [], - Iterable nullableDates = const [], - Iterable nullableDoubles = const [], - Iterable nullableObjectIds = const [], - Iterable nullableUuids = const [], - Iterable nullableInts = const [], - Iterable nullableDecimals = const [], - }) { - RealmObjectBase.set>( - this, 'strings', RealmList(strings)); - RealmObjectBase.set>(this, 'bools', RealmList(bools)); - RealmObjectBase.set>( - this, 'dates', RealmList(dates)); - RealmObjectBase.set>( - this, 'doubles', RealmList(doubles)); - RealmObjectBase.set>( - this, 'objectIds', RealmList(objectIds)); - RealmObjectBase.set>(this, 'uuids', RealmList(uuids)); - RealmObjectBase.set>(this, 'ints', RealmList(ints)); - RealmObjectBase.set>( - this, 'decimals', RealmList(decimals)); - RealmObjectBase.set>( - this, 'nullableStrings', RealmList(nullableStrings)); - RealmObjectBase.set>( - this, 'nullableBools', RealmList(nullableBools)); - RealmObjectBase.set>( - this, 'nullableDates', RealmList(nullableDates)); - RealmObjectBase.set>( - this, 'nullableDoubles', RealmList(nullableDoubles)); - RealmObjectBase.set>( - this, 'nullableObjectIds', RealmList(nullableObjectIds)); - RealmObjectBase.set>( - this, 'nullableUuids', RealmList(nullableUuids)); - RealmObjectBase.set>( - this, 'nullableInts', RealmList(nullableInts)); - RealmObjectBase.set>( - this, 'nullableDecimals', RealmList(nullableDecimals)); - } - - AllCollections._(); - - @override - RealmList get strings => - RealmObjectBase.get(this, 'strings') as RealmList; - @override - set strings(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RealmList get bools => - RealmObjectBase.get(this, 'bools') as RealmList; - @override - set bools(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RealmList get dates => - RealmObjectBase.get(this, 'dates') as RealmList; - @override - set dates(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RealmList get doubles => - RealmObjectBase.get(this, 'doubles') as RealmList; - @override - set doubles(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RealmList get objectIds => - RealmObjectBase.get(this, 'objectIds') as RealmList; - @override - set objectIds(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RealmList get uuids => - RealmObjectBase.get(this, 'uuids') as RealmList; - @override - set uuids(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RealmList get ints => - RealmObjectBase.get(this, 'ints') as RealmList; - @override - set ints(covariant RealmList value) => throw RealmUnsupportedSetError(); - - @override - RealmList get decimals => - RealmObjectBase.get(this, 'decimals') - as RealmList; - @override - set decimals(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RealmList get nullableStrings => - RealmObjectBase.get(this, 'nullableStrings') - as RealmList; - @override - set nullableStrings(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RealmList get nullableBools => - RealmObjectBase.get(this, 'nullableBools') as RealmList; - @override - set nullableBools(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RealmList get nullableDates => - RealmObjectBase.get(this, 'nullableDates') - as RealmList; - @override - set nullableDates(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RealmList get nullableDoubles => - RealmObjectBase.get(this, 'nullableDoubles') - as RealmList; - @override - set nullableDoubles(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RealmList get nullableObjectIds => - RealmObjectBase.get(this, 'nullableObjectIds') - as RealmList; - @override - set nullableObjectIds(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RealmList get nullableUuids => - RealmObjectBase.get(this, 'nullableUuids') as RealmList; - @override - set nullableUuids(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RealmList get nullableInts => - RealmObjectBase.get(this, 'nullableInts') as RealmList; - @override - set nullableInts(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RealmList get nullableDecimals => - RealmObjectBase.get(this, 'nullableDecimals') - as RealmList; - @override - set nullableDecimals(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - AllCollections freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(AllCollections._); - return const SchemaObject( - ObjectType.realmObject, AllCollections, 'AllCollections', [ - SchemaProperty('strings', RealmPropertyType.string, - collectionType: RealmCollectionType.list), - SchemaProperty('bools', RealmPropertyType.bool, - collectionType: RealmCollectionType.list), - SchemaProperty('dates', RealmPropertyType.timestamp, - collectionType: RealmCollectionType.list), - SchemaProperty('doubles', RealmPropertyType.double, - collectionType: RealmCollectionType.list), - SchemaProperty('objectIds', RealmPropertyType.objectid, - collectionType: RealmCollectionType.list), - SchemaProperty('uuids', RealmPropertyType.uuid, - collectionType: RealmCollectionType.list), - SchemaProperty('ints', RealmPropertyType.int, - collectionType: RealmCollectionType.list), - SchemaProperty('decimals', RealmPropertyType.decimal128, - collectionType: RealmCollectionType.list), - SchemaProperty('nullableStrings', RealmPropertyType.string, - optional: true, collectionType: RealmCollectionType.list), - SchemaProperty('nullableBools', RealmPropertyType.bool, - optional: true, collectionType: RealmCollectionType.list), - SchemaProperty('nullableDates', RealmPropertyType.timestamp, - optional: true, collectionType: RealmCollectionType.list), - SchemaProperty('nullableDoubles', RealmPropertyType.double, - optional: true, collectionType: RealmCollectionType.list), - SchemaProperty('nullableObjectIds', RealmPropertyType.objectid, - optional: true, collectionType: RealmCollectionType.list), - SchemaProperty('nullableUuids', RealmPropertyType.uuid, - optional: true, collectionType: RealmCollectionType.list), - SchemaProperty('nullableInts', RealmPropertyType.int, - optional: true, collectionType: RealmCollectionType.list), - SchemaProperty('nullableDecimals', RealmPropertyType.decimal128, - optional: true, collectionType: RealmCollectionType.list), - ]); - } -} - -class NullableTypes extends _NullableTypes - with RealmEntity, RealmObjectBase, RealmObject { - NullableTypes( - ObjectId id, - ObjectId differentiator, { - String? stringProp, - bool? boolProp, - DateTime? dateProp, - double? doubleProp, - ObjectId? objectIdProp, - Uuid? uuidProp, - int? intProp, - Decimal128? decimalProp, - }) { - RealmObjectBase.set(this, '_id', id); - RealmObjectBase.set(this, 'differentiator', differentiator); - RealmObjectBase.set(this, 'stringProp', stringProp); - RealmObjectBase.set(this, 'boolProp', boolProp); - RealmObjectBase.set(this, 'dateProp', dateProp); - RealmObjectBase.set(this, 'doubleProp', doubleProp); - RealmObjectBase.set(this, 'objectIdProp', objectIdProp); - RealmObjectBase.set(this, 'uuidProp', uuidProp); - RealmObjectBase.set(this, 'intProp', intProp); - RealmObjectBase.set(this, 'decimalProp', decimalProp); - } - - NullableTypes._(); - - @override - ObjectId get id => RealmObjectBase.get(this, '_id') as ObjectId; - @override - set id(ObjectId value) => RealmObjectBase.set(this, '_id', value); - - @override - ObjectId get differentiator => - RealmObjectBase.get(this, 'differentiator') as ObjectId; - @override - set differentiator(ObjectId value) => - RealmObjectBase.set(this, 'differentiator', value); - - @override - String? get stringProp => - RealmObjectBase.get(this, 'stringProp') as String?; - @override - set stringProp(String? value) => - RealmObjectBase.set(this, 'stringProp', value); - - @override - bool? get boolProp => RealmObjectBase.get(this, 'boolProp') as bool?; - @override - set boolProp(bool? value) => RealmObjectBase.set(this, 'boolProp', value); - - @override - DateTime? get dateProp => - RealmObjectBase.get(this, 'dateProp') as DateTime?; - @override - set dateProp(DateTime? value) => RealmObjectBase.set(this, 'dateProp', value); - - @override - double? get doubleProp => - RealmObjectBase.get(this, 'doubleProp') as double?; - @override - set doubleProp(double? value) => - RealmObjectBase.set(this, 'doubleProp', value); - - @override - ObjectId? get objectIdProp => - RealmObjectBase.get(this, 'objectIdProp') as ObjectId?; - @override - set objectIdProp(ObjectId? value) => - RealmObjectBase.set(this, 'objectIdProp', value); - - @override - Uuid? get uuidProp => RealmObjectBase.get(this, 'uuidProp') as Uuid?; - @override - set uuidProp(Uuid? value) => RealmObjectBase.set(this, 'uuidProp', value); - - @override - int? get intProp => RealmObjectBase.get(this, 'intProp') as int?; - @override - set intProp(int? value) => RealmObjectBase.set(this, 'intProp', value); - - @override - Decimal128? get decimalProp => - RealmObjectBase.get(this, 'decimalProp') as Decimal128?; - @override - set decimalProp(Decimal128? value) => - RealmObjectBase.set(this, 'decimalProp', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - NullableTypes freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(NullableTypes._); - return const SchemaObject( - ObjectType.realmObject, NullableTypes, 'NullableTypes', [ - SchemaProperty('id', RealmPropertyType.objectid, - mapTo: '_id', primaryKey: true), - SchemaProperty('differentiator', RealmPropertyType.objectid), - SchemaProperty('stringProp', RealmPropertyType.string, optional: true), - SchemaProperty('boolProp', RealmPropertyType.bool, optional: true), - SchemaProperty('dateProp', RealmPropertyType.timestamp, optional: true), - SchemaProperty('doubleProp', RealmPropertyType.double, optional: true), - SchemaProperty('objectIdProp', RealmPropertyType.objectid, - optional: true), - SchemaProperty('uuidProp', RealmPropertyType.uuid, optional: true), - SchemaProperty('intProp', RealmPropertyType.int, optional: true), - SchemaProperty('decimalProp', RealmPropertyType.decimal128, - optional: true), - ]); - } -} - -class Event extends _Event with RealmEntity, RealmObjectBase, RealmObject { - Event( - ObjectId id, { - String? name, - bool? isCompleted, - int? durationInMinutes, - String? assignedTo, - }) { - RealmObjectBase.set(this, '_id', id); - RealmObjectBase.set(this, 'stringQueryField', name); - RealmObjectBase.set(this, 'boolQueryField', isCompleted); - RealmObjectBase.set(this, 'intQueryField', durationInMinutes); - RealmObjectBase.set(this, 'assignedTo', assignedTo); - } - - Event._(); - - @override - ObjectId get id => RealmObjectBase.get(this, '_id') as ObjectId; - @override - set id(ObjectId value) => RealmObjectBase.set(this, '_id', value); - - @override - String? get name => - RealmObjectBase.get(this, 'stringQueryField') as String?; - @override - set name(String? value) => - RealmObjectBase.set(this, 'stringQueryField', value); - - @override - bool? get isCompleted => - RealmObjectBase.get(this, 'boolQueryField') as bool?; - @override - set isCompleted(bool? value) => - RealmObjectBase.set(this, 'boolQueryField', value); - - @override - int? get durationInMinutes => - RealmObjectBase.get(this, 'intQueryField') as int?; - @override - set durationInMinutes(int? value) => - RealmObjectBase.set(this, 'intQueryField', value); - - @override - String? get assignedTo => - RealmObjectBase.get(this, 'assignedTo') as String?; - @override - set assignedTo(String? value) => - RealmObjectBase.set(this, 'assignedTo', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - Event freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(Event._); - return const SchemaObject(ObjectType.realmObject, Event, 'Event', [ - SchemaProperty('id', RealmPropertyType.objectid, - mapTo: '_id', primaryKey: true), - SchemaProperty('name', RealmPropertyType.string, - mapTo: 'stringQueryField', optional: true), - SchemaProperty('isCompleted', RealmPropertyType.bool, - mapTo: 'boolQueryField', optional: true), - SchemaProperty('durationInMinutes', RealmPropertyType.int, - mapTo: 'intQueryField', optional: true), - SchemaProperty('assignedTo', RealmPropertyType.string, optional: true), - ]); - } -} - -class Party extends _Party with RealmEntity, RealmObjectBase, RealmObject { - Party( - int year, { - Friend? host, - Party? previous, - Iterable guests = const [], - }) { - RealmObjectBase.set(this, 'host', host); - RealmObjectBase.set(this, 'year', year); - RealmObjectBase.set(this, 'previous', previous); - RealmObjectBase.set>( - this, 'guests', RealmList(guests)); - } - - Party._(); - - @override - Friend? get host => RealmObjectBase.get(this, 'host') as Friend?; - @override - set host(covariant Friend? value) => RealmObjectBase.set(this, 'host', value); - - @override - int get year => RealmObjectBase.get(this, 'year') as int; - @override - set year(int value) => RealmObjectBase.set(this, 'year', value); - - @override - RealmList get guests => - RealmObjectBase.get(this, 'guests') as RealmList; - @override - set guests(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - Party? get previous => RealmObjectBase.get(this, 'previous') as Party?; - @override - set previous(covariant Party? value) => - RealmObjectBase.set(this, 'previous', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - Party freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(Party._); - return const SchemaObject(ObjectType.realmObject, Party, 'Party', [ - SchemaProperty('host', RealmPropertyType.object, - optional: true, linkTarget: 'Friend'), - SchemaProperty('year', RealmPropertyType.int), - SchemaProperty('guests', RealmPropertyType.object, - linkTarget: 'Friend', collectionType: RealmCollectionType.list), - SchemaProperty('previous', RealmPropertyType.object, - optional: true, linkTarget: 'Party'), - ]); - } -} - -class Friend extends _Friend with RealmEntity, RealmObjectBase, RealmObject { - static var _defaultsSet = false; - - Friend( - String name, { - int age = 42, - Friend? bestFriend, - Iterable friends = const [], - }) { - if (!_defaultsSet) { - _defaultsSet = RealmObjectBase.setDefaults({ - 'age': 42, - }); - } - RealmObjectBase.set(this, 'name', name); - RealmObjectBase.set(this, 'age', age); - RealmObjectBase.set(this, 'bestFriend', bestFriend); - RealmObjectBase.set>( - this, 'friends', RealmList(friends)); - } - - Friend._(); - - @override - String get name => RealmObjectBase.get(this, 'name') as String; - @override - set name(String value) => RealmObjectBase.set(this, 'name', value); - - @override - int get age => RealmObjectBase.get(this, 'age') as int; - @override - set age(int value) => RealmObjectBase.set(this, 'age', value); - - @override - Friend? get bestFriend => - RealmObjectBase.get(this, 'bestFriend') as Friend?; - @override - set bestFriend(covariant Friend? value) => - RealmObjectBase.set(this, 'bestFriend', value); - - @override - RealmList get friends => - RealmObjectBase.get(this, 'friends') as RealmList; - @override - set friends(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - Friend freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(Friend._); - return const SchemaObject(ObjectType.realmObject, Friend, 'Friend', [ - SchemaProperty('name', RealmPropertyType.string, primaryKey: true), - SchemaProperty('age', RealmPropertyType.int), - SchemaProperty('bestFriend', RealmPropertyType.object, - optional: true, linkTarget: 'Friend'), - SchemaProperty('friends', RealmPropertyType.object, - linkTarget: 'Friend', collectionType: RealmCollectionType.list), - ]); - } -} - -class When extends _When with RealmEntity, RealmObjectBase, RealmObject { - When( - DateTime dateTimeUtc, - String locationName, - ) { - RealmObjectBase.set(this, 'dateTimeUtc', dateTimeUtc); - RealmObjectBase.set(this, 'locationName', locationName); - } - - When._(); - - @override - DateTime get dateTimeUtc => - RealmObjectBase.get(this, 'dateTimeUtc') as DateTime; - @override - set dateTimeUtc(DateTime value) => - RealmObjectBase.set(this, 'dateTimeUtc', value); - - @override - String get locationName => - RealmObjectBase.get(this, 'locationName') as String; - @override - set locationName(String value) => - RealmObjectBase.set(this, 'locationName', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - When freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(When._); - return const SchemaObject(ObjectType.realmObject, When, 'When', [ - SchemaProperty('dateTimeUtc', RealmPropertyType.timestamp), - SchemaProperty('locationName', RealmPropertyType.string), - ]); - } -} - -class Player extends _Player with RealmEntity, RealmObjectBase, RealmObject { - Player( - String name, { - Game? game, - Iterable scoresByRound = const [], - }) { - RealmObjectBase.set(this, 'name', name); - RealmObjectBase.set(this, 'game', game); - RealmObjectBase.set>( - this, 'scoresByRound', RealmList(scoresByRound)); - } - - Player._(); - - @override - String get name => RealmObjectBase.get(this, 'name') as String; - @override - set name(String value) => RealmObjectBase.set(this, 'name', value); - - @override - Game? get game => RealmObjectBase.get(this, 'game') as Game?; - @override - set game(covariant Game? value) => RealmObjectBase.set(this, 'game', value); - - @override - RealmList get scoresByRound => - RealmObjectBase.get(this, 'scoresByRound') as RealmList; - @override - set scoresByRound(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - Player freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(Player._); - return const SchemaObject(ObjectType.realmObject, Player, 'Player', [ - SchemaProperty('name', RealmPropertyType.string, primaryKey: true), - SchemaProperty('game', RealmPropertyType.object, - optional: true, linkTarget: 'Game'), - SchemaProperty('scoresByRound', RealmPropertyType.int, - optional: true, collectionType: RealmCollectionType.list), - ]); - } -} - -class Game extends _Game with RealmEntity, RealmObjectBase, RealmObject { - Game({ - Iterable winnerByRound = const [], - }) { - RealmObjectBase.set>( - this, 'winnerByRound', RealmList(winnerByRound)); - } - - Game._(); - - @override - RealmList get winnerByRound => - RealmObjectBase.get(this, 'winnerByRound') as RealmList; - @override - set winnerByRound(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - Game freeze() => RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(Game._); - return const SchemaObject(ObjectType.realmObject, Game, 'Game', [ - SchemaProperty('winnerByRound', RealmPropertyType.object, - linkTarget: 'Player', collectionType: RealmCollectionType.list), - ]); - } -} - -class AllTypesEmbedded extends _AllTypesEmbedded - with RealmEntity, RealmObjectBase, EmbeddedObject { - AllTypesEmbedded( - String stringProp, - bool boolProp, - DateTime dateProp, - double doubleProp, - ObjectId objectIdProp, - Uuid uuidProp, - int intProp, - Decimal128 decimalProp, { - String? nullableStringProp, - bool? nullableBoolProp, - DateTime? nullableDateProp, - double? nullableDoubleProp, - ObjectId? nullableObjectIdProp, - Uuid? nullableUuidProp, - int? nullableIntProp, - Decimal128? nullableDecimalProp, - Iterable strings = const [], - Iterable bools = const [], - Iterable dates = const [], - Iterable doubles = const [], - Iterable objectIds = const [], - Iterable uuids = const [], - Iterable ints = const [], - Iterable decimals = const [], - }) { - RealmObjectBase.set(this, 'stringProp', stringProp); - RealmObjectBase.set(this, 'boolProp', boolProp); - RealmObjectBase.set(this, 'dateProp', dateProp); - RealmObjectBase.set(this, 'doubleProp', doubleProp); - RealmObjectBase.set(this, 'objectIdProp', objectIdProp); - RealmObjectBase.set(this, 'uuidProp', uuidProp); - RealmObjectBase.set(this, 'intProp', intProp); - RealmObjectBase.set(this, 'decimalProp', decimalProp); - RealmObjectBase.set(this, 'nullableStringProp', nullableStringProp); - RealmObjectBase.set(this, 'nullableBoolProp', nullableBoolProp); - RealmObjectBase.set(this, 'nullableDateProp', nullableDateProp); - RealmObjectBase.set(this, 'nullableDoubleProp', nullableDoubleProp); - RealmObjectBase.set(this, 'nullableObjectIdProp', nullableObjectIdProp); - RealmObjectBase.set(this, 'nullableUuidProp', nullableUuidProp); - RealmObjectBase.set(this, 'nullableIntProp', nullableIntProp); - RealmObjectBase.set(this, 'nullableDecimalProp', nullableDecimalProp); - RealmObjectBase.set>( - this, 'strings', RealmList(strings)); - RealmObjectBase.set>(this, 'bools', RealmList(bools)); - RealmObjectBase.set>( - this, 'dates', RealmList(dates)); - RealmObjectBase.set>( - this, 'doubles', RealmList(doubles)); - RealmObjectBase.set>( - this, 'objectIds', RealmList(objectIds)); - RealmObjectBase.set>(this, 'uuids', RealmList(uuids)); - RealmObjectBase.set>(this, 'ints', RealmList(ints)); - RealmObjectBase.set>( - this, 'decimals', RealmList(decimals)); - } - - AllTypesEmbedded._(); - - @override - String get stringProp => - RealmObjectBase.get(this, 'stringProp') as String; - @override - set stringProp(String value) => - RealmObjectBase.set(this, 'stringProp', value); - - @override - bool get boolProp => RealmObjectBase.get(this, 'boolProp') as bool; - @override - set boolProp(bool value) => RealmObjectBase.set(this, 'boolProp', value); - - @override - DateTime get dateProp => - RealmObjectBase.get(this, 'dateProp') as DateTime; - @override - set dateProp(DateTime value) => RealmObjectBase.set(this, 'dateProp', value); - - @override - double get doubleProp => - RealmObjectBase.get(this, 'doubleProp') as double; - @override - set doubleProp(double value) => - RealmObjectBase.set(this, 'doubleProp', value); - - @override - ObjectId get objectIdProp => - RealmObjectBase.get(this, 'objectIdProp') as ObjectId; - @override - set objectIdProp(ObjectId value) => - RealmObjectBase.set(this, 'objectIdProp', value); - - @override - Uuid get uuidProp => RealmObjectBase.get(this, 'uuidProp') as Uuid; - @override - set uuidProp(Uuid value) => RealmObjectBase.set(this, 'uuidProp', value); - - @override - int get intProp => RealmObjectBase.get(this, 'intProp') as int; - @override - set intProp(int value) => RealmObjectBase.set(this, 'intProp', value); - - @override - Decimal128 get decimalProp => - RealmObjectBase.get(this, 'decimalProp') as Decimal128; - @override - set decimalProp(Decimal128 value) => - RealmObjectBase.set(this, 'decimalProp', value); - - @override - String? get nullableStringProp => - RealmObjectBase.get(this, 'nullableStringProp') as String?; - @override - set nullableStringProp(String? value) => - RealmObjectBase.set(this, 'nullableStringProp', value); - - @override - bool? get nullableBoolProp => - RealmObjectBase.get(this, 'nullableBoolProp') as bool?; - @override - set nullableBoolProp(bool? value) => - RealmObjectBase.set(this, 'nullableBoolProp', value); - - @override - DateTime? get nullableDateProp => - RealmObjectBase.get(this, 'nullableDateProp') as DateTime?; - @override - set nullableDateProp(DateTime? value) => - RealmObjectBase.set(this, 'nullableDateProp', value); - - @override - double? get nullableDoubleProp => - RealmObjectBase.get(this, 'nullableDoubleProp') as double?; - @override - set nullableDoubleProp(double? value) => - RealmObjectBase.set(this, 'nullableDoubleProp', value); - - @override - ObjectId? get nullableObjectIdProp => - RealmObjectBase.get(this, 'nullableObjectIdProp') as ObjectId?; - @override - set nullableObjectIdProp(ObjectId? value) => - RealmObjectBase.set(this, 'nullableObjectIdProp', value); - - @override - Uuid? get nullableUuidProp => - RealmObjectBase.get(this, 'nullableUuidProp') as Uuid?; - @override - set nullableUuidProp(Uuid? value) => - RealmObjectBase.set(this, 'nullableUuidProp', value); - - @override - int? get nullableIntProp => - RealmObjectBase.get(this, 'nullableIntProp') as int?; - @override - set nullableIntProp(int? value) => - RealmObjectBase.set(this, 'nullableIntProp', value); - - @override - Decimal128? get nullableDecimalProp => - RealmObjectBase.get(this, 'nullableDecimalProp') - as Decimal128?; - @override - set nullableDecimalProp(Decimal128? value) => - RealmObjectBase.set(this, 'nullableDecimalProp', value); - - @override - RealmList get strings => - RealmObjectBase.get(this, 'strings') as RealmList; - @override - set strings(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RealmList get bools => - RealmObjectBase.get(this, 'bools') as RealmList; - @override - set bools(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RealmList get dates => - RealmObjectBase.get(this, 'dates') as RealmList; - @override - set dates(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RealmList get doubles => - RealmObjectBase.get(this, 'doubles') as RealmList; - @override - set doubles(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RealmList get objectIds => - RealmObjectBase.get(this, 'objectIds') as RealmList; - @override - set objectIds(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RealmList get uuids => - RealmObjectBase.get(this, 'uuids') as RealmList; - @override - set uuids(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RealmList get ints => - RealmObjectBase.get(this, 'ints') as RealmList; - @override - set ints(covariant RealmList value) => throw RealmUnsupportedSetError(); - - @override - RealmList get decimals => - RealmObjectBase.get(this, 'decimals') - as RealmList; - @override - set decimals(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - AllTypesEmbedded freeze() => - RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(AllTypesEmbedded._); - return const SchemaObject( - ObjectType.embeddedObject, AllTypesEmbedded, 'AllTypesEmbedded', [ - SchemaProperty('stringProp', RealmPropertyType.string), - SchemaProperty('boolProp', RealmPropertyType.bool), - SchemaProperty('dateProp', RealmPropertyType.timestamp), - SchemaProperty('doubleProp', RealmPropertyType.double), - SchemaProperty('objectIdProp', RealmPropertyType.objectid), - SchemaProperty('uuidProp', RealmPropertyType.uuid), - SchemaProperty('intProp', RealmPropertyType.int), - SchemaProperty('decimalProp', RealmPropertyType.decimal128), - SchemaProperty('nullableStringProp', RealmPropertyType.string, - optional: true), - SchemaProperty('nullableBoolProp', RealmPropertyType.bool, - optional: true), - SchemaProperty('nullableDateProp', RealmPropertyType.timestamp, - optional: true), - SchemaProperty('nullableDoubleProp', RealmPropertyType.double, - optional: true), - SchemaProperty('nullableObjectIdProp', RealmPropertyType.objectid, - optional: true), - SchemaProperty('nullableUuidProp', RealmPropertyType.uuid, - optional: true), - SchemaProperty('nullableIntProp', RealmPropertyType.int, optional: true), - SchemaProperty('nullableDecimalProp', RealmPropertyType.decimal128, - optional: true), - SchemaProperty('strings', RealmPropertyType.string, - collectionType: RealmCollectionType.list), - SchemaProperty('bools', RealmPropertyType.bool, - collectionType: RealmCollectionType.list), - SchemaProperty('dates', RealmPropertyType.timestamp, - collectionType: RealmCollectionType.list), - SchemaProperty('doubles', RealmPropertyType.double, - collectionType: RealmCollectionType.list), - SchemaProperty('objectIds', RealmPropertyType.objectid, - collectionType: RealmCollectionType.list), - SchemaProperty('uuids', RealmPropertyType.uuid, - collectionType: RealmCollectionType.list), - SchemaProperty('ints', RealmPropertyType.int, - collectionType: RealmCollectionType.list), - SchemaProperty('decimals', RealmPropertyType.decimal128, - collectionType: RealmCollectionType.list), - ]); - } -} - -class ObjectWithEmbedded extends _ObjectWithEmbedded - with RealmEntity, RealmObjectBase, RealmObject { - ObjectWithEmbedded( - String id, { - Uuid? differentiator, - AllTypesEmbedded? singleObject, - RecursiveEmbedded1? recursiveObject, - Iterable list = const [], - Iterable recursiveList = const [], - }) { - RealmObjectBase.set(this, '_id', id); - RealmObjectBase.set(this, 'differentiator', differentiator); - RealmObjectBase.set(this, 'singleObject', singleObject); - RealmObjectBase.set(this, 'recursiveObject', recursiveObject); - RealmObjectBase.set>( - this, 'list', RealmList(list)); - RealmObjectBase.set>( - this, 'recursiveList', RealmList(recursiveList)); - } - - ObjectWithEmbedded._(); - - @override - String get id => RealmObjectBase.get(this, '_id') as String; - @override - set id(String value) => RealmObjectBase.set(this, '_id', value); - - @override - Uuid? get differentiator => - RealmObjectBase.get(this, 'differentiator') as Uuid?; - @override - set differentiator(Uuid? value) => - RealmObjectBase.set(this, 'differentiator', value); - - @override - AllTypesEmbedded? get singleObject => - RealmObjectBase.get(this, 'singleObject') - as AllTypesEmbedded?; - @override - set singleObject(covariant AllTypesEmbedded? value) => - RealmObjectBase.set(this, 'singleObject', value); - - @override - RealmList get list => - RealmObjectBase.get(this, 'list') - as RealmList; - @override - set list(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - RecursiveEmbedded1? get recursiveObject => - RealmObjectBase.get(this, 'recursiveObject') - as RecursiveEmbedded1?; - @override - set recursiveObject(covariant RecursiveEmbedded1? value) => - RealmObjectBase.set(this, 'recursiveObject', value); - - @override - RealmList get recursiveList => - RealmObjectBase.get(this, 'recursiveList') - as RealmList; - @override - set recursiveList(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - ObjectWithEmbedded freeze() => - RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(ObjectWithEmbedded._); - return const SchemaObject( - ObjectType.realmObject, ObjectWithEmbedded, 'ObjectWithEmbedded', [ - SchemaProperty('id', RealmPropertyType.string, - mapTo: '_id', primaryKey: true), - SchemaProperty('differentiator', RealmPropertyType.uuid, optional: true), - SchemaProperty('singleObject', RealmPropertyType.object, - optional: true, linkTarget: 'AllTypesEmbedded'), - SchemaProperty('list', RealmPropertyType.object, - linkTarget: 'AllTypesEmbedded', - collectionType: RealmCollectionType.list), - SchemaProperty('recursiveObject', RealmPropertyType.object, - optional: true, linkTarget: 'RecursiveEmbedded1'), - SchemaProperty('recursiveList', RealmPropertyType.object, - linkTarget: 'RecursiveEmbedded1', - collectionType: RealmCollectionType.list), - ]); - } -} - -class RecursiveEmbedded1 extends _RecursiveEmbedded1 - with RealmEntity, RealmObjectBase, EmbeddedObject { - RecursiveEmbedded1( - String value, { - RecursiveEmbedded2? child, - ObjectWithEmbedded? realmObject, - Iterable children = const [], - }) { - RealmObjectBase.set(this, 'value', value); - RealmObjectBase.set(this, 'child', child); - RealmObjectBase.set(this, 'realmObject', realmObject); - RealmObjectBase.set>( - this, 'children', RealmList(children)); - } - - RecursiveEmbedded1._(); - - @override - String get value => RealmObjectBase.get(this, 'value') as String; - @override - set value(String value) => RealmObjectBase.set(this, 'value', value); - - @override - RecursiveEmbedded2? get child => - RealmObjectBase.get(this, 'child') - as RecursiveEmbedded2?; - @override - set child(covariant RecursiveEmbedded2? value) => - RealmObjectBase.set(this, 'child', value); - - @override - RealmList get children => - RealmObjectBase.get(this, 'children') - as RealmList; - @override - set children(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - ObjectWithEmbedded? get realmObject => - RealmObjectBase.get(this, 'realmObject') - as ObjectWithEmbedded?; - @override - set realmObject(covariant ObjectWithEmbedded? value) => - RealmObjectBase.set(this, 'realmObject', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - RecursiveEmbedded1 freeze() => - RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(RecursiveEmbedded1._); - return const SchemaObject( - ObjectType.embeddedObject, RecursiveEmbedded1, 'RecursiveEmbedded1', [ - SchemaProperty('value', RealmPropertyType.string), - SchemaProperty('child', RealmPropertyType.object, - optional: true, linkTarget: 'RecursiveEmbedded2'), - SchemaProperty('children', RealmPropertyType.object, - linkTarget: 'RecursiveEmbedded2', - collectionType: RealmCollectionType.list), - SchemaProperty('realmObject', RealmPropertyType.object, - optional: true, linkTarget: 'ObjectWithEmbedded'), - ]); - } -} - -class RecursiveEmbedded2 extends _RecursiveEmbedded2 - with RealmEntity, RealmObjectBase, EmbeddedObject { - RecursiveEmbedded2( - String value, { - RecursiveEmbedded3? child, - ObjectWithEmbedded? realmObject, - Iterable children = const [], - }) { - RealmObjectBase.set(this, 'value', value); - RealmObjectBase.set(this, 'child', child); - RealmObjectBase.set(this, 'realmObject', realmObject); - RealmObjectBase.set>( - this, 'children', RealmList(children)); - } - - RecursiveEmbedded2._(); - - @override - String get value => RealmObjectBase.get(this, 'value') as String; - @override - set value(String value) => RealmObjectBase.set(this, 'value', value); - - @override - RecursiveEmbedded3? get child => - RealmObjectBase.get(this, 'child') - as RecursiveEmbedded3?; - @override - set child(covariant RecursiveEmbedded3? value) => - RealmObjectBase.set(this, 'child', value); - - @override - RealmList get children => - RealmObjectBase.get(this, 'children') - as RealmList; - @override - set children(covariant RealmList value) => - throw RealmUnsupportedSetError(); - - @override - ObjectWithEmbedded? get realmObject => - RealmObjectBase.get(this, 'realmObject') - as ObjectWithEmbedded?; - @override - set realmObject(covariant ObjectWithEmbedded? value) => - RealmObjectBase.set(this, 'realmObject', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - RecursiveEmbedded2 freeze() => - RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(RecursiveEmbedded2._); - return const SchemaObject( - ObjectType.embeddedObject, RecursiveEmbedded2, 'RecursiveEmbedded2', [ - SchemaProperty('value', RealmPropertyType.string), - SchemaProperty('child', RealmPropertyType.object, - optional: true, linkTarget: 'RecursiveEmbedded3'), - SchemaProperty('children', RealmPropertyType.object, - linkTarget: 'RecursiveEmbedded3', - collectionType: RealmCollectionType.list), - SchemaProperty('realmObject', RealmPropertyType.object, - optional: true, linkTarget: 'ObjectWithEmbedded'), - ]); - } -} - -class RecursiveEmbedded3 extends _RecursiveEmbedded3 - with RealmEntity, RealmObjectBase, EmbeddedObject { - RecursiveEmbedded3( - String value, - ) { - RealmObjectBase.set(this, 'value', value); - } - - RecursiveEmbedded3._(); - - @override - String get value => RealmObjectBase.get(this, 'value') as String; - @override - set value(String value) => RealmObjectBase.set(this, 'value', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - RecursiveEmbedded3 freeze() => - RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(RecursiveEmbedded3._); - return const SchemaObject( - ObjectType.embeddedObject, RecursiveEmbedded3, 'RecursiveEmbedded3', [ - SchemaProperty('value', RealmPropertyType.string), - ]); - } -} - -class ObjectWithDecimal extends _ObjectWithDecimal - with RealmEntity, RealmObjectBase, RealmObject { - ObjectWithDecimal( - Decimal128 decimal, { - Decimal128? nullableDecimal, - }) { - RealmObjectBase.set(this, 'decimal', decimal); - RealmObjectBase.set(this, 'nullableDecimal', nullableDecimal); - } - - ObjectWithDecimal._(); - - @override - Decimal128 get decimal => - RealmObjectBase.get(this, 'decimal') as Decimal128; - @override - set decimal(Decimal128 value) => RealmObjectBase.set(this, 'decimal', value); - - @override - Decimal128? get nullableDecimal => - RealmObjectBase.get(this, 'nullableDecimal') as Decimal128?; - @override - set nullableDecimal(Decimal128? value) => - RealmObjectBase.set(this, 'nullableDecimal', value); - - @override - Stream> get changes => - RealmObjectBase.getChanges(this); - - @override - ObjectWithDecimal freeze() => - RealmObjectBase.freezeObject(this); - - static SchemaObject get schema => _schema ??= _initSchema(); - static SchemaObject? _schema; - static SchemaObject _initSchema() { - RealmObjectBase.registerFactory(ObjectWithDecimal._); - return const SchemaObject( - ObjectType.realmObject, ObjectWithDecimal, 'ObjectWithDecimal', [ - SchemaProperty('decimal', RealmPropertyType.decimal128), - SchemaProperty('nullableDecimal', RealmPropertyType.decimal128, - optional: true), - ]); - } +EJsonValue encodeCar(Car value) { + return {'make': value.make.toEJson()}; +} + +Car decodeCar(EJsonValue ejson) { + return switch (ejson) { + {'make': EJsonValue make} => Car(make.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension CarEJsonEncoderExtension on Car { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeCar(this); +} + +EJsonValue encodePerson(Person value) { + return {'name': value.name.toEJson()}; +} + +Person decodePerson(EJsonValue ejson) { + return switch (ejson) { + {'name': EJsonValue name} => Person(name.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension PersonEJsonEncoderExtension on Person { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodePerson(this); +} + +EJsonValue encodeDog(Dog value) { + return { + 'name': value.name.toEJson(), + 'age': value.age.toEJson(), + 'owner': value.owner.toEJson() + }; +} + +Dog decodeDog(EJsonValue ejson) { + return switch (ejson) { + { + 'name': EJsonValue name, + 'age': EJsonValue age, + 'owner': EJsonValue owner + } => + Dog(name.to(), age: age.to(), owner: owner.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension DogEJsonEncoderExtension on Dog { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeDog(this); +} + +EJsonValue encodeTeam(Team value) { + return { + 'name': value.name.toEJson(), + 'players': value.players.toEJson(), + 'scores': value.scores.toEJson() + }; +} + +Team decodeTeam(EJsonValue ejson) { + return switch (ejson) { + { + 'name': EJsonValue name, + 'players': EJsonValue players, + 'scores': EJsonValue scores + } => + Team(name.to(), + players: players.to>(), + scores: scores.to>()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension TeamEJsonEncoderExtension on Team { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeTeam(this); +} + +EJsonValue encodeStudent(Student value) { + return { + 'number': value.number.toEJson(), + 'name': value.name.toEJson(), + 'yearOfBirth': value.yearOfBirth.toEJson(), + 'school': value.school.toEJson() + }; +} + +Student decodeStudent(EJsonValue ejson) { + return switch (ejson) { + { + 'number': EJsonValue number, + 'name': EJsonValue name, + 'yearOfBirth': EJsonValue yearOfBirth, + 'school': EJsonValue school + } => + Student(number.to(), + name: name.to(), + yearOfBirth: yearOfBirth.to(), + school: school.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension StudentEJsonEncoderExtension on Student { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeStudent(this); +} + +EJsonValue encodeSchool(School value) { + return { + 'name': value.name.toEJson(), + 'city': value.city.toEJson(), + 'branchOfSchool': value.branchOfSchool.toEJson(), + 'students': value.students.toEJson(), + 'branches': value.branches.toEJson() + }; +} + +School decodeSchool(EJsonValue ejson) { + return switch (ejson) { + { + 'name': EJsonValue name, + 'city': EJsonValue city, + 'branchOfSchool': EJsonValue branchOfSchool, + 'students': EJsonValue students, + 'branches': EJsonValue branches + } => + School(name.to(), + city: city.to(), + branchOfSchool: branchOfSchool.to(), + students: students.to>(), + branches: branches.to>()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension SchoolEJsonEncoderExtension on School { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeSchool(this); +} + +EJsonValue encodeRemappedClass(RemappedClass value) { + return { + 'remappedProperty': value.remappedProperty.toEJson(), + 'listProperty': value.listProperty.toEJson() + }; +} + +RemappedClass decodeRemappedClass(EJsonValue ejson) { + return switch (ejson) { + { + 'remappedProperty': EJsonValue remappedProperty, + 'listProperty': EJsonValue listProperty + } => + RemappedClass(remappedProperty.to(), + listProperty: listProperty.to>()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension RemappedClassEJsonEncoderExtension on RemappedClass { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeRemappedClass(this); +} + +EJsonValue encodeTask(Task value) { + return {'id': value.id.toEJson()}; +} + +Task decodeTask(EJsonValue ejson) { + return switch (ejson) { + {'id': EJsonValue id} => Task(id.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension TaskEJsonEncoderExtension on Task { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeTask(this); +} + +EJsonValue encodeProduct(Product value) { + return {'id': value.id.toEJson(), 'name': value.name.toEJson()}; +} + +Product decodeProduct(EJsonValue ejson) { + return switch (ejson) { + {'id': EJsonValue id, 'name': EJsonValue name} => + Product(id.to(), name.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension ProductEJsonEncoderExtension on Product { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeProduct(this); +} + +EJsonValue encodeSchedule(Schedule value) { + return {'id': value.id.toEJson(), 'tasks': value.tasks.toEJson()}; +} + +Schedule decodeSchedule(EJsonValue ejson) { + return switch (ejson) { + {'id': EJsonValue id, 'tasks': EJsonValue tasks} => + Schedule(id.to(), tasks: tasks.to>()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension ScheduleEJsonEncoderExtension on Schedule { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeSchedule(this); +} + +EJsonValue encodeAllTypes(AllTypes value) { + return { + 'stringProp': value.stringProp.toEJson(), + 'boolProp': value.boolProp.toEJson(), + 'dateProp': value.dateProp.toEJson(), + 'doubleProp': value.doubleProp.toEJson(), + 'objectIdProp': value.objectIdProp.toEJson(), + 'uuidProp': value.uuidProp.toEJson(), + 'intProp': value.intProp.toEJson(), + 'decimalProp': value.decimalProp.toEJson(), + 'nullableStringProp': value.nullableStringProp.toEJson(), + 'nullableBoolProp': value.nullableBoolProp.toEJson(), + 'nullableDateProp': value.nullableDateProp.toEJson(), + 'nullableDoubleProp': value.nullableDoubleProp.toEJson(), + 'nullableObjectIdProp': value.nullableObjectIdProp.toEJson(), + 'nullableUuidProp': value.nullableUuidProp.toEJson(), + 'nullableIntProp': value.nullableIntProp.toEJson(), + 'nullableDecimalProp': value.nullableDecimalProp.toEJson() + }; +} + +AllTypes decodeAllTypes(EJsonValue ejson) { + return switch (ejson) { + { + 'stringProp': EJsonValue stringProp, + 'boolProp': EJsonValue boolProp, + 'dateProp': EJsonValue dateProp, + 'doubleProp': EJsonValue doubleProp, + 'objectIdProp': EJsonValue objectIdProp, + 'uuidProp': EJsonValue uuidProp, + 'intProp': EJsonValue intProp, + 'decimalProp': EJsonValue decimalProp, + 'nullableStringProp': EJsonValue nullableStringProp, + 'nullableBoolProp': EJsonValue nullableBoolProp, + 'nullableDateProp': EJsonValue nullableDateProp, + 'nullableDoubleProp': EJsonValue nullableDoubleProp, + 'nullableObjectIdProp': EJsonValue nullableObjectIdProp, + 'nullableUuidProp': EJsonValue nullableUuidProp, + 'nullableIntProp': EJsonValue nullableIntProp, + 'nullableDecimalProp': EJsonValue nullableDecimalProp + } => + AllTypes( + stringProp.to(), + boolProp.to(), + dateProp.to(), + doubleProp.to(), + objectIdProp.to(), + uuidProp.to(), + intProp.to(), + decimalProp.to(), + nullableStringProp: nullableStringProp.to(), + nullableBoolProp: nullableBoolProp.to(), + nullableDateProp: nullableDateProp.to(), + nullableDoubleProp: nullableDoubleProp.to(), + nullableObjectIdProp: nullableObjectIdProp.to(), + nullableUuidProp: nullableUuidProp.to(), + nullableIntProp: nullableIntProp.to(), + nullableDecimalProp: nullableDecimalProp.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension AllTypesEJsonEncoderExtension on AllTypes { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeAllTypes(this); +} + +EJsonValue encodeLinksClass(LinksClass value) { + return { + 'id': value.id.toEJson(), + 'link': value.link.toEJson(), + 'list': value.list.toEJson() + }; +} + +LinksClass decodeLinksClass(EJsonValue ejson) { + return switch (ejson) { + {'id': EJsonValue id, 'link': EJsonValue link, 'list': EJsonValue list} => + LinksClass(id.to(), + link: link.to(), list: list.to>()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension LinksClassEJsonEncoderExtension on LinksClass { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeLinksClass(this); +} + +EJsonValue encodeAllCollections(AllCollections value) { + return { + 'strings': value.strings.toEJson(), + 'bools': value.bools.toEJson(), + 'dates': value.dates.toEJson(), + 'doubles': value.doubles.toEJson(), + 'objectIds': value.objectIds.toEJson(), + 'uuids': value.uuids.toEJson(), + 'ints': value.ints.toEJson(), + 'decimals': value.decimals.toEJson(), + 'nullableStrings': value.nullableStrings.toEJson(), + 'nullableBools': value.nullableBools.toEJson(), + 'nullableDates': value.nullableDates.toEJson(), + 'nullableDoubles': value.nullableDoubles.toEJson(), + 'nullableObjectIds': value.nullableObjectIds.toEJson(), + 'nullableUuids': value.nullableUuids.toEJson(), + 'nullableInts': value.nullableInts.toEJson(), + 'nullableDecimals': value.nullableDecimals.toEJson() + }; +} + +AllCollections decodeAllCollections(EJsonValue ejson) { + return switch (ejson) { + { + 'strings': EJsonValue strings, + 'bools': EJsonValue bools, + 'dates': EJsonValue dates, + 'doubles': EJsonValue doubles, + 'objectIds': EJsonValue objectIds, + 'uuids': EJsonValue uuids, + 'ints': EJsonValue ints, + 'decimals': EJsonValue decimals, + 'nullableStrings': EJsonValue nullableStrings, + 'nullableBools': EJsonValue nullableBools, + 'nullableDates': EJsonValue nullableDates, + 'nullableDoubles': EJsonValue nullableDoubles, + 'nullableObjectIds': EJsonValue nullableObjectIds, + 'nullableUuids': EJsonValue nullableUuids, + 'nullableInts': EJsonValue nullableInts, + 'nullableDecimals': EJsonValue nullableDecimals + } => + AllCollections( + strings: strings.to>(), + bools: bools.to>(), + dates: dates.to>(), + doubles: doubles.to>(), + objectIds: objectIds.to>(), + uuids: uuids.to>(), + ints: ints.to>(), + decimals: decimals.to>(), + nullableStrings: nullableStrings.to>(), + nullableBools: nullableBools.to>(), + nullableDates: nullableDates.to>(), + nullableDoubles: nullableDoubles.to>(), + nullableObjectIds: nullableObjectIds.to>(), + nullableUuids: nullableUuids.to>(), + nullableInts: nullableInts.to>(), + nullableDecimals: nullableDecimals.to>()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension AllCollectionsEJsonEncoderExtension on AllCollections { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeAllCollections(this); +} + +EJsonValue encodeNullableTypes(NullableTypes value) { + return { + 'id': value.id.toEJson(), + 'differentiator': value.differentiator.toEJson(), + 'stringProp': value.stringProp.toEJson(), + 'boolProp': value.boolProp.toEJson(), + 'dateProp': value.dateProp.toEJson(), + 'doubleProp': value.doubleProp.toEJson(), + 'objectIdProp': value.objectIdProp.toEJson(), + 'uuidProp': value.uuidProp.toEJson(), + 'intProp': value.intProp.toEJson(), + 'decimalProp': value.decimalProp.toEJson() + }; +} + +NullableTypes decodeNullableTypes(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'differentiator': EJsonValue differentiator, + 'stringProp': EJsonValue stringProp, + 'boolProp': EJsonValue boolProp, + 'dateProp': EJsonValue dateProp, + 'doubleProp': EJsonValue doubleProp, + 'objectIdProp': EJsonValue objectIdProp, + 'uuidProp': EJsonValue uuidProp, + 'intProp': EJsonValue intProp, + 'decimalProp': EJsonValue decimalProp + } => + NullableTypes(id.to(), differentiator.to(), + stringProp: stringProp.to(), + boolProp: boolProp.to(), + dateProp: dateProp.to(), + doubleProp: doubleProp.to(), + objectIdProp: objectIdProp.to(), + uuidProp: uuidProp.to(), + intProp: intProp.to(), + decimalProp: decimalProp.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension NullableTypesEJsonEncoderExtension on NullableTypes { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeNullableTypes(this); +} + +EJsonValue encodeEvent(Event value) { + return { + 'id': value.id.toEJson(), + 'name': value.name.toEJson(), + 'isCompleted': value.isCompleted.toEJson(), + 'durationInMinutes': value.durationInMinutes.toEJson(), + 'assignedTo': value.assignedTo.toEJson() + }; +} + +Event decodeEvent(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'name': EJsonValue name, + 'isCompleted': EJsonValue isCompleted, + 'durationInMinutes': EJsonValue durationInMinutes, + 'assignedTo': EJsonValue assignedTo + } => + Event(id.to(), + name: name.to(), + isCompleted: isCompleted.to(), + durationInMinutes: durationInMinutes.to(), + assignedTo: assignedTo.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension EventEJsonEncoderExtension on Event { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeEvent(this); +} + +EJsonValue encodeParty(Party value) { + return { + 'year': value.year.toEJson(), + 'host': value.host.toEJson(), + 'previous': value.previous.toEJson(), + 'guests': value.guests.toEJson() + }; +} + +Party decodeParty(EJsonValue ejson) { + return switch (ejson) { + { + 'year': EJsonValue year, + 'host': EJsonValue host, + 'previous': EJsonValue previous, + 'guests': EJsonValue guests + } => + Party(year.to(), + host: host.to(), + previous: previous.to(), + guests: guests.to>()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension PartyEJsonEncoderExtension on Party { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeParty(this); +} + +EJsonValue encodeFriend(Friend value) { + return { + 'name': value.name.toEJson(), + 'age': value.age.toEJson(), + 'bestFriend': value.bestFriend.toEJson(), + 'friends': value.friends.toEJson() + }; +} + +Friend decodeFriend(EJsonValue ejson) { + return switch (ejson) { + { + 'name': EJsonValue name, + 'age': EJsonValue age, + 'bestFriend': EJsonValue bestFriend, + 'friends': EJsonValue friends + } => + Friend(name.to(), + age: age.to(), + bestFriend: bestFriend.to(), + friends: friends.to>()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension FriendEJsonEncoderExtension on Friend { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeFriend(this); +} + +EJsonValue encodeWhen(When value) { + return { + 'dateTimeUtc': value.dateTimeUtc.toEJson(), + 'locationName': value.locationName.toEJson() + }; +} + +When decodeWhen(EJsonValue ejson) { + return switch (ejson) { + { + 'dateTimeUtc': EJsonValue dateTimeUtc, + 'locationName': EJsonValue locationName + } => + When(dateTimeUtc.to(), locationName.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension WhenEJsonEncoderExtension on When { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeWhen(this); +} + +EJsonValue encodePlayer(Player value) { + return { + 'name': value.name.toEJson(), + 'game': value.game.toEJson(), + 'scoresByRound': value.scoresByRound.toEJson() + }; +} + +Player decodePlayer(EJsonValue ejson) { + return switch (ejson) { + { + 'name': EJsonValue name, + 'game': EJsonValue game, + 'scoresByRound': EJsonValue scoresByRound + } => + Player(name.to(), + game: game.to(), + scoresByRound: scoresByRound.to>()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension PlayerEJsonEncoderExtension on Player { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodePlayer(this); +} + +EJsonValue encodeGame(Game value) { + return {'winnerByRound': value.winnerByRound.toEJson()}; +} + +Game decodeGame(EJsonValue ejson) { + return switch (ejson) { + {'winnerByRound': EJsonValue winnerByRound} => + Game(winnerByRound: winnerByRound.to>()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension GameEJsonEncoderExtension on Game { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeGame(this); +} + +EJsonValue encodeAllTypesEmbedded(AllTypesEmbedded value) { + return { + 'stringProp': value.stringProp.toEJson(), + 'boolProp': value.boolProp.toEJson(), + 'dateProp': value.dateProp.toEJson(), + 'doubleProp': value.doubleProp.toEJson(), + 'objectIdProp': value.objectIdProp.toEJson(), + 'uuidProp': value.uuidProp.toEJson(), + 'intProp': value.intProp.toEJson(), + 'decimalProp': value.decimalProp.toEJson(), + 'nullableStringProp': value.nullableStringProp.toEJson(), + 'nullableBoolProp': value.nullableBoolProp.toEJson(), + 'nullableDateProp': value.nullableDateProp.toEJson(), + 'nullableDoubleProp': value.nullableDoubleProp.toEJson(), + 'nullableObjectIdProp': value.nullableObjectIdProp.toEJson(), + 'nullableUuidProp': value.nullableUuidProp.toEJson(), + 'nullableIntProp': value.nullableIntProp.toEJson(), + 'nullableDecimalProp': value.nullableDecimalProp.toEJson(), + 'strings': value.strings.toEJson(), + 'bools': value.bools.toEJson(), + 'dates': value.dates.toEJson(), + 'doubles': value.doubles.toEJson(), + 'objectIds': value.objectIds.toEJson(), + 'uuids': value.uuids.toEJson(), + 'ints': value.ints.toEJson(), + 'decimals': value.decimals.toEJson() + }; +} + +AllTypesEmbedded decodeAllTypesEmbedded(EJsonValue ejson) { + return switch (ejson) { + { + 'stringProp': EJsonValue stringProp, + 'boolProp': EJsonValue boolProp, + 'dateProp': EJsonValue dateProp, + 'doubleProp': EJsonValue doubleProp, + 'objectIdProp': EJsonValue objectIdProp, + 'uuidProp': EJsonValue uuidProp, + 'intProp': EJsonValue intProp, + 'decimalProp': EJsonValue decimalProp, + 'nullableStringProp': EJsonValue nullableStringProp, + 'nullableBoolProp': EJsonValue nullableBoolProp, + 'nullableDateProp': EJsonValue nullableDateProp, + 'nullableDoubleProp': EJsonValue nullableDoubleProp, + 'nullableObjectIdProp': EJsonValue nullableObjectIdProp, + 'nullableUuidProp': EJsonValue nullableUuidProp, + 'nullableIntProp': EJsonValue nullableIntProp, + 'nullableDecimalProp': EJsonValue nullableDecimalProp, + 'strings': EJsonValue strings, + 'bools': EJsonValue bools, + 'dates': EJsonValue dates, + 'doubles': EJsonValue doubles, + 'objectIds': EJsonValue objectIds, + 'uuids': EJsonValue uuids, + 'ints': EJsonValue ints, + 'decimals': EJsonValue decimals + } => + AllTypesEmbedded( + stringProp.to(), + boolProp.to(), + dateProp.to(), + doubleProp.to(), + objectIdProp.to(), + uuidProp.to(), + intProp.to(), + decimalProp.to(), + nullableStringProp: nullableStringProp.to(), + nullableBoolProp: nullableBoolProp.to(), + nullableDateProp: nullableDateProp.to(), + nullableDoubleProp: nullableDoubleProp.to(), + nullableObjectIdProp: nullableObjectIdProp.to(), + nullableUuidProp: nullableUuidProp.to(), + nullableIntProp: nullableIntProp.to(), + nullableDecimalProp: nullableDecimalProp.to(), + strings: strings.to>(), + bools: bools.to>(), + dates: dates.to>(), + doubles: doubles.to>(), + objectIds: objectIds.to>(), + uuids: uuids.to>(), + ints: ints.to>(), + decimals: decimals.to>()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension AllTypesEmbeddedEJsonEncoderExtension on AllTypesEmbedded { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeAllTypesEmbedded(this); +} + +EJsonValue encodeObjectWithEmbedded(ObjectWithEmbedded value) { + return { + 'id': value.id.toEJson(), + 'differentiator': value.differentiator.toEJson(), + 'singleObject': value.singleObject.toEJson(), + 'recursiveObject': value.recursiveObject.toEJson(), + 'list': value.list.toEJson(), + 'recursiveList': value.recursiveList.toEJson() + }; +} + +ObjectWithEmbedded decodeObjectWithEmbedded(EJsonValue ejson) { + return switch (ejson) { + { + 'id': EJsonValue id, + 'differentiator': EJsonValue differentiator, + 'singleObject': EJsonValue singleObject, + 'recursiveObject': EJsonValue recursiveObject, + 'list': EJsonValue list, + 'recursiveList': EJsonValue recursiveList + } => + ObjectWithEmbedded(id.to(), + differentiator: differentiator.to(), + singleObject: singleObject.to(), + recursiveObject: recursiveObject.to(), + list: list.to>(), + recursiveList: recursiveList.to>()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension ObjectWithEmbeddedEJsonEncoderExtension on ObjectWithEmbedded { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeObjectWithEmbedded(this); +} + +EJsonValue encodeRecursiveEmbedded1(RecursiveEmbedded1 value) { + return { + 'value': value.value.toEJson(), + 'child': value.child.toEJson(), + 'realmObject': value.realmObject.toEJson(), + 'children': value.children.toEJson() + }; +} + +RecursiveEmbedded1 decodeRecursiveEmbedded1(EJsonValue ejson) { + return switch (ejson) { + { + 'value': EJsonValue value, + 'child': EJsonValue child, + 'realmObject': EJsonValue realmObject, + 'children': EJsonValue children + } => + RecursiveEmbedded1(value.to(), + child: child.to(), + realmObject: realmObject.to(), + children: children.to>()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension RecursiveEmbedded1EJsonEncoderExtension on RecursiveEmbedded1 { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeRecursiveEmbedded1(this); +} + +EJsonValue encodeRecursiveEmbedded2(RecursiveEmbedded2 value) { + return { + 'value': value.value.toEJson(), + 'child': value.child.toEJson(), + 'realmObject': value.realmObject.toEJson(), + 'children': value.children.toEJson() + }; +} + +RecursiveEmbedded2 decodeRecursiveEmbedded2(EJsonValue ejson) { + return switch (ejson) { + { + 'value': EJsonValue value, + 'child': EJsonValue child, + 'realmObject': EJsonValue realmObject, + 'children': EJsonValue children + } => + RecursiveEmbedded2(value.to(), + child: child.to(), + realmObject: realmObject.to(), + children: children.to>()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension RecursiveEmbedded2EJsonEncoderExtension on RecursiveEmbedded2 { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeRecursiveEmbedded2(this); +} + +EJsonValue encodeRecursiveEmbedded3(RecursiveEmbedded3 value) { + return {'value': value.value.toEJson()}; +} + +RecursiveEmbedded3 decodeRecursiveEmbedded3(EJsonValue ejson) { + return switch (ejson) { + {'value': EJsonValue value} => RecursiveEmbedded3(value.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension RecursiveEmbedded3EJsonEncoderExtension on RecursiveEmbedded3 { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeRecursiveEmbedded3(this); +} + +EJsonValue encodeObjectWithDecimal(ObjectWithDecimal value) { + return { + 'decimal': value.decimal.toEJson(), + 'nullableDecimal': value.nullableDecimal.toEJson() + }; +} + +ObjectWithDecimal decodeObjectWithDecimal(EJsonValue ejson) { + return switch (ejson) { + { + 'decimal': EJsonValue decimal, + 'nullableDecimal': EJsonValue nullableDecimal + } => + ObjectWithDecimal(decimal.to(), + nullableDecimal: nullableDecimal.to()), + _ => raiseInvalidEJson(ejson), + }; +} + +extension ObjectWithDecimalEJsonEncoderExtension on ObjectWithDecimal { + @pragma('vm:prefer-inline') + EJsonValue toEJson() => encodeObjectWithDecimal(this); } diff --git a/test/test.realm.dart b/test/test.realm.dart new file mode 100644 index 0000000000..9aa693bbdc --- /dev/null +++ b/test/test.realm.dart @@ -0,0 +1,2017 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'test.dart'; + +// ************************************************************************** +// RealmObjectGenerator +// ************************************************************************** + +class Car extends _Car with RealmEntity, RealmObjectBase, RealmObject { + @ejson + Car( + String make, + ) { + RealmObjectBase.set(this, 'make', make); + } + + Car._(); + + @override + String get make => RealmObjectBase.get(this, 'make') as String; + @override + set make(String value) => RealmObjectBase.set(this, 'make', 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('make', RealmPropertyType.string, primaryKey: true), + ]); + } +} + +class Person extends _Person with RealmEntity, RealmObjectBase, RealmObject { + @ejson + Person( + String name, + ) { + RealmObjectBase.set(this, 'name', name); + } + + Person._(); + + @override + String get name => RealmObjectBase.get(this, 'name') as String; + @override + set name(String value) => RealmObjectBase.set(this, 'name', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + Person freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(Person._); + return const SchemaObject(ObjectType.realmObject, Person, 'Person', [ + SchemaProperty('name', RealmPropertyType.string), + ]); + } +} + +class Dog extends _Dog with RealmEntity, RealmObjectBase, RealmObject { + @ejson + Dog( + String name, { + int? age, + Person? owner, + }) { + RealmObjectBase.set(this, 'name', name); + RealmObjectBase.set(this, 'age', age); + RealmObjectBase.set(this, 'owner', owner); + } + + Dog._(); + + @override + String get name => RealmObjectBase.get(this, 'name') as String; + @override + set name(String value) => RealmObjectBase.set(this, 'name', value); + + @override + int? get age => RealmObjectBase.get(this, 'age') as int?; + @override + set age(int? value) => RealmObjectBase.set(this, 'age', value); + + @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 + Dog freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(Dog._); + return const SchemaObject(ObjectType.realmObject, Dog, 'Dog', [ + SchemaProperty('name', RealmPropertyType.string, primaryKey: true), + SchemaProperty('age', RealmPropertyType.int, optional: true), + SchemaProperty('owner', RealmPropertyType.object, + optional: true, linkTarget: 'Person'), + ]); + } +} + +class Team extends _Team with RealmEntity, RealmObjectBase, RealmObject { + @ejson + Team( + String name, { + Iterable players = const [], + Iterable scores = const [], + }) { + RealmObjectBase.set(this, 'name', name); + RealmObjectBase.set>( + this, 'players', RealmList(players)); + RealmObjectBase.set>(this, 'scores', RealmList(scores)); + } + + Team._(); + + @override + String get name => RealmObjectBase.get(this, 'name') as String; + @override + set name(String value) => RealmObjectBase.set(this, 'name', value); + + @override + RealmList get players => + RealmObjectBase.get(this, 'players') as RealmList; + @override + set players(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RealmList get scores => + RealmObjectBase.get(this, 'scores') as RealmList; + @override + set scores(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + Team freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(Team._); + return const SchemaObject(ObjectType.realmObject, Team, 'Team', [ + SchemaProperty('name', RealmPropertyType.string), + SchemaProperty('players', RealmPropertyType.object, + linkTarget: 'Person', collectionType: RealmCollectionType.list), + SchemaProperty('scores', RealmPropertyType.int, + collectionType: RealmCollectionType.list), + ]); + } +} + +class Student extends _Student with RealmEntity, RealmObjectBase, RealmObject { + @ejson + Student( + int number, { + String? name, + int? yearOfBirth, + School? school, + }) { + RealmObjectBase.set(this, 'number', number); + RealmObjectBase.set(this, 'name', name); + RealmObjectBase.set(this, 'yearOfBirth', yearOfBirth); + RealmObjectBase.set(this, 'school', school); + } + + Student._(); + + @override + int get number => RealmObjectBase.get(this, 'number') as int; + @override + set number(int value) => RealmObjectBase.set(this, 'number', value); + + @override + String? get name => RealmObjectBase.get(this, 'name') as String?; + @override + set name(String? value) => RealmObjectBase.set(this, 'name', value); + + @override + int? get yearOfBirth => RealmObjectBase.get(this, 'yearOfBirth') as int?; + @override + set yearOfBirth(int? value) => + RealmObjectBase.set(this, 'yearOfBirth', value); + + @override + School? get school => RealmObjectBase.get(this, 'school') as School?; + @override + set school(covariant School? value) => + RealmObjectBase.set(this, 'school', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + Student freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(Student._); + return const SchemaObject(ObjectType.realmObject, Student, 'Student', [ + SchemaProperty('number', RealmPropertyType.int, primaryKey: true), + SchemaProperty('name', RealmPropertyType.string, optional: true), + SchemaProperty('yearOfBirth', RealmPropertyType.int, optional: true), + SchemaProperty('school', RealmPropertyType.object, + optional: true, linkTarget: 'School'), + ]); + } +} + +class School extends _School with RealmEntity, RealmObjectBase, RealmObject { + @ejson + School( + String name, { + String? city, + School? branchOfSchool, + Iterable students = const [], + Iterable branches = const [], + }) { + RealmObjectBase.set(this, 'name', name); + RealmObjectBase.set(this, 'city', city); + RealmObjectBase.set(this, 'branchOfSchool', branchOfSchool); + RealmObjectBase.set>( + this, 'students', RealmList(students)); + RealmObjectBase.set>( + this, 'branches', RealmList(branches)); + } + + School._(); + + @override + String get name => RealmObjectBase.get(this, 'name') as String; + @override + set name(String value) => RealmObjectBase.set(this, 'name', value); + + @override + String? get city => RealmObjectBase.get(this, 'city') as String?; + @override + set city(String? value) => RealmObjectBase.set(this, 'city', value); + + @override + RealmList get students => + RealmObjectBase.get(this, 'students') as RealmList; + @override + set students(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + School? get branchOfSchool => + RealmObjectBase.get(this, 'branchOfSchool') as School?; + @override + set branchOfSchool(covariant School? value) => + RealmObjectBase.set(this, 'branchOfSchool', value); + + @override + RealmList get branches => + RealmObjectBase.get(this, 'branches') as RealmList; + @override + set branches(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + School freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(School._); + return const SchemaObject(ObjectType.realmObject, School, 'School', [ + SchemaProperty('name', RealmPropertyType.string, primaryKey: true), + SchemaProperty('city', RealmPropertyType.string, optional: true), + SchemaProperty('students', RealmPropertyType.object, + linkTarget: 'Student', collectionType: RealmCollectionType.list), + SchemaProperty('branchOfSchool', RealmPropertyType.object, + optional: true, linkTarget: 'School'), + SchemaProperty('branches', RealmPropertyType.object, + linkTarget: 'School', collectionType: RealmCollectionType.list), + ]); + } +} + +class RemappedClass extends $RemappedClass + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + RemappedClass( + String remappedProperty, { + Iterable listProperty = const [], + }) { + RealmObjectBase.set(this, 'primitive_property', remappedProperty); + RealmObjectBase.set>( + this, 'list-with-dashes', RealmList(listProperty)); + } + + RemappedClass._(); + + @override + String get remappedProperty => + RealmObjectBase.get(this, 'primitive_property') as String; + @override + set remappedProperty(String value) => + RealmObjectBase.set(this, 'primitive_property', value); + + @override + RealmList get listProperty => + RealmObjectBase.get(this, 'list-with-dashes') + as RealmList; + @override + set listProperty(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + RemappedClass freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(RemappedClass._); + return const SchemaObject( + ObjectType.realmObject, RemappedClass, 'myRemappedClass', [ + SchemaProperty('remappedProperty', RealmPropertyType.string, + mapTo: 'primitive_property'), + SchemaProperty('listProperty', RealmPropertyType.object, + mapTo: 'list-with-dashes', + linkTarget: 'myRemappedClass', + collectionType: RealmCollectionType.list), + ]); + } +} + +class Task extends _Task with RealmEntity, RealmObjectBase, RealmObject { + @ejson + Task( + ObjectId id, + ) { + RealmObjectBase.set(this, '_id', id); + } + + Task._(); + + @override + ObjectId get id => RealmObjectBase.get(this, '_id') as ObjectId; + @override + set id(ObjectId value) => RealmObjectBase.set(this, '_id', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + Task freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(Task._); + return const SchemaObject(ObjectType.realmObject, Task, 'Task', [ + SchemaProperty('id', RealmPropertyType.objectid, + mapTo: '_id', primaryKey: true), + ]); + } +} + +class Product extends _Product with RealmEntity, RealmObjectBase, RealmObject { + @ejson + Product( + ObjectId id, + String name, + ) { + RealmObjectBase.set(this, '_id', id); + RealmObjectBase.set(this, 'stringQueryField', name); + } + + Product._(); + + @override + ObjectId get id => RealmObjectBase.get(this, '_id') as ObjectId; + @override + set id(ObjectId value) => RealmObjectBase.set(this, '_id', value); + + @override + String get name => + RealmObjectBase.get(this, 'stringQueryField') as String; + @override + set name(String value) => + RealmObjectBase.set(this, 'stringQueryField', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + Product freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(Product._); + return const SchemaObject(ObjectType.realmObject, Product, 'Product', [ + SchemaProperty('id', RealmPropertyType.objectid, + mapTo: '_id', primaryKey: true), + SchemaProperty('name', RealmPropertyType.string, + mapTo: 'stringQueryField'), + ]); + } +} + +class Schedule extends _Schedule + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + Schedule( + ObjectId id, { + Iterable tasks = const [], + }) { + RealmObjectBase.set(this, '_id', id); + RealmObjectBase.set>(this, 'tasks', RealmList(tasks)); + } + + Schedule._(); + + @override + ObjectId get id => RealmObjectBase.get(this, '_id') as ObjectId; + @override + set id(ObjectId value) => RealmObjectBase.set(this, '_id', value); + + @override + RealmList get tasks => + RealmObjectBase.get(this, 'tasks') as RealmList; + @override + set tasks(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + Schedule freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(Schedule._); + return const SchemaObject(ObjectType.realmObject, Schedule, 'Schedule', [ + SchemaProperty('id', RealmPropertyType.objectid, + mapTo: '_id', primaryKey: true), + SchemaProperty('tasks', RealmPropertyType.object, + linkTarget: 'Task', collectionType: RealmCollectionType.list), + ]); + } +} + +class AllTypes extends _AllTypes + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + AllTypes( + String stringProp, + bool boolProp, + DateTime dateProp, + double doubleProp, + ObjectId objectIdProp, + Uuid uuidProp, + int intProp, + Decimal128 decimalProp, { + String? nullableStringProp, + bool? nullableBoolProp, + DateTime? nullableDateProp, + double? nullableDoubleProp, + ObjectId? nullableObjectIdProp, + Uuid? nullableUuidProp, + int? nullableIntProp, + Decimal128? nullableDecimalProp, + }) { + RealmObjectBase.set(this, 'stringProp', stringProp); + RealmObjectBase.set(this, 'boolProp', boolProp); + RealmObjectBase.set(this, 'dateProp', dateProp); + RealmObjectBase.set(this, 'doubleProp', doubleProp); + RealmObjectBase.set(this, 'objectIdProp', objectIdProp); + RealmObjectBase.set(this, 'uuidProp', uuidProp); + RealmObjectBase.set(this, 'intProp', intProp); + RealmObjectBase.set(this, 'decimalProp', decimalProp); + RealmObjectBase.set(this, 'nullableStringProp', nullableStringProp); + RealmObjectBase.set(this, 'nullableBoolProp', nullableBoolProp); + RealmObjectBase.set(this, 'nullableDateProp', nullableDateProp); + RealmObjectBase.set(this, 'nullableDoubleProp', nullableDoubleProp); + RealmObjectBase.set(this, 'nullableObjectIdProp', nullableObjectIdProp); + RealmObjectBase.set(this, 'nullableUuidProp', nullableUuidProp); + RealmObjectBase.set(this, 'nullableIntProp', nullableIntProp); + RealmObjectBase.set(this, 'nullableDecimalProp', nullableDecimalProp); + } + + AllTypes._(); + + @override + String get stringProp => + RealmObjectBase.get(this, 'stringProp') as String; + @override + set stringProp(String value) => + RealmObjectBase.set(this, 'stringProp', value); + + @override + bool get boolProp => RealmObjectBase.get(this, 'boolProp') as bool; + @override + set boolProp(bool value) => RealmObjectBase.set(this, 'boolProp', value); + + @override + DateTime get dateProp => + RealmObjectBase.get(this, 'dateProp') as DateTime; + @override + set dateProp(DateTime value) => RealmObjectBase.set(this, 'dateProp', value); + + @override + double get doubleProp => + RealmObjectBase.get(this, 'doubleProp') as double; + @override + set doubleProp(double value) => + RealmObjectBase.set(this, 'doubleProp', value); + + @override + ObjectId get objectIdProp => + RealmObjectBase.get(this, 'objectIdProp') as ObjectId; + @override + set objectIdProp(ObjectId value) => + RealmObjectBase.set(this, 'objectIdProp', value); + + @override + Uuid get uuidProp => RealmObjectBase.get(this, 'uuidProp') as Uuid; + @override + set uuidProp(Uuid value) => RealmObjectBase.set(this, 'uuidProp', value); + + @override + int get intProp => RealmObjectBase.get(this, 'intProp') as int; + @override + set intProp(int value) => RealmObjectBase.set(this, 'intProp', value); + + @override + Decimal128 get decimalProp => + RealmObjectBase.get(this, 'decimalProp') as Decimal128; + @override + set decimalProp(Decimal128 value) => + RealmObjectBase.set(this, 'decimalProp', value); + + @override + String? get nullableStringProp => + RealmObjectBase.get(this, 'nullableStringProp') as String?; + @override + set nullableStringProp(String? value) => + RealmObjectBase.set(this, 'nullableStringProp', value); + + @override + bool? get nullableBoolProp => + RealmObjectBase.get(this, 'nullableBoolProp') as bool?; + @override + set nullableBoolProp(bool? value) => + RealmObjectBase.set(this, 'nullableBoolProp', value); + + @override + DateTime? get nullableDateProp => + RealmObjectBase.get(this, 'nullableDateProp') as DateTime?; + @override + set nullableDateProp(DateTime? value) => + RealmObjectBase.set(this, 'nullableDateProp', value); + + @override + double? get nullableDoubleProp => + RealmObjectBase.get(this, 'nullableDoubleProp') as double?; + @override + set nullableDoubleProp(double? value) => + RealmObjectBase.set(this, 'nullableDoubleProp', value); + + @override + ObjectId? get nullableObjectIdProp => + RealmObjectBase.get(this, 'nullableObjectIdProp') as ObjectId?; + @override + set nullableObjectIdProp(ObjectId? value) => + RealmObjectBase.set(this, 'nullableObjectIdProp', value); + + @override + Uuid? get nullableUuidProp => + RealmObjectBase.get(this, 'nullableUuidProp') as Uuid?; + @override + set nullableUuidProp(Uuid? value) => + RealmObjectBase.set(this, 'nullableUuidProp', value); + + @override + int? get nullableIntProp => + RealmObjectBase.get(this, 'nullableIntProp') as int?; + @override + set nullableIntProp(int? value) => + RealmObjectBase.set(this, 'nullableIntProp', value); + + @override + Decimal128? get nullableDecimalProp => + RealmObjectBase.get(this, 'nullableDecimalProp') + as Decimal128?; + @override + set nullableDecimalProp(Decimal128? value) => + RealmObjectBase.set(this, 'nullableDecimalProp', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + AllTypes freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(AllTypes._); + return const SchemaObject(ObjectType.realmObject, AllTypes, 'AllTypes', [ + SchemaProperty('stringProp', RealmPropertyType.string), + SchemaProperty('boolProp', RealmPropertyType.bool), + SchemaProperty('dateProp', RealmPropertyType.timestamp), + SchemaProperty('doubleProp', RealmPropertyType.double), + SchemaProperty('objectIdProp', RealmPropertyType.objectid), + SchemaProperty('uuidProp', RealmPropertyType.uuid), + SchemaProperty('intProp', RealmPropertyType.int), + SchemaProperty('decimalProp', RealmPropertyType.decimal128), + SchemaProperty('nullableStringProp', RealmPropertyType.string, + optional: true), + SchemaProperty('nullableBoolProp', RealmPropertyType.bool, + optional: true), + SchemaProperty('nullableDateProp', RealmPropertyType.timestamp, + optional: true), + SchemaProperty('nullableDoubleProp', RealmPropertyType.double, + optional: true), + SchemaProperty('nullableObjectIdProp', RealmPropertyType.objectid, + optional: true), + SchemaProperty('nullableUuidProp', RealmPropertyType.uuid, + optional: true), + SchemaProperty('nullableIntProp', RealmPropertyType.int, optional: true), + SchemaProperty('nullableDecimalProp', RealmPropertyType.decimal128, + optional: true), + ]); + } +} + +class LinksClass extends _LinksClass + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + LinksClass( + Uuid id, { + LinksClass? link, + Iterable list = const [], + }) { + RealmObjectBase.set(this, 'id', id); + RealmObjectBase.set(this, 'link', link); + RealmObjectBase.set>( + this, 'list', RealmList(list)); + } + + LinksClass._(); + + @override + Uuid get id => RealmObjectBase.get(this, 'id') as Uuid; + @override + set id(Uuid value) => RealmObjectBase.set(this, 'id', value); + + @override + LinksClass? get link => + RealmObjectBase.get(this, 'link') as LinksClass?; + @override + set link(covariant LinksClass? value) => + RealmObjectBase.set(this, 'link', value); + + @override + RealmList get list => + RealmObjectBase.get(this, 'list') as RealmList; + @override + set list(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + LinksClass freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(LinksClass._); + return const SchemaObject( + ObjectType.realmObject, LinksClass, 'LinksClass', [ + SchemaProperty('id', RealmPropertyType.uuid, primaryKey: true), + SchemaProperty('link', RealmPropertyType.object, + optional: true, linkTarget: 'LinksClass'), + SchemaProperty('list', RealmPropertyType.object, + linkTarget: 'LinksClass', collectionType: RealmCollectionType.list), + ]); + } +} + +class AllCollections extends _AllCollections + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + AllCollections({ + Iterable strings = const [], + Iterable bools = const [], + Iterable dates = const [], + Iterable doubles = const [], + Iterable objectIds = const [], + Iterable uuids = const [], + Iterable ints = const [], + Iterable decimals = const [], + Iterable nullableStrings = const [], + Iterable nullableBools = const [], + Iterable nullableDates = const [], + Iterable nullableDoubles = const [], + Iterable nullableObjectIds = const [], + Iterable nullableUuids = const [], + Iterable nullableInts = const [], + Iterable nullableDecimals = const [], + }) { + RealmObjectBase.set>( + this, 'strings', RealmList(strings)); + RealmObjectBase.set>(this, 'bools', RealmList(bools)); + RealmObjectBase.set>( + this, 'dates', RealmList(dates)); + RealmObjectBase.set>( + this, 'doubles', RealmList(doubles)); + RealmObjectBase.set>( + this, 'objectIds', RealmList(objectIds)); + RealmObjectBase.set>(this, 'uuids', RealmList(uuids)); + RealmObjectBase.set>(this, 'ints', RealmList(ints)); + RealmObjectBase.set>( + this, 'decimals', RealmList(decimals)); + RealmObjectBase.set>( + this, 'nullableStrings', RealmList(nullableStrings)); + RealmObjectBase.set>( + this, 'nullableBools', RealmList(nullableBools)); + RealmObjectBase.set>( + this, 'nullableDates', RealmList(nullableDates)); + RealmObjectBase.set>( + this, 'nullableDoubles', RealmList(nullableDoubles)); + RealmObjectBase.set>( + this, 'nullableObjectIds', RealmList(nullableObjectIds)); + RealmObjectBase.set>( + this, 'nullableUuids', RealmList(nullableUuids)); + RealmObjectBase.set>( + this, 'nullableInts', RealmList(nullableInts)); + RealmObjectBase.set>( + this, 'nullableDecimals', RealmList(nullableDecimals)); + } + + AllCollections._(); + + @override + RealmList get strings => + RealmObjectBase.get(this, 'strings') as RealmList; + @override + set strings(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RealmList get bools => + RealmObjectBase.get(this, 'bools') as RealmList; + @override + set bools(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RealmList get dates => + RealmObjectBase.get(this, 'dates') as RealmList; + @override + set dates(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RealmList get doubles => + RealmObjectBase.get(this, 'doubles') as RealmList; + @override + set doubles(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RealmList get objectIds => + RealmObjectBase.get(this, 'objectIds') as RealmList; + @override + set objectIds(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RealmList get uuids => + RealmObjectBase.get(this, 'uuids') as RealmList; + @override + set uuids(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RealmList get ints => + RealmObjectBase.get(this, 'ints') as RealmList; + @override + set ints(covariant RealmList value) => throw RealmUnsupportedSetError(); + + @override + RealmList get decimals => + RealmObjectBase.get(this, 'decimals') + as RealmList; + @override + set decimals(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RealmList get nullableStrings => + RealmObjectBase.get(this, 'nullableStrings') + as RealmList; + @override + set nullableStrings(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RealmList get nullableBools => + RealmObjectBase.get(this, 'nullableBools') as RealmList; + @override + set nullableBools(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RealmList get nullableDates => + RealmObjectBase.get(this, 'nullableDates') + as RealmList; + @override + set nullableDates(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RealmList get nullableDoubles => + RealmObjectBase.get(this, 'nullableDoubles') + as RealmList; + @override + set nullableDoubles(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RealmList get nullableObjectIds => + RealmObjectBase.get(this, 'nullableObjectIds') + as RealmList; + @override + set nullableObjectIds(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RealmList get nullableUuids => + RealmObjectBase.get(this, 'nullableUuids') as RealmList; + @override + set nullableUuids(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RealmList get nullableInts => + RealmObjectBase.get(this, 'nullableInts') as RealmList; + @override + set nullableInts(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RealmList get nullableDecimals => + RealmObjectBase.get(this, 'nullableDecimals') + as RealmList; + @override + set nullableDecimals(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + AllCollections freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(AllCollections._); + return const SchemaObject( + ObjectType.realmObject, AllCollections, 'AllCollections', [ + SchemaProperty('strings', RealmPropertyType.string, + collectionType: RealmCollectionType.list), + SchemaProperty('bools', RealmPropertyType.bool, + collectionType: RealmCollectionType.list), + SchemaProperty('dates', RealmPropertyType.timestamp, + collectionType: RealmCollectionType.list), + SchemaProperty('doubles', RealmPropertyType.double, + collectionType: RealmCollectionType.list), + SchemaProperty('objectIds', RealmPropertyType.objectid, + collectionType: RealmCollectionType.list), + SchemaProperty('uuids', RealmPropertyType.uuid, + collectionType: RealmCollectionType.list), + SchemaProperty('ints', RealmPropertyType.int, + collectionType: RealmCollectionType.list), + SchemaProperty('decimals', RealmPropertyType.decimal128, + collectionType: RealmCollectionType.list), + SchemaProperty('nullableStrings', RealmPropertyType.string, + optional: true, collectionType: RealmCollectionType.list), + SchemaProperty('nullableBools', RealmPropertyType.bool, + optional: true, collectionType: RealmCollectionType.list), + SchemaProperty('nullableDates', RealmPropertyType.timestamp, + optional: true, collectionType: RealmCollectionType.list), + SchemaProperty('nullableDoubles', RealmPropertyType.double, + optional: true, collectionType: RealmCollectionType.list), + SchemaProperty('nullableObjectIds', RealmPropertyType.objectid, + optional: true, collectionType: RealmCollectionType.list), + SchemaProperty('nullableUuids', RealmPropertyType.uuid, + optional: true, collectionType: RealmCollectionType.list), + SchemaProperty('nullableInts', RealmPropertyType.int, + optional: true, collectionType: RealmCollectionType.list), + SchemaProperty('nullableDecimals', RealmPropertyType.decimal128, + optional: true, collectionType: RealmCollectionType.list), + ]); + } +} + +class NullableTypes extends _NullableTypes + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + NullableTypes( + ObjectId id, + ObjectId differentiator, { + String? stringProp, + bool? boolProp, + DateTime? dateProp, + double? doubleProp, + ObjectId? objectIdProp, + Uuid? uuidProp, + int? intProp, + Decimal128? decimalProp, + }) { + RealmObjectBase.set(this, '_id', id); + RealmObjectBase.set(this, 'differentiator', differentiator); + RealmObjectBase.set(this, 'stringProp', stringProp); + RealmObjectBase.set(this, 'boolProp', boolProp); + RealmObjectBase.set(this, 'dateProp', dateProp); + RealmObjectBase.set(this, 'doubleProp', doubleProp); + RealmObjectBase.set(this, 'objectIdProp', objectIdProp); + RealmObjectBase.set(this, 'uuidProp', uuidProp); + RealmObjectBase.set(this, 'intProp', intProp); + RealmObjectBase.set(this, 'decimalProp', decimalProp); + } + + NullableTypes._(); + + @override + ObjectId get id => RealmObjectBase.get(this, '_id') as ObjectId; + @override + set id(ObjectId value) => RealmObjectBase.set(this, '_id', value); + + @override + ObjectId get differentiator => + RealmObjectBase.get(this, 'differentiator') as ObjectId; + @override + set differentiator(ObjectId value) => + RealmObjectBase.set(this, 'differentiator', value); + + @override + String? get stringProp => + RealmObjectBase.get(this, 'stringProp') as String?; + @override + set stringProp(String? value) => + RealmObjectBase.set(this, 'stringProp', value); + + @override + bool? get boolProp => RealmObjectBase.get(this, 'boolProp') as bool?; + @override + set boolProp(bool? value) => RealmObjectBase.set(this, 'boolProp', value); + + @override + DateTime? get dateProp => + RealmObjectBase.get(this, 'dateProp') as DateTime?; + @override + set dateProp(DateTime? value) => RealmObjectBase.set(this, 'dateProp', value); + + @override + double? get doubleProp => + RealmObjectBase.get(this, 'doubleProp') as double?; + @override + set doubleProp(double? value) => + RealmObjectBase.set(this, 'doubleProp', value); + + @override + ObjectId? get objectIdProp => + RealmObjectBase.get(this, 'objectIdProp') as ObjectId?; + @override + set objectIdProp(ObjectId? value) => + RealmObjectBase.set(this, 'objectIdProp', value); + + @override + Uuid? get uuidProp => RealmObjectBase.get(this, 'uuidProp') as Uuid?; + @override + set uuidProp(Uuid? value) => RealmObjectBase.set(this, 'uuidProp', value); + + @override + int? get intProp => RealmObjectBase.get(this, 'intProp') as int?; + @override + set intProp(int? value) => RealmObjectBase.set(this, 'intProp', value); + + @override + Decimal128? get decimalProp => + RealmObjectBase.get(this, 'decimalProp') as Decimal128?; + @override + set decimalProp(Decimal128? value) => + RealmObjectBase.set(this, 'decimalProp', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + NullableTypes freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(NullableTypes._); + return const SchemaObject( + ObjectType.realmObject, NullableTypes, 'NullableTypes', [ + SchemaProperty('id', RealmPropertyType.objectid, + mapTo: '_id', primaryKey: true), + SchemaProperty('differentiator', RealmPropertyType.objectid), + SchemaProperty('stringProp', RealmPropertyType.string, optional: true), + SchemaProperty('boolProp', RealmPropertyType.bool, optional: true), + SchemaProperty('dateProp', RealmPropertyType.timestamp, optional: true), + SchemaProperty('doubleProp', RealmPropertyType.double, optional: true), + SchemaProperty('objectIdProp', RealmPropertyType.objectid, + optional: true), + SchemaProperty('uuidProp', RealmPropertyType.uuid, optional: true), + SchemaProperty('intProp', RealmPropertyType.int, optional: true), + SchemaProperty('decimalProp', RealmPropertyType.decimal128, + optional: true), + ]); + } +} + +class Event extends _Event with RealmEntity, RealmObjectBase, RealmObject { + @ejson + Event( + ObjectId id, { + String? name, + bool? isCompleted, + int? durationInMinutes, + String? assignedTo, + }) { + RealmObjectBase.set(this, '_id', id); + RealmObjectBase.set(this, 'stringQueryField', name); + RealmObjectBase.set(this, 'boolQueryField', isCompleted); + RealmObjectBase.set(this, 'intQueryField', durationInMinutes); + RealmObjectBase.set(this, 'assignedTo', assignedTo); + } + + Event._(); + + @override + ObjectId get id => RealmObjectBase.get(this, '_id') as ObjectId; + @override + set id(ObjectId value) => RealmObjectBase.set(this, '_id', value); + + @override + String? get name => + RealmObjectBase.get(this, 'stringQueryField') as String?; + @override + set name(String? value) => + RealmObjectBase.set(this, 'stringQueryField', value); + + @override + bool? get isCompleted => + RealmObjectBase.get(this, 'boolQueryField') as bool?; + @override + set isCompleted(bool? value) => + RealmObjectBase.set(this, 'boolQueryField', value); + + @override + int? get durationInMinutes => + RealmObjectBase.get(this, 'intQueryField') as int?; + @override + set durationInMinutes(int? value) => + RealmObjectBase.set(this, 'intQueryField', value); + + @override + String? get assignedTo => + RealmObjectBase.get(this, 'assignedTo') as String?; + @override + set assignedTo(String? value) => + RealmObjectBase.set(this, 'assignedTo', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + Event freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(Event._); + return const SchemaObject(ObjectType.realmObject, Event, 'Event', [ + SchemaProperty('id', RealmPropertyType.objectid, + mapTo: '_id', primaryKey: true), + SchemaProperty('name', RealmPropertyType.string, + mapTo: 'stringQueryField', optional: true), + SchemaProperty('isCompleted', RealmPropertyType.bool, + mapTo: 'boolQueryField', optional: true), + SchemaProperty('durationInMinutes', RealmPropertyType.int, + mapTo: 'intQueryField', optional: true), + SchemaProperty('assignedTo', RealmPropertyType.string, optional: true), + ]); + } +} + +class Party extends _Party with RealmEntity, RealmObjectBase, RealmObject { + @ejson + Party( + int year, { + Friend? host, + Party? previous, + Iterable guests = const [], + }) { + RealmObjectBase.set(this, 'host', host); + RealmObjectBase.set(this, 'year', year); + RealmObjectBase.set(this, 'previous', previous); + RealmObjectBase.set>( + this, 'guests', RealmList(guests)); + } + + Party._(); + + @override + Friend? get host => RealmObjectBase.get(this, 'host') as Friend?; + @override + set host(covariant Friend? value) => RealmObjectBase.set(this, 'host', value); + + @override + int get year => RealmObjectBase.get(this, 'year') as int; + @override + set year(int value) => RealmObjectBase.set(this, 'year', value); + + @override + RealmList get guests => + RealmObjectBase.get(this, 'guests') as RealmList; + @override + set guests(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + Party? get previous => RealmObjectBase.get(this, 'previous') as Party?; + @override + set previous(covariant Party? value) => + RealmObjectBase.set(this, 'previous', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + Party freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(Party._); + return const SchemaObject(ObjectType.realmObject, Party, 'Party', [ + SchemaProperty('host', RealmPropertyType.object, + optional: true, linkTarget: 'Friend'), + SchemaProperty('year', RealmPropertyType.int), + SchemaProperty('guests', RealmPropertyType.object, + linkTarget: 'Friend', collectionType: RealmCollectionType.list), + SchemaProperty('previous', RealmPropertyType.object, + optional: true, linkTarget: 'Party'), + ]); + } +} + +class Friend extends _Friend with RealmEntity, RealmObjectBase, RealmObject { + static var _defaultsSet = false; + + @ejson + Friend( + String name, { + int age = 42, + Friend? bestFriend, + Iterable friends = const [], + }) { + if (!_defaultsSet) { + _defaultsSet = RealmObjectBase.setDefaults({ + 'age': 42, + }); + } + RealmObjectBase.set(this, 'name', name); + RealmObjectBase.set(this, 'age', age); + RealmObjectBase.set(this, 'bestFriend', bestFriend); + RealmObjectBase.set>( + this, 'friends', RealmList(friends)); + } + + Friend._(); + + @override + String get name => RealmObjectBase.get(this, 'name') as String; + @override + set name(String value) => RealmObjectBase.set(this, 'name', value); + + @override + int get age => RealmObjectBase.get(this, 'age') as int; + @override + set age(int value) => RealmObjectBase.set(this, 'age', value); + + @override + Friend? get bestFriend => + RealmObjectBase.get(this, 'bestFriend') as Friend?; + @override + set bestFriend(covariant Friend? value) => + RealmObjectBase.set(this, 'bestFriend', value); + + @override + RealmList get friends => + RealmObjectBase.get(this, 'friends') as RealmList; + @override + set friends(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + Friend freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(Friend._); + return const SchemaObject(ObjectType.realmObject, Friend, 'Friend', [ + SchemaProperty('name', RealmPropertyType.string, primaryKey: true), + SchemaProperty('age', RealmPropertyType.int), + SchemaProperty('bestFriend', RealmPropertyType.object, + optional: true, linkTarget: 'Friend'), + SchemaProperty('friends', RealmPropertyType.object, + linkTarget: 'Friend', collectionType: RealmCollectionType.list), + ]); + } +} + +class When extends _When with RealmEntity, RealmObjectBase, RealmObject { + @ejson + When( + DateTime dateTimeUtc, + String locationName, + ) { + RealmObjectBase.set(this, 'dateTimeUtc', dateTimeUtc); + RealmObjectBase.set(this, 'locationName', locationName); + } + + When._(); + + @override + DateTime get dateTimeUtc => + RealmObjectBase.get(this, 'dateTimeUtc') as DateTime; + @override + set dateTimeUtc(DateTime value) => + RealmObjectBase.set(this, 'dateTimeUtc', value); + + @override + String get locationName => + RealmObjectBase.get(this, 'locationName') as String; + @override + set locationName(String value) => + RealmObjectBase.set(this, 'locationName', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + When freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(When._); + return const SchemaObject(ObjectType.realmObject, When, 'When', [ + SchemaProperty('dateTimeUtc', RealmPropertyType.timestamp), + SchemaProperty('locationName', RealmPropertyType.string), + ]); + } +} + +class Player extends _Player with RealmEntity, RealmObjectBase, RealmObject { + @ejson + Player( + String name, { + Game? game, + Iterable scoresByRound = const [], + }) { + RealmObjectBase.set(this, 'name', name); + RealmObjectBase.set(this, 'game', game); + RealmObjectBase.set>( + this, 'scoresByRound', RealmList(scoresByRound)); + } + + Player._(); + + @override + String get name => RealmObjectBase.get(this, 'name') as String; + @override + set name(String value) => RealmObjectBase.set(this, 'name', value); + + @override + Game? get game => RealmObjectBase.get(this, 'game') as Game?; + @override + set game(covariant Game? value) => RealmObjectBase.set(this, 'game', value); + + @override + RealmList get scoresByRound => + RealmObjectBase.get(this, 'scoresByRound') as RealmList; + @override + set scoresByRound(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + Player freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(Player._); + return const SchemaObject(ObjectType.realmObject, Player, 'Player', [ + SchemaProperty('name', RealmPropertyType.string, primaryKey: true), + SchemaProperty('game', RealmPropertyType.object, + optional: true, linkTarget: 'Game'), + SchemaProperty('scoresByRound', RealmPropertyType.int, + optional: true, collectionType: RealmCollectionType.list), + ]); + } +} + +class Game extends _Game with RealmEntity, RealmObjectBase, RealmObject { + @ejson + Game({ + Iterable winnerByRound = const [], + }) { + RealmObjectBase.set>( + this, 'winnerByRound', RealmList(winnerByRound)); + } + + Game._(); + + @override + RealmList get winnerByRound => + RealmObjectBase.get(this, 'winnerByRound') as RealmList; + @override + set winnerByRound(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + Game freeze() => RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(Game._); + return const SchemaObject(ObjectType.realmObject, Game, 'Game', [ + SchemaProperty('winnerByRound', RealmPropertyType.object, + linkTarget: 'Player', collectionType: RealmCollectionType.list), + ]); + } +} + +class AllTypesEmbedded extends _AllTypesEmbedded + with RealmEntity, RealmObjectBase, EmbeddedObject { + @ejson + AllTypesEmbedded( + String stringProp, + bool boolProp, + DateTime dateProp, + double doubleProp, + ObjectId objectIdProp, + Uuid uuidProp, + int intProp, + Decimal128 decimalProp, { + String? nullableStringProp, + bool? nullableBoolProp, + DateTime? nullableDateProp, + double? nullableDoubleProp, + ObjectId? nullableObjectIdProp, + Uuid? nullableUuidProp, + int? nullableIntProp, + Decimal128? nullableDecimalProp, + Iterable strings = const [], + Iterable bools = const [], + Iterable dates = const [], + Iterable doubles = const [], + Iterable objectIds = const [], + Iterable uuids = const [], + Iterable ints = const [], + Iterable decimals = const [], + }) { + RealmObjectBase.set(this, 'stringProp', stringProp); + RealmObjectBase.set(this, 'boolProp', boolProp); + RealmObjectBase.set(this, 'dateProp', dateProp); + RealmObjectBase.set(this, 'doubleProp', doubleProp); + RealmObjectBase.set(this, 'objectIdProp', objectIdProp); + RealmObjectBase.set(this, 'uuidProp', uuidProp); + RealmObjectBase.set(this, 'intProp', intProp); + RealmObjectBase.set(this, 'decimalProp', decimalProp); + RealmObjectBase.set(this, 'nullableStringProp', nullableStringProp); + RealmObjectBase.set(this, 'nullableBoolProp', nullableBoolProp); + RealmObjectBase.set(this, 'nullableDateProp', nullableDateProp); + RealmObjectBase.set(this, 'nullableDoubleProp', nullableDoubleProp); + RealmObjectBase.set(this, 'nullableObjectIdProp', nullableObjectIdProp); + RealmObjectBase.set(this, 'nullableUuidProp', nullableUuidProp); + RealmObjectBase.set(this, 'nullableIntProp', nullableIntProp); + RealmObjectBase.set(this, 'nullableDecimalProp', nullableDecimalProp); + RealmObjectBase.set>( + this, 'strings', RealmList(strings)); + RealmObjectBase.set>(this, 'bools', RealmList(bools)); + RealmObjectBase.set>( + this, 'dates', RealmList(dates)); + RealmObjectBase.set>( + this, 'doubles', RealmList(doubles)); + RealmObjectBase.set>( + this, 'objectIds', RealmList(objectIds)); + RealmObjectBase.set>(this, 'uuids', RealmList(uuids)); + RealmObjectBase.set>(this, 'ints', RealmList(ints)); + RealmObjectBase.set>( + this, 'decimals', RealmList(decimals)); + } + + AllTypesEmbedded._(); + + @override + String get stringProp => + RealmObjectBase.get(this, 'stringProp') as String; + @override + set stringProp(String value) => + RealmObjectBase.set(this, 'stringProp', value); + + @override + bool get boolProp => RealmObjectBase.get(this, 'boolProp') as bool; + @override + set boolProp(bool value) => RealmObjectBase.set(this, 'boolProp', value); + + @override + DateTime get dateProp => + RealmObjectBase.get(this, 'dateProp') as DateTime; + @override + set dateProp(DateTime value) => RealmObjectBase.set(this, 'dateProp', value); + + @override + double get doubleProp => + RealmObjectBase.get(this, 'doubleProp') as double; + @override + set doubleProp(double value) => + RealmObjectBase.set(this, 'doubleProp', value); + + @override + ObjectId get objectIdProp => + RealmObjectBase.get(this, 'objectIdProp') as ObjectId; + @override + set objectIdProp(ObjectId value) => + RealmObjectBase.set(this, 'objectIdProp', value); + + @override + Uuid get uuidProp => RealmObjectBase.get(this, 'uuidProp') as Uuid; + @override + set uuidProp(Uuid value) => RealmObjectBase.set(this, 'uuidProp', value); + + @override + int get intProp => RealmObjectBase.get(this, 'intProp') as int; + @override + set intProp(int value) => RealmObjectBase.set(this, 'intProp', value); + + @override + Decimal128 get decimalProp => + RealmObjectBase.get(this, 'decimalProp') as Decimal128; + @override + set decimalProp(Decimal128 value) => + RealmObjectBase.set(this, 'decimalProp', value); + + @override + String? get nullableStringProp => + RealmObjectBase.get(this, 'nullableStringProp') as String?; + @override + set nullableStringProp(String? value) => + RealmObjectBase.set(this, 'nullableStringProp', value); + + @override + bool? get nullableBoolProp => + RealmObjectBase.get(this, 'nullableBoolProp') as bool?; + @override + set nullableBoolProp(bool? value) => + RealmObjectBase.set(this, 'nullableBoolProp', value); + + @override + DateTime? get nullableDateProp => + RealmObjectBase.get(this, 'nullableDateProp') as DateTime?; + @override + set nullableDateProp(DateTime? value) => + RealmObjectBase.set(this, 'nullableDateProp', value); + + @override + double? get nullableDoubleProp => + RealmObjectBase.get(this, 'nullableDoubleProp') as double?; + @override + set nullableDoubleProp(double? value) => + RealmObjectBase.set(this, 'nullableDoubleProp', value); + + @override + ObjectId? get nullableObjectIdProp => + RealmObjectBase.get(this, 'nullableObjectIdProp') as ObjectId?; + @override + set nullableObjectIdProp(ObjectId? value) => + RealmObjectBase.set(this, 'nullableObjectIdProp', value); + + @override + Uuid? get nullableUuidProp => + RealmObjectBase.get(this, 'nullableUuidProp') as Uuid?; + @override + set nullableUuidProp(Uuid? value) => + RealmObjectBase.set(this, 'nullableUuidProp', value); + + @override + int? get nullableIntProp => + RealmObjectBase.get(this, 'nullableIntProp') as int?; + @override + set nullableIntProp(int? value) => + RealmObjectBase.set(this, 'nullableIntProp', value); + + @override + Decimal128? get nullableDecimalProp => + RealmObjectBase.get(this, 'nullableDecimalProp') + as Decimal128?; + @override + set nullableDecimalProp(Decimal128? value) => + RealmObjectBase.set(this, 'nullableDecimalProp', value); + + @override + RealmList get strings => + RealmObjectBase.get(this, 'strings') as RealmList; + @override + set strings(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RealmList get bools => + RealmObjectBase.get(this, 'bools') as RealmList; + @override + set bools(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RealmList get dates => + RealmObjectBase.get(this, 'dates') as RealmList; + @override + set dates(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RealmList get doubles => + RealmObjectBase.get(this, 'doubles') as RealmList; + @override + set doubles(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RealmList get objectIds => + RealmObjectBase.get(this, 'objectIds') as RealmList; + @override + set objectIds(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RealmList get uuids => + RealmObjectBase.get(this, 'uuids') as RealmList; + @override + set uuids(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RealmList get ints => + RealmObjectBase.get(this, 'ints') as RealmList; + @override + set ints(covariant RealmList value) => throw RealmUnsupportedSetError(); + + @override + RealmList get decimals => + RealmObjectBase.get(this, 'decimals') + as RealmList; + @override + set decimals(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + AllTypesEmbedded freeze() => + RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(AllTypesEmbedded._); + return const SchemaObject( + ObjectType.embeddedObject, AllTypesEmbedded, 'AllTypesEmbedded', [ + SchemaProperty('stringProp', RealmPropertyType.string), + SchemaProperty('boolProp', RealmPropertyType.bool), + SchemaProperty('dateProp', RealmPropertyType.timestamp), + SchemaProperty('doubleProp', RealmPropertyType.double), + SchemaProperty('objectIdProp', RealmPropertyType.objectid), + SchemaProperty('uuidProp', RealmPropertyType.uuid), + SchemaProperty('intProp', RealmPropertyType.int), + SchemaProperty('decimalProp', RealmPropertyType.decimal128), + SchemaProperty('nullableStringProp', RealmPropertyType.string, + optional: true), + SchemaProperty('nullableBoolProp', RealmPropertyType.bool, + optional: true), + SchemaProperty('nullableDateProp', RealmPropertyType.timestamp, + optional: true), + SchemaProperty('nullableDoubleProp', RealmPropertyType.double, + optional: true), + SchemaProperty('nullableObjectIdProp', RealmPropertyType.objectid, + optional: true), + SchemaProperty('nullableUuidProp', RealmPropertyType.uuid, + optional: true), + SchemaProperty('nullableIntProp', RealmPropertyType.int, optional: true), + SchemaProperty('nullableDecimalProp', RealmPropertyType.decimal128, + optional: true), + SchemaProperty('strings', RealmPropertyType.string, + collectionType: RealmCollectionType.list), + SchemaProperty('bools', RealmPropertyType.bool, + collectionType: RealmCollectionType.list), + SchemaProperty('dates', RealmPropertyType.timestamp, + collectionType: RealmCollectionType.list), + SchemaProperty('doubles', RealmPropertyType.double, + collectionType: RealmCollectionType.list), + SchemaProperty('objectIds', RealmPropertyType.objectid, + collectionType: RealmCollectionType.list), + SchemaProperty('uuids', RealmPropertyType.uuid, + collectionType: RealmCollectionType.list), + SchemaProperty('ints', RealmPropertyType.int, + collectionType: RealmCollectionType.list), + SchemaProperty('decimals', RealmPropertyType.decimal128, + collectionType: RealmCollectionType.list), + ]); + } +} + +class ObjectWithEmbedded extends _ObjectWithEmbedded + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + ObjectWithEmbedded( + String id, { + Uuid? differentiator, + AllTypesEmbedded? singleObject, + RecursiveEmbedded1? recursiveObject, + Iterable list = const [], + Iterable recursiveList = const [], + }) { + RealmObjectBase.set(this, '_id', id); + RealmObjectBase.set(this, 'differentiator', differentiator); + RealmObjectBase.set(this, 'singleObject', singleObject); + RealmObjectBase.set(this, 'recursiveObject', recursiveObject); + RealmObjectBase.set>( + this, 'list', RealmList(list)); + RealmObjectBase.set>( + this, 'recursiveList', RealmList(recursiveList)); + } + + ObjectWithEmbedded._(); + + @override + String get id => RealmObjectBase.get(this, '_id') as String; + @override + set id(String value) => RealmObjectBase.set(this, '_id', value); + + @override + Uuid? get differentiator => + RealmObjectBase.get(this, 'differentiator') as Uuid?; + @override + set differentiator(Uuid? value) => + RealmObjectBase.set(this, 'differentiator', value); + + @override + AllTypesEmbedded? get singleObject => + RealmObjectBase.get(this, 'singleObject') + as AllTypesEmbedded?; + @override + set singleObject(covariant AllTypesEmbedded? value) => + RealmObjectBase.set(this, 'singleObject', value); + + @override + RealmList get list => + RealmObjectBase.get(this, 'list') + as RealmList; + @override + set list(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + RecursiveEmbedded1? get recursiveObject => + RealmObjectBase.get(this, 'recursiveObject') + as RecursiveEmbedded1?; + @override + set recursiveObject(covariant RecursiveEmbedded1? value) => + RealmObjectBase.set(this, 'recursiveObject', value); + + @override + RealmList get recursiveList => + RealmObjectBase.get(this, 'recursiveList') + as RealmList; + @override + set recursiveList(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + ObjectWithEmbedded freeze() => + RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(ObjectWithEmbedded._); + return const SchemaObject( + ObjectType.realmObject, ObjectWithEmbedded, 'ObjectWithEmbedded', [ + SchemaProperty('id', RealmPropertyType.string, + mapTo: '_id', primaryKey: true), + SchemaProperty('differentiator', RealmPropertyType.uuid, optional: true), + SchemaProperty('singleObject', RealmPropertyType.object, + optional: true, linkTarget: 'AllTypesEmbedded'), + SchemaProperty('list', RealmPropertyType.object, + linkTarget: 'AllTypesEmbedded', + collectionType: RealmCollectionType.list), + SchemaProperty('recursiveObject', RealmPropertyType.object, + optional: true, linkTarget: 'RecursiveEmbedded1'), + SchemaProperty('recursiveList', RealmPropertyType.object, + linkTarget: 'RecursiveEmbedded1', + collectionType: RealmCollectionType.list), + ]); + } +} + +class RecursiveEmbedded1 extends _RecursiveEmbedded1 + with RealmEntity, RealmObjectBase, EmbeddedObject { + @ejson + RecursiveEmbedded1( + String value, { + RecursiveEmbedded2? child, + ObjectWithEmbedded? realmObject, + Iterable children = const [], + }) { + RealmObjectBase.set(this, 'value', value); + RealmObjectBase.set(this, 'child', child); + RealmObjectBase.set(this, 'realmObject', realmObject); + RealmObjectBase.set>( + this, 'children', RealmList(children)); + } + + RecursiveEmbedded1._(); + + @override + String get value => RealmObjectBase.get(this, 'value') as String; + @override + set value(String value) => RealmObjectBase.set(this, 'value', value); + + @override + RecursiveEmbedded2? get child => + RealmObjectBase.get(this, 'child') + as RecursiveEmbedded2?; + @override + set child(covariant RecursiveEmbedded2? value) => + RealmObjectBase.set(this, 'child', value); + + @override + RealmList get children => + RealmObjectBase.get(this, 'children') + as RealmList; + @override + set children(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + ObjectWithEmbedded? get realmObject => + RealmObjectBase.get(this, 'realmObject') + as ObjectWithEmbedded?; + @override + set realmObject(covariant ObjectWithEmbedded? value) => + RealmObjectBase.set(this, 'realmObject', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + RecursiveEmbedded1 freeze() => + RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(RecursiveEmbedded1._); + return const SchemaObject( + ObjectType.embeddedObject, RecursiveEmbedded1, 'RecursiveEmbedded1', [ + SchemaProperty('value', RealmPropertyType.string), + SchemaProperty('child', RealmPropertyType.object, + optional: true, linkTarget: 'RecursiveEmbedded2'), + SchemaProperty('children', RealmPropertyType.object, + linkTarget: 'RecursiveEmbedded2', + collectionType: RealmCollectionType.list), + SchemaProperty('realmObject', RealmPropertyType.object, + optional: true, linkTarget: 'ObjectWithEmbedded'), + ]); + } +} + +class RecursiveEmbedded2 extends _RecursiveEmbedded2 + with RealmEntity, RealmObjectBase, EmbeddedObject { + @ejson + RecursiveEmbedded2( + String value, { + RecursiveEmbedded3? child, + ObjectWithEmbedded? realmObject, + Iterable children = const [], + }) { + RealmObjectBase.set(this, 'value', value); + RealmObjectBase.set(this, 'child', child); + RealmObjectBase.set(this, 'realmObject', realmObject); + RealmObjectBase.set>( + this, 'children', RealmList(children)); + } + + RecursiveEmbedded2._(); + + @override + String get value => RealmObjectBase.get(this, 'value') as String; + @override + set value(String value) => RealmObjectBase.set(this, 'value', value); + + @override + RecursiveEmbedded3? get child => + RealmObjectBase.get(this, 'child') + as RecursiveEmbedded3?; + @override + set child(covariant RecursiveEmbedded3? value) => + RealmObjectBase.set(this, 'child', value); + + @override + RealmList get children => + RealmObjectBase.get(this, 'children') + as RealmList; + @override + set children(covariant RealmList value) => + throw RealmUnsupportedSetError(); + + @override + ObjectWithEmbedded? get realmObject => + RealmObjectBase.get(this, 'realmObject') + as ObjectWithEmbedded?; + @override + set realmObject(covariant ObjectWithEmbedded? value) => + RealmObjectBase.set(this, 'realmObject', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + RecursiveEmbedded2 freeze() => + RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(RecursiveEmbedded2._); + return const SchemaObject( + ObjectType.embeddedObject, RecursiveEmbedded2, 'RecursiveEmbedded2', [ + SchemaProperty('value', RealmPropertyType.string), + SchemaProperty('child', RealmPropertyType.object, + optional: true, linkTarget: 'RecursiveEmbedded3'), + SchemaProperty('children', RealmPropertyType.object, + linkTarget: 'RecursiveEmbedded3', + collectionType: RealmCollectionType.list), + SchemaProperty('realmObject', RealmPropertyType.object, + optional: true, linkTarget: 'ObjectWithEmbedded'), + ]); + } +} + +class RecursiveEmbedded3 extends _RecursiveEmbedded3 + with RealmEntity, RealmObjectBase, EmbeddedObject { + @ejson + RecursiveEmbedded3( + String value, + ) { + RealmObjectBase.set(this, 'value', value); + } + + RecursiveEmbedded3._(); + + @override + String get value => RealmObjectBase.get(this, 'value') as String; + @override + set value(String value) => RealmObjectBase.set(this, 'value', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + RecursiveEmbedded3 freeze() => + RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(RecursiveEmbedded3._); + return const SchemaObject( + ObjectType.embeddedObject, RecursiveEmbedded3, 'RecursiveEmbedded3', [ + SchemaProperty('value', RealmPropertyType.string), + ]); + } +} + +class ObjectWithDecimal extends _ObjectWithDecimal + with RealmEntity, RealmObjectBase, RealmObject { + @ejson + ObjectWithDecimal( + Decimal128 decimal, { + Decimal128? nullableDecimal, + }) { + RealmObjectBase.set(this, 'decimal', decimal); + RealmObjectBase.set(this, 'nullableDecimal', nullableDecimal); + } + + ObjectWithDecimal._(); + + @override + Decimal128 get decimal => + RealmObjectBase.get(this, 'decimal') as Decimal128; + @override + set decimal(Decimal128 value) => RealmObjectBase.set(this, 'decimal', value); + + @override + Decimal128? get nullableDecimal => + RealmObjectBase.get(this, 'nullableDecimal') as Decimal128?; + @override + set nullableDecimal(Decimal128? value) => + RealmObjectBase.set(this, 'nullableDecimal', value); + + @override + Stream> get changes => + RealmObjectBase.getChanges(this); + + @override + ObjectWithDecimal freeze() => + RealmObjectBase.freezeObject(this); + + static SchemaObject get schema => _schema ??= _initSchema(); + static SchemaObject? _schema; + static SchemaObject _initSchema() { + RealmObjectBase.registerFactory(ObjectWithDecimal._); + return const SchemaObject( + ObjectType.realmObject, ObjectWithDecimal, 'ObjectWithDecimal', [ + SchemaProperty('decimal', RealmPropertyType.decimal128), + SchemaProperty('nullableDecimal', RealmPropertyType.decimal128, + optional: true), + ]); + } +}