@@ -9,6 +9,7 @@ struct RemindersList: Hashable, Identifiable {
99 var id : Int
1010 @Column ( as: Color . HexRepresentation. self)
1111 var color = Color ( red: 0x4a / 255 , green: 0x99 / 255 , blue: 0xef / 255 )
12+ var position = 0
1213 var title = " "
1314}
1415
@@ -107,7 +108,7 @@ func appDatabase() throws -> any DatabaseWriter {
107108 #if DEBUG
108109 migrator. eraseDatabaseOnSchemaChange = true
109110 #endif
110- migrator. registerMigration ( " Add reminders lists table " ) { db in
111+ migrator. registerMigration ( " Create initial tables " ) { db in
111112 try #sql(
112113 """
113114 CREATE TABLE " remindersLists " (
@@ -118,8 +119,6 @@ func appDatabase() throws -> any DatabaseWriter {
118119 """
119120 )
120121 . execute ( db)
121- }
122- migrator. registerMigration ( " Add reminders table " ) { db in
123122 try #sql(
124123 """
125124 CREATE TABLE " reminders " (
@@ -137,8 +136,6 @@ func appDatabase() throws -> any DatabaseWriter {
137136 """
138137 )
139138 . execute ( db)
140- }
141- migrator. registerMigration ( " Add tags table " ) { db in
142139 try #sql(
143140 """
144141 CREATE TABLE " tags " (
@@ -161,6 +158,27 @@ func appDatabase() throws -> any DatabaseWriter {
161158 )
162159 . execute ( db)
163160 }
161+ migrator. registerMigration ( " Add 'position' column to 'remindersLists' " ) { db in
162+ try #sql(
163+ """
164+ ALTER TABLE " remindersLists "
165+ ADD COLUMN " position " INTEGER NOT NULL DEFAULT 0
166+ """
167+ )
168+ . execute ( db)
169+ try #sql(
170+ """
171+ CREATE TRIGGER " default_position_reminders_lists "
172+ AFTER INSERT ON " remindersLists "
173+ FOR EACH ROW BEGIN
174+ UPDATE " remindersLists "
175+ SET " position " = (SELECT max( " position " ) + 1 FROM " remindersLists " )
176+ WHERE " id " = NEW. " id " ;
177+ END
178+ """
179+ )
180+ . execute ( db)
181+ }
164182 #if DEBUG && targetEnvironment(simulator)
165183 if context != . test {
166184 migrator. registerMigration ( " Seed sample data " ) { db in
0 commit comments