wip
This commit is contained in:
33
Workouts/Models/Exercise.swift
Normal file
33
Workouts/Models/Exercise.swift
Normal 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
|
||||
}
|
||||
}
|
16
Workouts/Models/ExerciseType.swift
Normal file
16
Workouts/Models/ExerciseType.swift
Normal 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
|
||||
}
|
||||
}
|
21
Workouts/Models/Muscle.swift
Normal file
21
Workouts/Models/Muscle.swift
Normal 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
|
||||
}
|
||||
}
|
16
Workouts/Models/MuscleGroup.swift
Normal file
16
Workouts/Models/MuscleGroup.swift
Normal 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
|
||||
}
|
||||
}
|
19
Workouts/Models/Split.swift
Normal file
19
Workouts/Models/Split.swift
Normal 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
|
||||
}
|
||||
}
|
25
Workouts/Models/SplitExerciseAssignment.swift
Normal file
25
Workouts/Models/SplitExerciseAssignment.swift
Normal 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
|
||||
}
|
||||
}
|
20
Workouts/Models/Workout.swift
Normal file
20
Workouts/Models/Workout.swift
Normal 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
|
||||
}
|
||||
}
|
27
Workouts/Models/WorkoutLog.swift
Normal file
27
Workouts/Models/WorkoutLog.swift
Normal 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
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user