Files
vapor-po/Sources/ApiController/ApiController.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()
}