41 lines
1.4 KiB
Swift
41 lines
1.4 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 configuration = ModelConfiguration(cloudKitDatabase: .automatic)
|
|
let container = try! ModelContainer(for: schema, migrationPlan: WorkoutsMigrationPlan.self, configurations: [configuration])
|
|
|
|
let context = ModelContext(container)
|
|
let descriptor = FetchDescriptor<Exercise>()
|
|
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)")
|
|
}
|
|
}
|
|
}
|