Skip to content

Commit cc10a82

Browse files
committed
Bootstrap the database with a nil SyncEngineDelegate in RemindersList previews so lists will appear. And do not seed sample data to preserve the SeedSampleData UI.
1 parent 90568d3 commit cc10a82

4 files changed

Lines changed: 39 additions & 35 deletions

File tree

Examples/Reminders/RemindersApp.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ struct RemindersApp: App {
1818
init() {
1919
if context == .live {
2020
try! prepareDependencies {
21-
try $0.bootstrapDatabase(syncEngineDelegate: syncEngineDelegate)
21+
try $0.bootstrapDatabase(syncEngineDelegate: syncEngineDelegate, seedSampleData: false)
2222
}
2323
}
2424
}

Examples/Reminders/RemindersLists.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -436,10 +436,12 @@ private struct ReminderGridCell: View {
436436
}
437437

438438
#Preview {
439-
let _ = try! prepareDependencies {
440-
$0.defaultDatabase = try Reminders.appDatabase()
439+
withErrorReporting {
440+
try prepareDependencies {
441+
try $0.bootstrapDatabase(seedSampleData: false)
442+
}
441443
}
442-
NavigationStack {
444+
return NavigationStack {
443445
RemindersListsView(model: RemindersListsModel())
444446
}
445447
}

Examples/Reminders/Schema.swift

Lines changed: 32 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,8 @@ struct ReminderText: FTS5 {
116116
}
117117

118118
extension 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

Examples/RemindersTests/Internal.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import Testing
1010
.dependency(\.continuousClock, ImmediateClock()),
1111
.dependency(\.date.now, Date(timeIntervalSince1970: 1_234_567_890)),
1212
.dependency(\.uuid, .incrementing),
13-
.dependencies { try $0.bootstrapDatabase() },
13+
.dependencies { try $0.bootstrapDatabase(seedSampleData: true) },
1414
.snapshots(record: .failed)
1515
)
1616
struct BaseTestSuite {}

0 commit comments

Comments
 (0)