import Foundation import CoreData @objc(WorkoutLog) public class WorkoutLog: NSManagedObject, Identifiable { @NSManaged public var date: Date @NSManaged public var sets: Int32 @NSManaged public var reps: Int32 @NSManaged public var weight: Int32 @NSManaged public var order: Int32 @NSManaged public var exerciseName: String @NSManaged public var currentStateIndex: Int32 @NSManaged public var elapsedSeconds: Int32 @NSManaged public var completed: Bool @NSManaged public var workout: Workout? public var id: NSManagedObjectID { objectID } var status: WorkoutStatus { get { willAccessValue(forKey: "status") let raw = primitiveValue(forKey: "status") as? String ?? "notStarted" didAccessValue(forKey: "status") return WorkoutStatus(rawValue: raw) ?? .notStarted } set { willChangeValue(forKey: "status") setPrimitiveValue(newValue.rawValue, forKey: "status") didChangeValue(forKey: "status") } } } // MARK: - Fetch Request extension WorkoutLog { @nonobjc public class func fetchRequest() -> NSFetchRequest { return NSFetchRequest(entityName: "WorkoutLog") } static func orderedFetchRequest(for workout: Workout) -> NSFetchRequest { let request = fetchRequest() request.predicate = NSPredicate(format: "workout == %@", workout) request.sortDescriptors = [NSSortDescriptor(keyPath: \WorkoutLog.order, ascending: true)] return request } }