Files
workoutsplus/WorkoutsPlus/Configuration/SampleData.swift
2024-10-21 15:03:47 +02:00

63 lines
1.6 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
//
// SampleData.swift
// WorkoutsPlus
//
// Created by Felix Förtsch on 17.08.24.
//
import Foundation
import SwiftData
@MainActor // With your annotation, youre declaring that all code in this class must run on the main actor, including access to the mainContext property. Since all the SwiftUI code in an app runs on the main actor by default, youve satisfied the condition.
class SampleData {
static let shared = SampleData()
let modelContainer: ModelContainer
var context: ModelContext {
modelContainer.mainContext
}
private init() {
let schema = WorkoutsPlusApp.swiftDataSchema
let modelConfiguration = ModelConfiguration(schema: schema, isStoredInMemoryOnly: true)
do {
modelContainer = try ModelContainer(for: schema, configurations: [modelConfiguration])
SampleData.insertSampleData(into: context)
} catch {
fatalError("Could not create ModelContainer: \(error)")
}
}
}
extension SampleData {
static func insertSampleData(into context: ModelContext) {
for exercise in Exercise.sampleDataRecommendedRoutine {
context.insert(exercise)
}
for exercise in Exercise.sampleDataRings {
context.insert(exercise)
}
for workoutItem in WorkoutItem.sampleDataRecommendedRoutine {
context.insert(workoutItem)
}
for workoutItem in WorkoutItem.sampleDataRings {
context.insert(workoutItem)
}
for workout in Workout.sampleData {
context.insert(workout)
}
do {
try context.save()
} catch {
print("Sample data context failed to save.")
}
}
}