Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 

81 righe
3.0 KiB

  1. //
  2. // cntrlWorkOrder.swift
  3. //
  4. //
  5. // Created by Michiel Carman on 4/5/2024.
  6. //
  7. import Fluent
  8. import Vapor
  9. import Crypto
  10. struct cntrlWorkOrder: RouteCollection {
  11. func boot(routes: RoutesBuilder) throws {
  12. let rts = routes.grouped("workorders")
  13. rts.get(use: index)
  14. rts.get(":x", use: read)
  15. rts.post(use: create)
  16. rts.delete(":x", use: delete)
  17. //Additional routs added here
  18. }
  19. func index(req: Request) async throws -> Response {
  20. //let obj = try await mdlWorkOrder.query(on: req.db).all()
  21. //let obj = try await mdlWorkOrder.ObjQuery(req: req).paginate(for: req)
  22. guard let obj = try? await mdlWorkOrder.ObjQuery(req: req).paginate(for: req) else {
  23. throw Abort(.badGateway, reason: "Something went wrong with this api.")
  24. }
  25. guard let response = try? await obj.encodeResponse(status: .ok, for: req) else{
  26. throw Abort(.noContent, reason: "Something went wrong decoding data. Array could not be shown.")
  27. }
  28. return response
  29. }
  30. func read(req:Request) async throws -> Response{
  31. guard let obj = try? await mdlWorkOrder.ObjQuery(req: req).first() else{
  32. throw Abort(.notFound, reason: "WorkOrder was not found.")
  33. }
  34. guard let response = try? await obj.encodeResponse(status: .ok, for: req) else {
  35. throw Abort(.noContent, reason: "Something went wrong decoding object.")
  36. }
  37. return response
  38. }
  39. func create(req: Request) async throws -> Response {
  40. guard let obj = try? req.content.decode(mdlWorkOrder.self) else {
  41. throw Abort(.notAcceptable, reason: "WorkOrder json not formatted correctly or is missing parents.")
  42. }
  43. var exists = false
  44. if(obj.id != nil){
  45. obj._$idExists = true
  46. exists = true
  47. }
  48. guard let _ = try? await obj.save(on: req.db) else{
  49. throw Abort(.conflict, reason: "Something conflicts in the database. WorkOrder cannot be saved.")
  50. }
  51. guard let response = try? await obj.encodeResponse(status: exists ? .accepted : .created, for: req) else{
  52. throw Abort(.noContent, reason: "Something went wrong decoding data. WorkOrder has been saved.")
  53. }
  54. return response
  55. }
  56. func delete(req: Request) async throws -> Response {
  57. guard let obj = try? await mdlWorkOrder.ObjQuery(req: req).first() else {
  58. throw Abort(.notFound, reason: "WorkOrder's ID was not supplied. WorkOrder will not be deleted")
  59. }
  60. guard let _ = try? await obj.delete(on: req.db) else{
  61. throw Abort(.conflict, reason: "There was a conflict deleting WorkOrder. Make sure it has not children.")
  62. }
  63. guard let response = try? await obj.encodeResponse(status: .ok, for: req) else{
  64. throw Abort(.noContent, reason: "Something went wrong decoding data. WorkOrder has been deleted.")
  65. }
  66. return response
  67. }
  68. }