change folders to the "feature" mindset
This commit is contained in:
18
WorkoutsPlus/Configuration/Protocols.swift
Normal file
18
WorkoutsPlus/Configuration/Protocols.swift
Normal file
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// Protocols.swift
|
||||
// WorkoutsPlus
|
||||
//
|
||||
// Created by Felix Förtsch on 04.09.24.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
protocol Nameable: Identifiable, Hashable {
|
||||
var id: UUID { get }
|
||||
var name: String { get set }
|
||||
}
|
||||
|
||||
protocol Positionable: Identifiable {
|
||||
var id: UUID { get }
|
||||
var position: Int { get set }
|
||||
}
|
||||
62
WorkoutsPlus/Configuration/SampleData.swift
Normal file
62
WorkoutsPlus/Configuration/SampleData.swift
Normal file
@@ -0,0 +1,62 @@
|
||||
//
|
||||
// SampleData.swift
|
||||
// WorkoutsPlus
|
||||
//
|
||||
// Created by Felix Förtsch on 17.08.24.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import SwiftData
|
||||
|
||||
@MainActor // With your annotation, you’re 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, you’ve 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.")
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user