diff --git a/EmployeeDirectory/Services/EmployeeService.swift b/EmployeeDirectory/Services/EmployeeService.swift index 037b12c..6480c32 100644 --- a/EmployeeDirectory/Services/EmployeeService.swift +++ b/EmployeeDirectory/Services/EmployeeService.swift @@ -39,11 +39,7 @@ internal enum EmployeeServiceMode: String, CaseIterable { /// Service Layer for Employees public class EmployeeService: EmployeeServiceProtocol { - public enum EmployeeServiceError: Error { - case error - //case LoadError - //case other(Error) - } + // MARK: - Properties public static let shared = EmployeeService() // Default shared instance @@ -57,28 +53,20 @@ public class EmployeeService: EmployeeServiceProtocol { /// - Parameter serviceMode: Mode in which to hit. /// - Returns: An Employees struct public func getEmployees() async throws -> Employees { - var employees: Employees let cache = EmployeeCacheService.shared - do { - employees = try cache.load() - return employees - } catch { - if let networkFound = try? await fetchNetworkEmployees() { - employees = networkFound - return employees - } - } - throw EmployeeServiceError.error - } - - public func fetchNetworkEmployees() async throws -> Employees { - var employees: Employees - if let networkFound = try? await NetworkService.shared.fetchData(from: EmployeeServiceMode.production.endpoint, as: Employees.self) { - employees = networkFound - try? EmployeeCacheService.shared.save(from: employees) + + //try to load the employees + if let employees = try? cache.load() { return employees } else { - throw EmployeeServiceError.error + //fetch the employees + let employees = try await NetworkService.shared.fetchData(from: EmployeeServiceMode.production.endpoint, as: Employees.self) + + //save to cache + try? EmployeeCacheService.shared.save(from: employees) + + //return class + return employees } } }