// // Exercise.swift // Werkout_ios // // Created by Trey Tartt on 6/14/23. // import Foundation struct ExerciseElement: Codable, Equatable { let workout: Int let exercise: ExerciseExercise let weight: Int? let reps: Int? let duration: Int? let durationAudio: String? let weightAudio: String? let createdAt: String enum CodingKeys: String, CodingKey { case workout, exercise, weight, reps, duration case durationAudio = "duration_audio" case weightAudio = "weight_audio" case createdAt = "created_at" } } extension ExerciseElement { func videoURL(nsfw: Bool) -> URL? { var _url: URL? if nsfw { let viddd = exercise.nsfwVideoURL if let url = URL(string: BaseURLs.currentBaseURL + viddd) { _url = url } } else { let viddd = exercise.videoURL if let url = URL(string: BaseURLs.currentBaseURL + viddd) { _url = url } } return _url } } struct ExerciseExercise: Codable, Hashable, Identifiable { static func == (lhs: ExerciseExercise, rhs: ExerciseExercise) -> Bool { lhs.id == rhs.id } let id: Int let muscles: [ExerciseMuscle] let equipment: [ExerciseEquipment] let audioURL, videoURL, createdAt, updatedAt, nsfwVideoURL: String let name, description, side: String let isTwoDumbbells, isTrackableDistance, isAlternating, isWeight: Bool let isDistance, isDuration, isReps: Bool let jointsUsed, movementPatterns, equipmentRequired, muscleGroups: String let synonyms: String? enum CodingKeys: String, CodingKey { case id, muscles, equipment case audioURL = "audio_url" case videoURL = "video_url" case createdAt = "created_at" case updatedAt = "updated_at" case name, description, side case isTwoDumbbells = "is_two_dumbbells" case isTrackableDistance = "is_trackable_distance" case isAlternating = "is_alternating" case isWeight = "is_weight" case isDistance = "is_distance" case isDuration = "is_duration" case isReps = "is_reps" case jointsUsed = "joints_used" case movementPatterns = "movement_patterns" case equipmentRequired = "equipment_required" case muscleGroups = "muscle_groups" case synonyms case nsfwVideoURL = "nsfw_video_url" } } extension ExerciseExercise { func videoURL(nsfw: Bool) -> URL? { var _url: URL? if nsfw { let viddd = nsfwVideoURL if let url = URL(string: BaseURLs.currentBaseURL + viddd) { _url = url } } else { let viddd = videoURL if let url = URL(string: BaseURLs.currentBaseURL + viddd) { _url = url } } return _url } }