refactored getEmployees
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
parent
a6679a56e9
commit
8a086f4bd4
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user