feat: Moves api controller to it's own module.

This commit is contained in:
2025-01-25 15:54:02 -05:00
parent 67e689b51e
commit 0fad024350
14 changed files with 234 additions and 80 deletions

View File

@@ -0,0 +1,20 @@
import DatabaseClientLive
import SharedModels
import Vapor
private let apiMiddleware: [any Middleware] = [
UserPasswordAuthenticator(),
UserTokenAuthenticator(),
UserSessionAuthenticator(),
User.guardMiddleware()
]
extension ApiRoute {
var middleware: [any Middleware]? {
switch self {
case .login: return nil
default:
return apiMiddleware
}
}
}

View File

@@ -1,3 +1,4 @@
import ApiControllerLive
import DatabaseClientLive
import Dependencies
import Vapor
@@ -8,14 +9,17 @@ import ViewControllerLive
struct DependenciesMiddleware: AsyncMiddleware {
private let values: DependencyValues.Continuation
private let apiController: ApiController
private let database: DatabaseClient
private let viewController: ViewController
init(
database: DatabaseClient,
apiController: ApiController = .liveValue,
viewController: ViewController = .liveValue
) {
self.values = withEscapedDependencies { $0 }
self.apiController = apiController
self.database = database
self.viewController = viewController
}
@@ -23,6 +27,7 @@ struct DependenciesMiddleware: AsyncMiddleware {
func respond(to request: Request, chainingTo next: any AsyncResponder) async throws -> Response {
try await values.yield {
try await withDependencies {
$0.apiController = apiController
$0.database = database
$0.dateFormatter = .liveValue
$0.viewController = viewController