@@ -116,8 +116,8 @@ struct ReminderText: FTS5 {
116116}
117117
118118extension DependencyValues {
119- mutating func bootstrapDatabase( syncEngineDelegate: ( any SyncEngineDelegate ) ? = nil ) throws {
120- defaultDatabase = try Reminders . appDatabase ( )
119+ mutating func bootstrapDatabase( syncEngineDelegate: ( any SyncEngineDelegate ) ? = nil , seedSampleData : Bool ) throws {
120+ defaultDatabase = try Reminders . appDatabase ( seedSampleData : seedSampleData )
121121 defaultSyncEngine = try SyncEngine (
122122 for: defaultDatabase,
123123 tables: RemindersList . self,
@@ -130,23 +130,23 @@ extension DependencyValues {
130130 }
131131}
132132
133- func appDatabase( ) throws -> any DatabaseWriter {
133+ func appDatabase( seedSampleData : Bool = true ) throws -> any DatabaseWriter {
134134 @Dependency ( \. context) var context
135135 var configuration = Configuration ( )
136136 configuration. foreignKeysEnabled = true
137137 configuration. prepareDatabase { db in
138138 try db. attachMetadatabase ( )
139139 db. add ( function: $createDefaultRemindersList)
140140 db. add ( function: $handleReminderStatusUpdate)
141- #if DEBUG
142- db. trace ( options: . profile) {
143- if context == . live {
144- logger. debug ( " \( $0. expandedDescription) " )
145- } else {
146- print ( " \( $0. expandedDescription) " )
147- }
141+ #if DEBUG
142+ db. trace ( options: . profile) {
143+ if context == . live {
144+ logger. debug ( " \( $0. expandedDescription) " )
145+ } else {
146+ print ( " \( $0. expandedDescription) " )
148147 }
149- #endif
148+ }
149+ #endif
150150 }
151151 let database = try SQLiteData . defaultDatabase ( configuration: configuration)
152152 logger. debug (
@@ -156,9 +156,9 @@ func appDatabase() throws -> any DatabaseWriter {
156156 """
157157 )
158158 var migrator = DatabaseMigrator ( )
159- #if DEBUG
160- migrator. eraseDatabaseOnSchemaChange = true
161- #endif
159+ #if DEBUG
160+ migrator. eraseDatabaseOnSchemaChange = true
161+ #endif
162162 migrator. registerMigration ( " Create initial tables " ) { db in
163163 let defaultListColor = Color . HexRepresentation ( queryOutput: RemindersList . defaultColor) . hexValue
164164 try #sql(
@@ -228,7 +228,7 @@ func appDatabase() throws -> any DatabaseWriter {
228228 )
229229 . execute ( db)
230230 }
231-
231+
232232 migrator. registerMigration ( " Create foreign key indexes " ) { db in
233233 try #sql(
234234 """
@@ -254,9 +254,9 @@ func appDatabase() throws -> any DatabaseWriter {
254254 }
255255
256256 try migrator. migrate ( database)
257-
257+
258258 try database. write { db in
259-
259+
260260 try RemindersList . createTemporaryTrigger (
261261 after: . insert { new in
262262 RemindersList
@@ -265,7 +265,7 @@ func appDatabase() throws -> any DatabaseWriter {
265265 }
266266 )
267267 . execute ( db)
268-
268+
269269 try Reminder . createTemporaryTrigger (
270270 after: . insert { new in
271271 Reminder
@@ -274,7 +274,7 @@ func appDatabase() throws -> any DatabaseWriter {
274274 }
275275 )
276276 . execute ( db)
277-
277+
278278 try RemindersList . createTemporaryTrigger (
279279 after: . delete { _ in
280280 Values ( $createDefaultRemindersList ( ) )
@@ -283,7 +283,7 @@ func appDatabase() throws -> any DatabaseWriter {
283283 }
284284 )
285285 . execute ( db)
286-
286+
287287 try Reminder . createTemporaryTrigger (
288288 after: . insert { new in
289289 ReminderText . insert {
@@ -297,7 +297,7 @@ func appDatabase() throws -> any DatabaseWriter {
297297 }
298298 )
299299 . execute ( db)
300-
300+
301301 try Reminder . createTemporaryTrigger (
302302 after: . update {
303303 ( $0. title, $0. notes)
@@ -311,7 +311,7 @@ func appDatabase() throws -> any DatabaseWriter {
311311 }
312312 )
313313 . execute ( db)
314-
314+
315315 try Reminder . createTemporaryTrigger (
316316 after: . delete { old in
317317 ReminderText
@@ -320,36 +320,36 @@ func appDatabase() throws -> any DatabaseWriter {
320320 }
321321 )
322322 . execute ( db)
323-
323+
324324 func updateReminderTextTags(
325325 for reminderID: some QueryExpression < Reminder . ID >
326326 ) -> UpdateOf < ReminderText > {
327327 ReminderText
328328 . where { $0. rowid. eq ( Reminder . find ( reminderID) . select ( \. rowid) ) }
329329 . update {
330330 $0. tags =
331- ReminderTag
331+ ReminderTag
332332 . order ( by: \. tagID)
333333 . where { $0. reminderID. eq ( reminderID) }
334334 . join ( Tag . all) { $0. tagID. eq ( $1. primaryKey) }
335335 . select { ( " # " + $1. title) . groupConcat ( " " ) ?? " " }
336336 }
337337 }
338-
338+
339339 try ReminderTag . createTemporaryTrigger (
340340 after: . insert { new in
341341 updateReminderTextTags ( for: new. reminderID)
342342 }
343343 )
344344 . execute ( db)
345-
345+
346346 try ReminderTag . createTemporaryTrigger (
347347 after: . delete { old in
348348 updateReminderTextTags ( for: old. reminderID)
349349 }
350350 )
351351 . execute ( db)
352-
352+
353353 try Reminder . createTemporaryTrigger (
354354 after: . update {
355355 $0. status
@@ -360,12 +360,14 @@ func appDatabase() throws -> any DatabaseWriter {
360360 }
361361 )
362362 . execute ( db)
363-
364- if context != . live {
363+
364+ #if DEBUG
365+ if seedSampleData {
365366 try db. seedSampleData ( )
366367 }
368+ #endif
367369 }
368-
370+
369371 return database
370372}
371373
0 commit comments