No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 

61 líneas
1.5 KiB

  1. //
  2. // File.swift
  3. //
  4. //
  5. // Created by Michiel Carman on 4/1/24.
  6. //
  7. import Fluent
  8. import Vapor
  9. import Crypto
  10. struct cntrlUser: RouteCollection {
  11. func boot(routes: RoutesBuilder) throws {
  12. let rts = routes.grouped("users")
  13. rts.get(use: index)
  14. rts.get("login", ":x", use: login)
  15. rts.get(":x", use: read)
  16. rts.post(use: create)
  17. rts.group(":x") { todo in
  18. rts.delete(use: delete)
  19. }
  20. }
  21. func api(req: Request) async throws -> String{
  22. return Environment.get("API_KEY")!
  23. }
  24. func login(req: Request) async throws -> mdlUser{
  25. return try await mdlUser.ObjQuery(req: req).first()!
  26. }
  27. func index(req: Request) async throws -> [mdlUser] {
  28. //try await mdlUser.query(on: req.db).with(\.$roles).all()
  29. return try await mdlUser.ObjQuery(req: req).all()
  30. }
  31. func read(req:Request) async throws -> mdlUser{
  32. return try await mdlUser.ObjQuery(req: req).first()!
  33. }
  34. func create(req: Request) async throws -> mdlUser {
  35. let obj = try req.content.decode(mdlUser.self)
  36. if(obj.id != nil){
  37. obj._$idExists = true
  38. }
  39. try await obj.save(on: req.db)
  40. return obj
  41. }
  42. func delete(req: Request) async throws -> HTTPStatus {
  43. guard let obj = try await mdlUser.find(req.parameters.get("x"), on: req.db) else {
  44. throw Abort(.notFound)
  45. }
  46. try await obj.delete(on: req.db)
  47. return .noContent
  48. }
  49. }