Skip to content

Commit 1498527

Browse files
committed
Read the netcoresync_client_flutter's README, we're going to be Moor's opinionated
1 parent d869c60 commit 1498527

11 files changed

Lines changed: 705 additions & 283 deletions

File tree

Samples/Flutter/client_app/README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,13 @@ To run the examples:
1111
- MacOS, Android, iOS, Web: No special instructions necessary, just run it.
1212
- **As Per Writing: Flutter Sync Is Not Ready Yet, still in the works**
1313

14-
## Moor Notes
14+
## netcoresync_client_flutter Notes
1515

16-
- The recommended and cleanest way on generating Moor is in this order:
16+
- To use the library, the package `build_runner` must also be specified in the `pubspec.yaml`'s `dev_dependencies` section. This library uses the `reflectable` package to generate reflections on your data classes. After including the `build_runner` package, to generate the `reflectable`'s file:
1717
```sh
1818
flutter packages pub run build_runner clean
1919
flutter clean
2020
flutter pub get
2121
flutter packages pub run build_runner build --delete-conflicting-outputs
2222
```
23+
NOTE: this example is using Moor, where `build_runner` is already a requirement in Moor. You should still add the `build_runner` package yourself even if you are not using Moor.
Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
// This file has been generated by the reflectable package.
2+
// https://github.com/dart-lang/reflectable.
3+
// @dart = 2.12
4+
5+
import 'dart:core';
6+
import 'package:client_app/src/data/users.dart' as prefix1;
7+
import 'package:netcoresync_client_flutter/src/annotations/sync_friendly_id.dart'
8+
as prefix4;
9+
import 'package:netcoresync_client_flutter/src/annotations/sync_property.dart'
10+
as prefix3;
11+
import 'package:netcoresync_client_flutter/src/annotations/sync_reflector.dart'
12+
as prefix0;
13+
import 'package:netcoresync_client_flutter/src/annotations/sync_schema.dart'
14+
as prefix2;
15+
16+
// ignore_for_file: prefer_adjacent_string_concatenation
17+
// ignore_for_file: prefer_collection_literals
18+
// ignore_for_file: unnecessary_const
19+
// ignore_for_file: implementation_imports
20+
21+
// ignore:unused_import
22+
import 'package:reflectable/mirrors.dart' as m;
23+
// ignore:unused_import
24+
import 'package:reflectable/src/reflectable_builder_based.dart' as r;
25+
// ignore:unused_import
26+
import 'package:reflectable/reflectable.dart' as r show Reflectable;
27+
28+
final _data = <r.Reflectable, r.ReflectorData>{
29+
const prefix0.SyncReflector(): r.ReflectorData(
30+
<m.TypeMirror>[
31+
r.NonGenericClassMirrorImpl(
32+
r'User',
33+
r'.User',
34+
7,
35+
0,
36+
const prefix0.SyncReflector(),
37+
const <int>[0, 1, 2, 3, 4],
38+
const <int>[5, 6, 7, 8, 9, 10, 11, 12, 13, 14],
39+
const <int>[],
40+
-1,
41+
{},
42+
{},
43+
{},
44+
-1,
45+
-1,
46+
const <int>[-1],
47+
const <Object>[
48+
prefix0.syncReflector,
49+
const prefix2.SyncSchema(mapToClassName: "SyncUser")
50+
],
51+
null)
52+
],
53+
<m.DeclarationMirror>[
54+
r.VariableMirrorImpl(r'id', 32773, 0, const prefix0.SyncReflector(), -1,
55+
-1, -1, null, const <Object>[
56+
const prefix3.SyncProperty(
57+
propertyIndicator: prefix3.PropertyIndicatorEnum.id)
58+
]),
59+
r.VariableMirrorImpl(
60+
r'fieldString',
61+
32773,
62+
0,
63+
const prefix0.SyncReflector(),
64+
-1,
65+
-1,
66+
-1,
67+
null,
68+
const <Object>[const prefix4.SyncFriendlyId()]),
69+
r.VariableMirrorImpl(r'lastUpdated', 32773, 0,
70+
const prefix0.SyncReflector(), -1, -1, -1, null, const <Object>[
71+
const prefix3.SyncProperty(
72+
propertyIndicator: prefix3.PropertyIndicatorEnum.lastUpdated)
73+
]),
74+
r.VariableMirrorImpl(r'deleted', 32773, 0,
75+
const prefix0.SyncReflector(), -1, -1, -1, null, const <Object>[
76+
const prefix3.SyncProperty(
77+
propertyIndicator: prefix3.PropertyIndicatorEnum.deleted)
78+
]),
79+
r.VariableMirrorImpl(r'databaseInstanceId', 32773, 0,
80+
const prefix0.SyncReflector(), -1, -1, -1, null, const <Object>[
81+
const prefix3.SyncProperty(
82+
propertyIndicator:
83+
prefix3.PropertyIndicatorEnum.databaseInstanceId)
84+
]),
85+
r.ImplicitGetterMirrorImpl(const prefix0.SyncReflector(), 0, 5),
86+
r.ImplicitSetterMirrorImpl(const prefix0.SyncReflector(), 0, 6),
87+
r.ImplicitGetterMirrorImpl(const prefix0.SyncReflector(), 1, 7),
88+
r.ImplicitSetterMirrorImpl(const prefix0.SyncReflector(), 1, 8),
89+
r.ImplicitGetterMirrorImpl(const prefix0.SyncReflector(), 2, 9),
90+
r.ImplicitSetterMirrorImpl(const prefix0.SyncReflector(), 2, 10),
91+
r.ImplicitGetterMirrorImpl(const prefix0.SyncReflector(), 3, 11),
92+
r.ImplicitSetterMirrorImpl(const prefix0.SyncReflector(), 3, 12),
93+
r.ImplicitGetterMirrorImpl(const prefix0.SyncReflector(), 4, 13),
94+
r.ImplicitSetterMirrorImpl(const prefix0.SyncReflector(), 4, 14)
95+
],
96+
<m.ParameterMirror>[
97+
r.ParameterMirrorImpl(r'_id', 32870, 6, const prefix0.SyncReflector(),
98+
-1, -1, -1, null, const [], null, null),
99+
r.ParameterMirrorImpl(
100+
r'_fieldString',
101+
32870,
102+
8,
103+
const prefix0.SyncReflector(),
104+
-1,
105+
-1,
106+
-1,
107+
null,
108+
const [],
109+
null,
110+
null),
111+
r.ParameterMirrorImpl(
112+
r'_lastUpdated',
113+
32870,
114+
10,
115+
const prefix0.SyncReflector(),
116+
-1,
117+
-1,
118+
-1,
119+
null,
120+
const [],
121+
null,
122+
null),
123+
r.ParameterMirrorImpl(
124+
r'_deleted',
125+
32870,
126+
12,
127+
const prefix0.SyncReflector(),
128+
-1,
129+
-1,
130+
-1,
131+
null,
132+
const [],
133+
null,
134+
null),
135+
r.ParameterMirrorImpl(
136+
r'_databaseInstanceId',
137+
32870,
138+
14,
139+
const prefix0.SyncReflector(),
140+
-1,
141+
-1,
142+
-1,
143+
null,
144+
const [],
145+
null,
146+
null)
147+
],
148+
<Type>[prefix1.User],
149+
1,
150+
{
151+
r'id': (dynamic instance) => instance.id,
152+
r'fieldString': (dynamic instance) => instance.fieldString,
153+
r'lastUpdated': (dynamic instance) => instance.lastUpdated,
154+
r'deleted': (dynamic instance) => instance.deleted,
155+
r'databaseInstanceId': (dynamic instance) => instance.databaseInstanceId
156+
},
157+
{
158+
r'id=': (dynamic instance, value) => instance.id = value,
159+
r'fieldString=': (dynamic instance, value) =>
160+
instance.fieldString = value,
161+
r'lastUpdated=': (dynamic instance, value) =>
162+
instance.lastUpdated = value,
163+
r'deleted=': (dynamic instance, value) => instance.deleted = value,
164+
r'databaseInstanceId=': (dynamic instance, value) =>
165+
instance.databaseInstanceId = value
166+
},
167+
null,
168+
[])
169+
};
170+
171+
final _memberSymbolMap = null;
172+
173+
void initializeReflectable() {
174+
r.data = _data;
175+
r.memberSymbolMap = _memberSymbolMap;
176+
}

