feat: Implements common database interactions as dependencies.

This commit is contained in:
2025-01-10 22:37:59 -05:00
parent 6f206bbd82
commit 69351d0a0b
11 changed files with 325 additions and 207 deletions

View File

@@ -1,11 +1,13 @@
import Dependencies
import Fluent
import Vapor
struct PurchaseOrderViewController: RouteCollection {
@Dependency(\.purchaseOrders) var purchaseOrders
private let employeesApi = EmployeeApiController()
private let branches = VendorBranchDB()
private let api = ApiController()
private let api2 = PurchaseOrderDB()
func boot(routes: any RoutesBuilder) throws {
let pos = routes.protected.grouped("purchase-orders")
@@ -20,7 +22,9 @@ struct PurchaseOrderViewController: RouteCollection {
@Sendable
func index(req: Request) async throws -> View {
let params = try? req.query.decode(PurchaseOrderIndex.self)
let purchaseOrdersPage = try await api2.fetchPage(params?.page ?? 1, limit: params?.limit ?? 50, on: req.db)
let purchaseOrdersPage = try await purchaseOrders.fetchPage(
.init(page: params?.page ?? 1, per: params?.limit ?? 50)
)
let branches = try await self.branches.getBranches(req: req)
let employees = try await employeesApi.index(req: req)
req.logger.debug("Branches: \(branches)")
@@ -38,7 +42,7 @@ struct PurchaseOrderViewController: RouteCollection {
guard let id = req.parameters.get("id", as: PurchaseOrder.IDValue.self) else {
throw Abort(.badRequest, reason: "Id not supplied.")
}
let purchaseOrder = try await api2.get(id: id, on: req.db)
let purchaseOrder = try await purchaseOrders.get(id)
return try await req.view.render("purchaseOrders/detail", ["purchaseOrder": purchaseOrder])
}
@@ -47,7 +51,7 @@ struct PurchaseOrderViewController: RouteCollection {
try PurchaseOrder.FormCreate.validate(content: req)
let createdById = try req.auth.require(User.self).requireID()
let create = try req.content.decode(PurchaseOrder.FormCreate.self).toCreate()
let purchaseOrder = try await api2.create(create, createdById: createdById, on: req.db)
let purchaseOrder = try await purchaseOrders.create(create, createdById)
return try await req.view.render("purchaseOrders/table-row", purchaseOrder)
}
}