feat: Removes old tests, fixes authentication middleware not working, view routes updated to not have delete routes and uses api routes for delete methods.

This commit is contained in:
2025-01-24 10:55:59 -05:00
parent aa60f69758
commit 90c6058d56
37 changed files with 146 additions and 564 deletions

View File

@@ -1,22 +1,23 @@
import DatabaseClient
import Dependencies
import Elementary
import Logging
import SharedModels
import Vapor
public typealias AnySendableHTML = (any HTML & Sendable)
import ViewController
public extension SharedModels.ViewRoute {
func view(
isHtmxRequest: Bool,
logger: Logger,
authenticate: @escaping @Sendable (User) -> Void
) async throws -> AnySendableHTML? {
) async throws -> AnySendableHTML {
@Dependency(\.database.users) var users
switch self {
case .index:
// return request.redirect(to: Self.router.path(for: .purchaseOrder(.index)))
return nil
// case .index:
// // This get's redirected to purchase-orders route in the app / site handler.
// return nil
case let .employee(route):
return try await route.view(isHtmxRequest: isHtmxRequest)
@@ -31,7 +32,7 @@ public extension SharedModels.ViewRoute {
let token = try await users.login(.init(username: login.username, password: login.password))
let user = try await users.get(token.userID)!
authenticate(user)
// request.logger.info("Logged in next: \(login.next ?? "N/A")")
logger.info("Logged in next: \(login.next ?? "N/A")")
return MainPage.loggedIn(next: login.next)
}
@@ -65,7 +66,7 @@ extension SharedModels.ViewRoute.EmployeeRoute {
}
}
func view(isHtmxRequest: Bool) async throws -> AnySendableHTML? {
func view(isHtmxRequest: Bool) async throws -> AnySendableHTML {
@Dependency(\.database.employees) var employees
switch self {
@@ -83,17 +84,10 @@ extension SharedModels.ViewRoute.EmployeeRoute {
throw Abort(.badRequest, reason: "Employee id not found.")
}
return try await render(mainPage, isHtmxRequest, EmployeeForm(employee: employee))
// return try await request.render(mainPage: mainPage) {
// EmployeeForm(employee: employee)
// }
case let .create(employee):
return try await EmployeeTable.Row(employee: employees.create(employee))
case let .delete(id: id):
try await employees.delete(id)
return nil
case let .update(id: id, updates: updates):
return try await EmployeeTable.Row(employee: employees.update(id, updates))
}
@@ -115,7 +109,7 @@ extension SharedModels.ViewRoute.PurchaseOrderRoute {
}
}
func view(isHtmxRequest: Bool) async throws -> AnySendableHTML? {
func view(isHtmxRequest: Bool) async throws -> AnySendableHTML {
@Dependency(\.database.purchaseOrders) var purchaseOrders
switch self {
@@ -130,10 +124,6 @@ extension SharedModels.ViewRoute.PurchaseOrderRoute {
case let .create(purchaseOrder):
return try await PurchaseOrderTable.Row(purchaseOrder: purchaseOrders.create(purchaseOrder))
case let .delete(id: id):
try await purchaseOrders.delete(id)
return nil
case .index:
return try await mainPage(PurchaseOrderForm())
@@ -198,7 +188,7 @@ extension SharedModels.ViewRoute.UserRoute {
}
}
func view(isHtmxRequest: Bool) async throws -> AnySendableHTML? {
func view(isHtmxRequest: Bool) async throws -> AnySendableHTML {
@Dependency(\.database.users) var users
switch self {
@@ -208,10 +198,6 @@ extension SharedModels.ViewRoute.UserRoute {
case let .create(user):
return try await UserTable.Row(user: users.create(user))
case let .delete(id: id):
try await users.delete(id)
return nil
case .index:
return try await mainPage(UserDetail(user: nil))
@@ -240,16 +226,14 @@ extension SharedModels.ViewRoute.VendorRoute {
}
}
func view(isHtmxRequest: Bool) async throws -> AnySendableHTML? {
func view(isHtmxRequest: Bool) async throws -> AnySendableHTML {
@Dependency(\.database) var database
switch self {
case .form:
// html = VendorForm(.float(shouldShow: true))
return try await render(mainPage, isHtmxRequest, VendorForm(.float(shouldShow: true)))
case .index:
// return VendorForm()
return try await mainPage(VendorForm())
case let .create(vendor):
@@ -262,10 +246,6 @@ extension SharedModels.ViewRoute.VendorRoute {
}
}
case let .delete(id: id):
try await database.vendors.delete(id)
return nil
case let .get(id: id):
guard let vendor = try await database.vendors.get(id, .withBranches) else {
throw Abort(.badRequest, reason: "Vendor not found.")
@@ -282,7 +262,7 @@ extension SharedModels.ViewRoute.VendorRoute {
extension SharedModels.ViewRoute.VendorBranchRoute {
func view(isHtmxRequest: Bool) async throws -> AnySendableHTML? {
func view(isHtmxRequest: Bool) async throws -> AnySendableHTML {
@Dependency(\.database) var database
switch self {
@@ -300,10 +280,6 @@ extension SharedModels.ViewRoute.VendorBranchRoute {
case let .create(branch):
return try await VendorBranchList.Row(branch: database.vendorBranches.create(branch))
case let .delete(id: id):
try await database.vendorBranches.delete(id)
return nil
}
}
}