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:
@@ -5,8 +5,12 @@ import SharedModels
|
||||
|
||||
extension ViewController: DependencyKey {
|
||||
public static var liveValue: ViewController {
|
||||
.init(view: { route, isHtmxRequest, authenticate in
|
||||
try await route.view(isHtmxRequest: isHtmxRequest, authenticate: authenticate)
|
||||
.init(view: { request in
|
||||
try await request.route.view(
|
||||
isHtmxRequest: request.isHtmxRequest,
|
||||
logger: request.logger,
|
||||
authenticate: request.authenticate
|
||||
)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,8 +15,8 @@ extension HTMLAttribute.hx {
|
||||
put(SharedModels.ViewRoute.router.path(for: route))
|
||||
}
|
||||
|
||||
static func delete(route: SharedModels.ViewRoute) -> HTMLAttribute {
|
||||
delete(SharedModels.ViewRoute.router.path(for: route))
|
||||
static func delete(route: SharedModels.ApiRoute) -> HTMLAttribute {
|
||||
delete(SharedModels.ApiRoute.router.path(for: route))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user