feat: Moves api controller to it's own module.
This commit is contained in:
34
Sources/ApiController/ApiController.swift
Normal file
34
Sources/ApiController/ApiController.swift
Normal file
@@ -0,0 +1,34 @@
|
||||
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: ApiRoute, logger: Logger) async throws -> (any Encodable)? {
|
||||
try await json(.init(route, logger: logger))
|
||||
}
|
||||
|
||||
public struct Request: Sendable {
|
||||
public let route: ApiRoute
|
||||
public let logger: Logger
|
||||
|
||||
public init(_ route: ApiRoute, logger: Logger) {
|
||||
self.route = route
|
||||
self.logger = logger
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension ApiController: TestDependencyKey {
|
||||
public static let testValue: ApiController = Self()
|
||||
}
|
||||
Reference in New Issue
Block a user