Skip to content

Commit 1c3c98d

Browse files
committed
Fix events migration
1 parent 2cf5d6a commit 1c3c98d

File tree

6 files changed

+107
-99
lines changed

6 files changed

+107
-99
lines changed

api/lib/models/event/database.dart

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ class EventDatabaseService extends EventService with TableService {
1515
}
1616

1717
@override
18-
FutureOr<void> create(Database db) async {
18+
FutureOr<void> create(DatabaseExecutor db, [String name = 'events']) async {
1919
await db.execute("""
20-
CREATE TABLE IF NOT EXISTS events (
20+
CREATE TABLE IF NOT EXISTS $name (
2121
id BLOB(16) PRIMARY KEY,
2222
parentId BLOB(16),
2323
groupId BLOB(16),
@@ -90,14 +90,6 @@ class EventDatabaseService extends EventService with TableService {
9090
return result.map(Event.fromDatabase).toList();
9191
}
9292

93-
@override
94-
FutureOr<void> migrate(Database db, int version) async {
95-
if (version < 4) {
96-
await db.execute("ALTER TABLE events RENAME TO events_old");
97-
await create(db);
98-
}
99-
}
100-
10193
@override
10294
FutureOr<bool> updateEvent(Event event) async {
10395
return await db?.update(

api/lib/models/resource/event.dart

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
1+
import 'package:flow_api/models/event/database.dart';
12
import 'package:flow_api/models/event/model.dart';
23
import 'package:flow_api/models/resource/database.dart';
34
import 'package:sqflite_common/sqlite_api.dart';
45

56
class EventResourceDatabaseConnector extends ResourceDatabaseConnector<Event> {
7+
final EventDatabaseService eventService;
8+
9+
EventResourceDatabaseConnector(this.eventService);
10+
611
@override
712
String get connectedIdName => "eventId";
813

@@ -19,11 +24,17 @@ class EventResourceDatabaseConnector extends ResourceDatabaseConnector<Event> {
1924
Future<void> migrate(Database db, int version) async {
2025
await super.migrate(db, version);
2126
if (version < 4) {
22-
await db.execute(
23-
"INSERT INTO events SELECT id, parentId, groupId, blocked, name, description, location, extra FROM events_old");
24-
await db.execute(
25-
"INSERT INTO eventResources(eventId, resourceId) SELECT id, placeId FROM events_old");
26-
await db.execute("DROP TABLE events_old");
27+
await db.execute("PRAGMA foreign_keys=off");
28+
await db.transaction((txn) async {
29+
await eventService.create(txn, 'events_temp');
30+
await txn.execute(
31+
"INSERT INTO events_temp SELECT id, parentId, groupId, blocked, name, description, location, extra FROM events");
32+
await txn.execute(
33+
"INSERT INTO eventResources(eventId, resourceId) SELECT id, placeId FROM events");
34+
await txn.execute("DROP TABLE events");
35+
await txn.execute("ALTER TABLE events_temp RENAME TO events");
36+
});
37+
await db.execute("PRAGMA foreign_keys=on");
2738
}
2839
}
2940
}

api/lib/services/database.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ class DatabaseService extends SourceService {
4949
@override
5050
final ResourceDatabaseService resource = ResourceDatabaseService();
5151
@override
52-
final EventResourceDatabaseConnector eventResource =
53-
EventResourceDatabaseConnector();
52+
late final EventResourceDatabaseConnector eventResource =
53+
EventResourceDatabaseConnector(event);
5454
@override
5555
final CalendarItemResourceDatabaseConnector calendarItemResource =
5656
CalendarItemResourceDatabaseConnector();

app/pubspec.lock

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -980,10 +980,10 @@ packages:
980980
dependency: transitive
981981
description:
982982
name: shared_preferences_android
983-
sha256: ea86be7b7114f9e94fddfbb52649e59a03d6627ccd2387ebddcd6624719e9f16
983+
sha256: a768fc8ede5f0c8e6150476e14f38e2417c0864ca36bb4582be8e21925a03c22
984984
url: "https://pub.dev"
985985
source: hosted
986-
version: "2.4.5"
986+
version: "2.4.6"
987987
shared_preferences_foundation:
988988
dependency: transitive
989989
description:
@@ -1012,10 +1012,10 @@ packages:
10121012
dependency: transitive
10131013
description:
10141014
name: shared_preferences_web
1015-
sha256: d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e
1015+
sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019
10161016
url: "https://pub.dev"
10171017
source: hosted
1018-
version: "2.4.2"
1018+
version: "2.4.3"
10191019
shared_preferences_windows:
10201020
dependency: transitive
10211021
description:
@@ -1361,10 +1361,10 @@ packages:
13611361
dependency: transitive
13621362
description:
13631363
name: win32
1364-
sha256: daf97c9d80197ed7b619040e86c8ab9a9dad285e7671ee7390f9180cc828a51e
1364+
sha256: b89e6e24d1454e149ab20fbb225af58660f0c0bf4475544650700d8e2da54aef
13651365
url: "https://pub.dev"
13661366
source: hosted
1367-
version: "5.10.1"
1367+
version: "5.11.0"
13681368
window_manager:
13691369
dependency: "direct main"
13701370
description:

docs/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"dependencies": {
1313
"@astrojs/check": "^0.9.4",
1414
"@astrojs/react": "^4.2.0",
15-
"@astrojs/starlight": "^0.32.0",
15+
"@astrojs/starlight": "^0.32.1",
1616
"@phosphor-icons/react": "^2.1.7",
1717
"@types/react": "^19.0.10",
1818
"@types/react-dom": "^19.0.4",

0 commit comments

Comments
 (0)