Samples/Flutter/client_app/lib/src/data/concepts.dart

Lines changed: 0 additions & 32 deletions
This file was deleted.

Samples/Flutter/client_app/lib/src/data/database.dart

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
import 'package:client_app/src/data/concepts.dart';
1+
import 'package:client_app/main.reflectable.dart';
2+
import 'package:netcoresync_client_flutter/netcoresync_client_flutter.dart';
23
import 'package:moor/moor.dart';
34
import 'package:uuid/uuid.dart';
45
import 'employees.dart';
56
import 'departments.dart';
67
import 'knowledges.dart';
78
import 'timestamps.dart';
89
import 'configurations.dart';
9-
import 'concepts.dart';
10+
import 'users.dart';
1011

1112
export 'database_shared.dart';
1213

@@ -18,7 +19,7 @@ part 'database.g.dart';
1819
Knowledges,
1920
TimeStamps,
2021
Configurations,
21-
Concepts,
22+
Users,
2223
])
2324
class Database extends _$Database {
2425
Database(QueryExecutor queryExecutor) : super(queryExecutor);
@@ -39,9 +40,36 @@ class Database extends _$Database {
3940
"SYNCHRONIZATIONID";
4041

4142
void testConcepts() async {
42-
ConceptsCompanion data = ConceptsCompanion();
43-
await into(concepts).insert(data);
44-
print(await select(concepts).get());
43+
netcoresync_doTests(initializeReflectable, User());
44+
45+
User user = User();
46+
await into(users).insert(user);
47+
List<User> datas = await select(users).get();
48+
print(datas);
49+
50+
datas[0].fieldString = "ABC";
51+
datas[0].fieldStringNullable = "DEF";
52+
datas[0].fieldInt = 10;
53+
datas[0].fieldIntNullable = 20;
54+
datas[0].fieldBoolean = true;
55+
datas[0].fieldBooleanNullable = false;
56+
datas[0].fieldDateTime = DateTime.now();
57+
datas[0].fieldDateTimeNullable = DateTime(2021, 1, 1);
58+
await update(users).replace(datas[0]);
59+
List<User> datasUpdated = await select(users).get();
60+
print(datasUpdated);
61+
62+
datasUpdated[0].fieldStringNullable = null;
63+
datasUpdated[0].fieldIntNullable = null;
64+
datasUpdated[0].fieldBooleanNullable = null;
65+
datasUpdated[0].fieldDateTimeNullable = null;
66+
await update(users).replace(datasUpdated[0]);
67+
List<User> datas2 = await select(users).get();
68+
print(datas2);
69+
70+
await delete(users).delete(datas2[0]);
71+
List<User> empty = await select(users).get();
72+
print(empty);
4573
}
4674

4775
Future<void> resetDatabase({bool includeConfiguration = false}) async {

0 commit comments

Comments
 (0)