Files
WerkoutIOS/Werkout_ios/DataStore.swift
Trey t 6761fefc21 WIP
2023-06-19 19:45:15 -05:00

80 lines
2.1 KiB
Swift

//
// DataStore.swift
// Werkout_ios
//
// Created by Trey Tartt on 6/19/23.
//
import Foundation
class DataStore {
enum DataStoreStatus {
case loading
case idle
}
static let shared = DataStore()
public private(set) var allWorkouts: [Workout]?
public private(set) var allMuscles: [Muscle]?
public private(set) var allEquipment: [Equipment]?
public private(set) var allExercise: [ExerciseExercise]?
public private(set) var status = DataStoreStatus.idle
private let fetchAllDataQueue = DispatchGroup()
public func fetchAllData() {
status = .loading
fetchAllDataQueue.enter()
fetchAllDataQueue.enter()
fetchAllDataQueue.enter()
fetchAllDataQueue.enter()
fetchAllDataQueue.notify(queue: .main) {
self.status = .idle
}
AllWorkoutFetchable().fetch(completion: { result in
switch result {
case .success(let model):
self.allWorkouts = model
case .failure(let error):
print(error)
}
self.fetchAllDataQueue.leave()
})
AllMusclesFetchable().fetch(completion: { result in
switch result {
case .success(let model):
self.allMuscles = model
case .failure(let error):
print(error)
}
self.fetchAllDataQueue.leave()
})
AllEquipmentFetchable().fetch(completion: { result in
switch result {
case .success(let model):
self.allEquipment = model
case .failure(let error):
print(error)
}
self.fetchAllDataQueue.leave()
})
AllExerciseFetchable().fetch(completion: { result in
switch result {
case .success(let model):
self.allExercise = model
case .failure(let error):
print(error)
}
self.fetchAllDataQueue.leave()
})
}
}