user_handler.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package handlers
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "strconv"
  6. "git.familybaby.top/flight/csdn/database"
  7. "git.familybaby.top/flight/csdn/models"
  8. "github.com/gorilla/mux"
  9. )
  10. func CreateUser(w http.ResponseWriter, r *http.Request) {
  11. var User models.User
  12. err := json.NewDecoder(r.Body).Decode(&User)
  13. if err != nil {
  14. http.Error(w, err.Error(), http.StatusBadRequest)
  15. return
  16. }
  17. result := database.DB.Create(&User)
  18. if result.Error != nil {
  19. http.Error(w, result.Error.Error(), http.StatusInternalServerError)
  20. return
  21. }
  22. w.Header().Set("Content-Type", "application/json")
  23. w.WriteHeader(http.StatusCreated)
  24. json.NewEncoder(w).Encode(User)
  25. }
  26. func GetUsers(w http.ResponseWriter, r *http.Request) {
  27. var Users []models.User
  28. result := database.DB.Find(&Users)
  29. if result.Error != nil {
  30. http.Error(w, result.Error.Error(), http.StatusInternalServerError)
  31. return
  32. }
  33. w.Header().Set("Content-Type", "application/json")
  34. json.NewEncoder(w).Encode(Users)
  35. }
  36. func GetUser(w http.ResponseWriter, r *http.Request) {
  37. params := mux.Vars(r)
  38. id, err := strconv.Atoi(params["id"])
  39. if err != nil {
  40. http.Error(w, "Invalid ID", http.StatusBadRequest)
  41. return
  42. }
  43. var User models.User
  44. result := database.DB.First(&User, id)
  45. if result.Error != nil {
  46. http.Error(w, result.Error.Error(), http.StatusNotFound)
  47. return
  48. }
  49. w.Header().Set("Content-Type", "application/json")
  50. json.NewEncoder(w).Encode(User)
  51. }
  52. func UpdateUser(w http.ResponseWriter, r *http.Request) {
  53. params := mux.Vars(r)
  54. id, err := strconv.Atoi(params["id"])
  55. if err != nil {
  56. http.Error(w, "Invalid ID", http.StatusBadRequest)
  57. return
  58. }
  59. var User models.User
  60. err = json.NewDecoder(r.Body).Decode(&User)
  61. if err != nil {
  62. http.Error(w, err.Error(), http.StatusBadRequest)
  63. return
  64. }
  65. result := database.DB.Model(&models.User{}).Where("id = ?", id).Updates(User)
  66. if result.Error != nil {
  67. http.Error(w, result.Error.Error(), http.StatusInternalServerError)
  68. return
  69. }
  70. w.Header().Set("Content-Type", "application/json")
  71. w.WriteHeader(http.StatusOK)
  72. json.NewEncoder(w).Encode(User)
  73. }
  74. func DeleteUser(w http.ResponseWriter, r *http.Request) {
  75. params := mux.Vars(r)
  76. id, err := strconv.Atoi(params["id"])
  77. if err != nil {
  78. http.Error(w, "Invalid ID", http.StatusBadRequest)
  79. return
  80. }
  81. result := database.DB.Delete(&models.User{}, id)
  82. if result.Error != nil {
  83. http.Error(w, result.Error.Error(), http.StatusInternalServerError)
  84. return
  85. }
  86. w.WriteHeader(http.StatusNoContent)
  87. }