Skip to content

Commit 188dcdd

Browse files
committed
Rename field to "lastFetched" and add migration class
1 parent 8ce9029 commit 188dcdd

File tree

6 files changed

+384
-260
lines changed

6 files changed

+384
-260
lines changed

lib/database/exercises/exercise_database.dart

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ part 'exercise_database.g.dart';
1515
@DataClassName('ExerciseTable')
1616
class Exercises extends Table {
1717
const Exercises();
18+
1819
IntColumn get id => integer()();
1920

2021
TextColumn get data => text()();
@@ -32,6 +33,7 @@ class Exercises extends Table {
3233
@DataClassName('MuscleTable')
3334
class Muscles extends Table {
3435
const Muscles();
36+
3537
IntColumn get id => integer()();
3638

3739
TextColumn get data => text().map(const MuscleConverter())();
@@ -40,6 +42,7 @@ class Muscles extends Table {
4042
@DataClassName('CategoryTable')
4143
class Categories extends Table {
4244
const Categories();
45+
4346
IntColumn get id => integer()();
4447

4548
TextColumn get data => text().map(const ExerciseCategoryConverter())();
@@ -48,6 +51,7 @@ class Categories extends Table {
4851
@DataClassName('LanguagesTable')
4952
class Languages extends Table {
5053
const Languages();
54+
5155
IntColumn get id => integer()();
5256

5357
TextColumn get data => text().map(const LanguageConverter())();
@@ -56,6 +60,7 @@ class Languages extends Table {
5660
@DataClassName('EquipmentTable')
5761
class Equipments extends Table {
5862
const Equipments();
63+
5964
IntColumn get id => integer()();
6065

6166
TextColumn get data => text().map(const EquipmentConverter())();
@@ -69,9 +74,28 @@ class ExerciseDatabase extends _$ExerciseDatabase {
6974
ExerciseDatabase.inMemory(super.e);
7075

7176
@override
72-
// TODO: implement schemaVersion
7377
int get schemaVersion => 1;
7478

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+
7599
Future<void> deleteEverything() {
76100
return transaction(() async {
77101
for (final table in allTables) {

lib/database/ingredients/ingredients_database.dart

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ class Ingredients extends Table {
1515

1616
TextColumn get data => text()();
1717

18-
DateTimeColumn get lastUpdate => dateTime()();
18+
/// The date when the ingredient was last fetched from the server
19+
DateTimeColumn get lastFetched => dateTime()();
1920
}
2021

2122
@DriftDatabase(tables: [Ingredients])
@@ -26,8 +27,27 @@ class IngredientDatabase extends _$IngredientDatabase {
2627
IngredientDatabase.inMemory(super.e);
2728

2829
@override
29-
// TODO: implement schemaVersion
30-
int get schemaVersion => 1;
30+
int get schemaVersion => 2;
31+
32+
/// There is not really a migration strategy. If we bump the version
33+
/// number, delete everything and recreate the new tables. The nutrition provider
34+
/// will fetch everything as needed from the server
35+
@override
36+
MigrationStrategy get migration => MigrationStrategy(
37+
onUpgrade: (m, from, to) async {
38+
// no-op, but needs to be defined
39+
return;
40+
},
41+
beforeOpen: (openingDetails) async {
42+
if (openingDetails.hadUpgrade) {
43+
final m = createMigrator();
44+
for (final table in allTables) {
45+
await m.deleteTable(table.actualTableName);
46+
await m.createTable(table);
47+
}
48+
}
49+
},
50+
);
3151

3252
Future<void> deleteEverything() {
3353
return transaction(() async {

lib/database/ingredients/ingredients_database.g.dart

Lines changed: 46 additions & 46 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)