@@ -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 ())();
@@ -69,9 +74,28 @@ class ExerciseDatabase extends _$ExerciseDatabase {
69
74
ExerciseDatabase .inMemory (super .e);
70
75
71
76
@override
72
- // TODO: implement schemaVersion
73
77
int get schemaVersion => 1 ;
74
78
79
+ /// There is not really a migration strategy. If we bump the version
80
+ /// number, delete everything and recreate the new tables. The provider
81
+ /// will fetch everything as needed from the server
82
+ @override
83
+ MigrationStrategy get migration => MigrationStrategy (
84
+ onUpgrade: (m, from, to) async {
85
+ // no-op, but needs to be defined
86
+ return ;
87
+ },
88
+ beforeOpen: (openingDetails) async {
89
+ if (openingDetails.hadUpgrade) {
90
+ final m = createMigrator ();
91
+ for (final table in allTables) {
92
+ await m.deleteTable (table.actualTableName);
93
+ await m.createTable (table);
94
+ }
95
+ }
96
+ },
97
+ );
98
+
75
99
Future <void > deleteEverything () {
76
100
return transaction (() async {
77
101
for (final table in allTables) {
0 commit comments