import DatabaseClient import Dependencies import SharedModels import Vapor import VaporElementary struct UtilsViewController: RouteCollection { @Dependency(\.database) var database func boot(routes: any RoutesBuilder) throws { let route = routes.protected route.group("select") { $0.get("employee", use: employeeSelect(req:)) } } @Sendable func employeeSelect(req: Request) async throws -> HTMLResponse { let context = try req.query.decode(EmployeeSelectContext.self) let employees = try await database.employees.fetchAll() return await req.render { context.toHTML(employees: employees) } } } private struct EmployeeSelectContext: Content { let context: EmployeeSelect.Context func toHTML(employees: [Employee]) -> EmployeeSelect { switch context { case .form: return .purchaseOrderForm(employees: employees) case .search: return .purchaseOrderSearch(employees: employees) } } }