feat: Working on route and id helpers for views.

This commit is contained in:
2025-01-17 23:50:04 -05:00
parent 531a385dba
commit d8328314ed
21 changed files with 585 additions and 255 deletions

View File

@@ -29,31 +29,24 @@ public extension DatabaseClient.PurchaseOrders {
throw NotFoundError()
}
try await model.delete(on: database)
} search: { search in
} search: { search, page in
let query = PurchaseOrderModel.allQuery(on: database)
switch search {
case let .employee(employee):
guard let employee = try await EmployeeModel.query(on: database).group(.or, { group in
group.filter(\.$firstName ~~ employee).filter(\.$lastName ~~ employee)
}).first()
else { return Page<PurchaseOrder>.empty }
return try await query.filter(\.$createdFor.$id == employee.id!)
.paginate(.init(page: 1, per: 25))
case let .employee(id):
return try await query.filter(\.$createdFor.$id == id)
.paginate(page)
.map { try $0.toDTO() }
case let .customer(search):
return try await query.filter(\.$customer ~~ search)
.paginate(.init(page: 1, per: 25))
.paginate(page)
.map { try $0.toDTO() }
case let .vendor(search):
guard let vendor = try await VendorModel.query(on: database).filter(\.$name ~~ search).first() else {
return .empty
}
// TODO: how to search for this??
return .init(items: [], metadata: .init(page: 1, per: 1, total: 0))
case let .vendor(id):
return try await query.filter(\.$vendorBranch.$id == id)
.paginate(page)
.map { try $0.toDTO() }
}
}
}