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 private var statusRaw: String? @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 { guard let raw = statusRaw else { return nil } return WorkoutStatus(rawValue: raw) } set { statusRaw = newValue?.rawValue } } } // 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 } }