feat: Reorganizing views

This commit is contained in:
2025-01-08 18:10:26 -05:00
parent f5dbd7e121
commit e414afd95b
20 changed files with 55 additions and 61 deletions

View File

@@ -21,14 +21,14 @@ struct EmployeeViewController: RouteCollection {
@Sendable
func index(req: Request) async throws -> View {
return try await req.view.render("employees", EmployeesCTX(api: api, req: req))
return try await req.view.render("employees/index", EmployeesCTX(api: api, req: req))
}
@Sendable
func postEmployeeForm(req: Request) async throws -> View {
_ = try await api.createEmployee(req: req)
let employees = try await api.getSortedEmployees(req: req)
return try await req.view.render("employee-table", ["employees": employees])
return try await req.view.render("employees/table", ["employees": employees])
}
@Sendable
@@ -39,14 +39,14 @@ struct EmployeeViewController: RouteCollection {
employee.active.toggle()
try await employee.save(on: req.db)
let employees = try await api.getSortedEmployees(req: req)
return try await req.view.render("employee-table", ["employees": employees])
return try await req.view.render("employees/table", ["employees": employees])
}
@Sendable
func deleteEmployee(req: Request) async throws -> View {
_ = try await api.deleteEmployee(req: req)
let employees = try await api.getSortedEmployees(req: req)
return try await req.view.render("employee-table", ["employees": employees])
return try await req.view.render("employees/table", ["employees": employees])
}
@Sendable
@@ -54,18 +54,18 @@ struct EmployeeViewController: RouteCollection {
guard let employee = try await Employee.find(req.parameters.get("employeeID"), on: req.db) else {
throw Abort(.notFound)
}
return try await req.view.render("employee-form", EmployeeFormCTX(employee: employee.toDTO()))
return try await req.view.render("employees/form", EmployeeFormCTX(employee: employee.toDTO()))
}
@Sendable
func updateEmployee(req: Request) async throws -> View {
_ = try await api.updateEmployee(req: req)
return try await req.view.render("employees", EmployeesCTX(oob: true, api: api, req: req))
return try await req.view.render("employees/index", EmployeesCTX(oob: true, api: api, req: req))
}
@Sendable
func employeeForm(req: Request) async throws -> View {
try await req.view.render("employee-form", EmployeeFormCTX())
try await req.view.render("employees/form", EmployeeFormCTX())
}
}

View File

@@ -17,7 +17,7 @@ struct UserViewController: RouteCollection {
@Sendable
func index(req: Request) async throws -> View {
try await req.view.render(
"users",
"users/index",
UsersCTX(users: api.getSortedUsers(req: req))
)
}
@@ -25,13 +25,13 @@ struct UserViewController: RouteCollection {
@Sendable
func create(req: Request) async throws -> View {
_ = try await api.createUser(req: req)
return try await req.view.render("user-table", ["users": api.getSortedUsers(req: req)])
return try await req.view.render("users/table", ["users": api.getSortedUsers(req: req)])
}
@Sendable
func delete(req: Request) async throws -> View {
_ = try await api.deleteUser(req: req)
return try await req.view.render("user-table", ["users": api.getSortedUsers(req: req)])
return try await req.view.render("users/table", ["users": api.getSortedUsers(req: req)])
}
}

View File

@@ -17,13 +17,13 @@ struct VendorViewController: RouteCollection {
@Sendable
func index(req: Request) async throws -> View {
return try await req.view.render("vendors", makeCtx(req: req))
return try await req.view.render("vendors/index", makeCtx(req: req))
}
@Sendable
func create(req: Request) async throws -> View {
let ctx = try req.content.decode(CreateVendorCTX.self)
req.logger.info("CTX: \(ctx)")
req.logger.debug("CTX: \(ctx)")
let vendor = Vendor.Create(name: ctx.name).toModel()
try await vendor.save(on: req.db)
@@ -39,8 +39,7 @@ struct VendorViewController: RouteCollection {
}
}
// _ = try await api.createVendor(req: req)
return try await req.view.render("vendor-table", makeCtx(req: req))
return try await req.view.render("vendors/table", makeCtx(req: req))
}
@Sendable
@@ -51,7 +50,7 @@ struct VendorViewController: RouteCollection {
@Sendable
func update(req: Request) async throws -> View {
_ = try await api.updateVendor(req: req)
return try await req.view.render("vendor-table", makeCtx(req: req, oob: true))
return try await req.view.render("vendors/table", makeCtx(req: req, oob: true))
}
private func makeCtx(req: Request, vendor: Vendor? = nil, oob: Bool = false) async throws -> VendorsCTX {

View File

@@ -37,7 +37,7 @@ struct ViewController: RouteCollection {
}
@Sendable
func postLogin(req: Request) async throws -> View {
func postLogin(req: Request) async throws -> Response {
let content = try req.content.decode(UserForm.self)
guard let user = try await User.query(on: req.db)
.filter(\.$username == content.username)
@@ -62,18 +62,11 @@ struct ViewController: RouteCollection {
}
@Sendable
func home(req: Request) async throws -> View {
var route: HomeRoute?
if let loginParams = try? req.query.decode(LoginParameter.self),
let next = loginParams.next.split(separator: "/").last
{
route = HomeRoute(rawValue: String(next))
} else if let routeString = req.parameters.getCatchall().first {
route = HomeRoute(rawValue: routeString)
func home(req: Request) async throws -> Response {
if let loginParams = try? req.query.decode(LoginParameter.self) {
return req.redirect(to: loginParams.next)
}
return try await req.view.render("home", HomeCTX(route: route))
return try await req.view.render("home").encodeResponse(for: req)
}
@Sendable