Files
swift-hvac-toolbox/Sources/ApiController/ApiController.swift

36 lines
924 B
Swift

import Dependencies
import DependenciesMacros
import Logging
import PsychrometricClient
import Routes
public extension DependencyValues {
var apiController: ApiController {
get { self[ApiController.self] }
set { self[ApiController.self] = newValue }
}
}
@DependencyClient
public struct ApiController: Sendable {
public var json: @Sendable (SiteRoute.Api, Logger) async throws -> (any Encodable)?
}
extension ApiController: TestDependencyKey {
public static let testValue: ApiController = Self()
}
extension ApiController: DependencyKey {
public static var liveValue: ApiController {
@Dependency(\.psychrometricClient) var psychrometricClient
return .init(json: { route, logger in
switch route {
case let .calculateMoldRisk(request):
logger.info("Calculating mold risk: \(request)")
return try await psychrometricClient.respond(request, logger)
}
})
}
}