35 lines
853 B
Swift
35 lines
853 B
Swift
import Dependencies
|
|
import DependenciesMacros
|
|
import Logging
|
|
import SharedModels
|
|
|
|
public extension DependencyValues {
|
|
var apiController: ApiController {
|
|
get { self[ApiController.self] }
|
|
set { self[ApiController.self] = newValue }
|
|
}
|
|
}
|
|
|
|
@DependencyClient
|
|
public struct ApiController: Sendable {
|
|
public var json: @Sendable (Request) async throws -> (any Encodable)?
|
|
|
|
public func json(_ route: SiteRoute.Api, logger: Logger) async throws -> (any Encodable)? {
|
|
try await json(.init(route, logger: logger))
|
|
}
|
|
|
|
public struct Request: Sendable {
|
|
public let route: SiteRoute.Api
|
|
public let logger: Logger
|
|
|
|
public init(_ route: SiteRoute.Api, logger: Logger) {
|
|
self.route = route
|
|
self.logger = logger
|
|
}
|
|
}
|
|
}
|
|
|
|
extension ApiController: TestDependencyKey {
|
|
public static let testValue: ApiController = Self()
|
|
}
|