Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 

45 řádky
1.4 KiB

  1. import Fluent
  2. import Vapor
  3. struct cntrlCategory: RouteCollection {
  4. func boot(routes: RoutesBuilder) throws {
  5. let rts = routes.grouped("categories")
  6. rts.get(use: index)
  7. rts.post(use: create)
  8. rts.put(use: update)
  9. rts.group(":id") { todo in
  10. rts.delete(use: delete)
  11. }
  12. }
  13. func index(req: Request) async throws -> [mdlCategory] {
  14. try await mdlCategory.query(on: req.db).all()
  15. }
  16. func create(req: Request) async throws -> mdlCategory {
  17. let obj = try req.content.decode(mdlCategory.self)
  18. try await obj.save(on: req.db)
  19. return obj
  20. }
  21. func update(req: Request) async throws -> mdlCategory{
  22. let obj = try req.content.decode(mdlCategory.self)
  23. let dbobj = try await mdlCategory.query(on: req.db).filter(\.$id == obj.id!).first()!
  24. dbobj.description = obj.description
  25. dbobj.name = obj.name
  26. dbobj.updatedate = Date()
  27. dbobj.isactive = obj.isactive
  28. dbobj.updateuserid = -1
  29. try await dbobj.update(on: req.db)
  30. return dbobj
  31. }
  32. func delete(req: Request) async throws -> HTTPStatus {
  33. guard let obj = try await mdlCategory.find(req.parameters.get("id"), on: req.db) else {
  34. throw Abort(.notFound)
  35. }
  36. try await obj.delete(on: req.db)
  37. return .noContent
  38. }
  39. }