40 lines
1.3 KiB
Swift
40 lines
1.3 KiB
Swift
import Foundation
|
|
import SwiftData
|
|
|
|
final class WorkoutsContainer {
|
|
static let logger = AppLogger(subsystem: "Workouts", category: "WorkoutsContainer")
|
|
|
|
static func create(shouldCreateDefaults: inout Bool) -> ModelContainer {
|
|
let schema = Schema(versionedSchema: SchemaV1.self)
|
|
let container = try! ModelContainer(for: schema, migrationPlan: WorkoutsMigrationPlan.self)
|
|
|
|
let context = ModelContext(container)
|
|
let descriptor = FetchDescriptor<Workout>()
|
|
let results = try! context.fetch(descriptor)
|
|
|
|
if results.isEmpty {
|
|
shouldCreateDefaults = true
|
|
}
|
|
|
|
return container
|
|
}
|
|
|
|
@MainActor
|
|
static var preview: ModelContainer {
|
|
let configuration = ModelConfiguration(isStoredInMemoryOnly: true)
|
|
|
|
do {
|
|
let schema = Schema(SchemaV1.models)
|
|
let container = try ModelContainer(for: schema, configurations: configuration)
|
|
let context = ModelContext(container)
|
|
|
|
// Create default data for previews
|
|
InitialData.create(modelContext: context)
|
|
|
|
return container
|
|
} catch {
|
|
fatalError("Failed to create preview ModelContainer: \(error.localizedDescription)")
|
|
}
|
|
}
|
|
}
|