This commit is contained in:
2025-07-13 17:51:52 -04:00
parent 6cd44579e2
commit d4514805e9
33 changed files with 1295 additions and 80 deletions

View File

@ -0,0 +1,33 @@
import Foundation
import SwiftData
@Model
final class Exercise: ListableItem {
@Attribute(.unique) var name: String = ""
var setup: String = ""
var descr: String = ""
var sets: Int = 0
var reps: Int = 0
var weight: Int = 0
@Relationship(deleteRule: .nullify, inverse: \ExerciseType.exercises)
var type: ExerciseType?
@Relationship(deleteRule: .nullify, inverse: \Muscle.exercises)
var muscles: [Muscle]? = []
@Relationship(deleteRule: .nullify, inverse: \SplitExerciseAssignment.exercise)
var splits: [SplitExerciseAssignment]? = []
@Relationship(deleteRule: .nullify, inverse: \WorkoutLog.exercise)
var logs: [WorkoutLog]? = []
init(name: String, setup: String, descr: String, sets: Int, reps: Int, weight: Int) {
self.name = name
self.setup = setup
self.descr = descr
self.sets = sets
self.reps = reps
self.weight = weight
}
}

View File

@ -0,0 +1,16 @@
import Foundation
import SwiftData
@Model
final class ExerciseType: ListableItem {
@Attribute(.unique) var name: String = ""
var descr: String = ""
@Relationship(deleteRule: .nullify)
var exercises: [Exercise]? = []
init(name: String, descr: String) {
self.name = name
self.descr = descr
}
}

View File

@ -0,0 +1,21 @@
import Foundation
import SwiftData
@Model
final class Muscle: ListableItem {
@Attribute(.unique) var name: String = ""
var descr: String = ""
@Relationship(deleteRule: .nullify, inverse: \MuscleGroup.muscles)
var muscleGroup: MuscleGroup?
@Relationship(deleteRule: .nullify)
var exercises: [Exercise]? = []
init(name: String, descr: String, muscleGroup: MuscleGroup) {
self.name = name
self.descr = descr
self.muscleGroup = muscleGroup
}
}

View File

@ -0,0 +1,16 @@
import Foundation
import SwiftData
@Model
final class MuscleGroup: ListableItem {
@Attribute(.unique) var name: String = ""
var descr: String = ""
@Relationship(deleteRule: .nullify)
var muscles: [Muscle]? = []
init(name: String, descr: String) {
self.name = name
self.descr = descr
}
}

View File

@ -0,0 +1,19 @@
import Foundation
import SwiftData
@Model
final class Split: ListableItem {
@Attribute(.unique) var name: String = ""
var intro: String = ""
@Relationship(deleteRule: .cascade, inverse: \SplitExerciseAssignment.split)
var exercises: [SplitExerciseAssignment]? = []
@Relationship(deleteRule: .nullify, inverse: \Workout.split)
var workouts: [Workout]? = []
init(name: String, intro: String) {
self.name = name
self.intro = intro
}
}

View File

@ -0,0 +1,25 @@
import Foundation
import SwiftData
@Model
final class SplitExerciseAssignment {
var order: Int = 0
var sets: Int = 0
var reps: Int = 0
var weight: Int = 0
@Relationship(deleteRule: .nullify)
var split: Split?
@Relationship(deleteRule: .nullify)
var exercise: Exercise?
init(order: Int, sets: Int, reps: Int, weight: Int, split: Split, exercise: Exercise) {
self.order = order
self.sets = sets
self.reps = reps
self.weight = weight
self.split = split
self.exercise = exercise
}
}

View File

@ -0,0 +1,20 @@
import Foundation
import SwiftData
@Model
final class Workout {
var start: Date = Date()
var end: Date?
@Relationship(deleteRule: .nullify)
var split: Split?
@Relationship(deleteRule: .cascade, inverse: \WorkoutLog.workout)
var logs: [WorkoutLog]? = []
init(start: Date, end: Date? = nil, split: Split?) {
self.start = start
self.end = end
self.split = split
}
}

View File

@ -0,0 +1,27 @@
import Foundation
import SwiftData
@Model
final class WorkoutLog {
var date: Date = Date()
var sets: Int = 0
var reps: Int = 0
var weight: Int = 0
var completed: Bool = false
@Relationship(deleteRule: .nullify)
var workout: Workout?
@Relationship(deleteRule: .nullify)
var exercise: Exercise?
init(date: Date, sets: Int, reps: Int, weight: Int, completed: Bool, workout: Workout, exercise: Exercise) {
self.date = date
self.sets = sets
self.reps = reps
self.weight = weight
self.completed = completed
self.workout = workout
self.exercise = exercise
}
}