@@ -15,6 +15,7 @@ part 'exercise_database.g.dart';
15
15
@DataClassName ('ExerciseTable' )
16
16
class Exercises extends Table {
17
17
const Exercises ();
18
+
18
19
IntColumn get id => integer ()();
19
20
20
21
TextColumn get data => text ()();
@@ -32,6 +33,7 @@ class Exercises extends Table {
32
33
@DataClassName ('MuscleTable' )
33
34
class Muscles extends Table {
34
35
const Muscles ();
36
+
35
37
IntColumn get id => integer ()();
36
38
37
39
TextColumn get data => text ().map (const MuscleConverter ())();
@@ -40,6 +42,7 @@ class Muscles extends Table {
40
42
@DataClassName ('CategoryTable' )
41
43
class Categories extends Table {
42
44
const Categories ();
45
+
43
46
IntColumn get id => integer ()();
44
47
45
48
TextColumn get data => text ().map (const ExerciseCategoryConverter ())();
@@ -48,6 +51,7 @@ class Categories extends Table {
48
51
@DataClassName ('LanguagesTable' )
49
52
class Languages extends Table {
50
53
const Languages ();
54
+
51
55
IntColumn get id => integer ()();
52
56
53
57
TextColumn get data => text ().map (const LanguageConverter ())();
@@ -56,6 +60,7 @@ class Languages extends Table {
56
60
@DataClassName ('EquipmentTable' )
57
61
class Equipments extends Table {
58
62
const Equipments ();
63
+
59
64
IntColumn get id => integer ()();
60
65
61
66
TextColumn get data => text ().map (const EquipmentConverter ())();
@@ -68,10 +73,30 @@ class ExerciseDatabase extends _$ExerciseDatabase {
68
73
// Named constructor for creating in-memory database
69
74
ExerciseDatabase .inMemory (super .e);
70
75
76
+ /// Note that this needs to be bumped if the JSON response from the server changes
71
77
@override
72
- // TODO: implement schemaVersion
73
78
int get schemaVersion => 1 ;
74
79
80
+ /// There is not really a migration strategy. If we bump the version
81
+ /// number, delete everything and recreate the new tables. The provider
82
+ /// will fetch everything as needed from the server
83
+ @override
84
+ MigrationStrategy get migration => MigrationStrategy (
85
+ onUpgrade: (m, from, to) async {
86
+ // no-op, but needs to be defined
87
+ return ;
88
+ },
89
+ beforeOpen: (openingDetails) async {
90
+ if (openingDetails.hadUpgrade) {
91
+ final m = createMigrator ();
92
+ for (final table in allTables) {
93
+ await m.deleteTable (table.actualTableName);
94
+ await m.createTable (table);
95
+ }
96
+ }
97
+ },
98
+ );
99
+
75
100
Future <void > deleteEverything () {
76
101
return transaction (() async {
77
102
for (final table in allTables) {
0 commit comments