import CasePathsCore import DatabaseClientLive import Dependencies import Elementary import ElementaryHTMX import Fluent import SharedModels import Vapor import VaporElementary import VaporRouting func routes(_ app: Application) throws { app.mount(SiteRoute.router, use: siteHandler) app.get { _ in HTMLResponse { MainPage(displayNav: false, route: .purchaseOrders) { div(.class("container")) { h1 { "iT WORKS" } } } } } // // app.get("login") { req in // let context = try req.query.decode(LoginContext.self) // return await req.render { // MainPage(displayNav: false, route: .login) { // UserForm(context: .login(next: context.next)) // } // } // } // // app.post("login") { req in // @Dependency(\.database.users) var users // let loginForm = try req.content.decode(User.Login.self) // let token = try await users.login(loginForm) // let user = try await users.get(token.userID)! // req.session.authenticate(user) // let context = try req.query.decode(LoginContext.self) // // return await req.render { // MainPage(displayNav: true, route: .purchaseOrders) { // div( // .hx.get(context.next ?? "/purchase-orders"), // .hx.pushURL(true), // .hx.target("body"), // .hx.trigger(.event(.revealed)), // .hx.indicator(".hx-indicator") // ) { // Img.spinner().attributes(.class("hx-indicator")) // } // } // } // } } private struct LoginContext: Content { let next: String? } func siteHandler( request: Request, route: SiteRoute ) async throws -> any AsyncResponseEncodable { switch route { case let .api(route): return try await route.handle(request: request) case .health: return HTTPStatus.ok case let .view(route): return try await route.handle(request: request) } }