From a517ced1cc444102ced761662c350d1f02d15d22 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Mon, 20 Jan 2025 17:23:07 -0600 Subject: [PATCH] initial protocol and implementation Signed-off-by: Matt Bruce --- .../Protocols/EmployeeServiceProtocol.swift | 10 ++++++++++ .../Services/EmployeeService.swift | 19 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 EmployeeDirectory/Protocols/EmployeeServiceProtocol.swift create mode 100644 EmployeeDirectory/Services/EmployeeService.swift diff --git a/EmployeeDirectory/Protocols/EmployeeServiceProtocol.swift b/EmployeeDirectory/Protocols/EmployeeServiceProtocol.swift new file mode 100644 index 0000000..03c31d2 --- /dev/null +++ b/EmployeeDirectory/Protocols/EmployeeServiceProtocol.swift @@ -0,0 +1,10 @@ +// +// EmployeeServiceable.swift +// EmployeeDirectory +// +// Created by Matt Bruce on 1/20/25. +// + +public protocol EmployeeServiceProtocol { + func getEmployees() async throws -> [Employee] +} diff --git a/EmployeeDirectory/Services/EmployeeService.swift b/EmployeeDirectory/Services/EmployeeService.swift new file mode 100644 index 0000000..7518635 --- /dev/null +++ b/EmployeeDirectory/Services/EmployeeService.swift @@ -0,0 +1,19 @@ +// +// EmployeeService.swift +// EmployeeDirectory +// +// Created by Matt Bruce on 1/20/25. +// +import Foundation + + +/// Service Layer for Employees +public class EmployeeService: EmployeeServiceProtocol { + + /// Service to get Employees + /// - Returns: Array of Employee Structs + public func getEmployees() async throws -> [Employee] { + let employees: Employees = try await NetworkService.shared.fetchData(from: "https://jsonplaceholder.typicode.com/users", as: Employees.self) + return employees.employees + } +}