package handlers import ( "encoding/json" "net/http" "strconv" "git.familybaby.top/flight/csdn/database" "git.familybaby.top/flight/csdn/models" "github.com/gorilla/mux" ) func CreateUser(w http.ResponseWriter, r *http.Request) { var User models.User err := json.NewDecoder(r.Body).Decode(&User) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } result := database.DB.Create(&User) if result.Error != nil { http.Error(w, result.Error.Error(), http.StatusInternalServerError) return } w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusCreated) json.NewEncoder(w).Encode(User) } func GetUsers(w http.ResponseWriter, r *http.Request) { var Users []models.User result := database.DB.Find(&Users) if result.Error != nil { http.Error(w, result.Error.Error(), http.StatusInternalServerError) return } w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(Users) } func GetUser(w http.ResponseWriter, r *http.Request) { params := mux.Vars(r) id, err := strconv.Atoi(params["id"]) if err != nil { http.Error(w, "Invalid ID", http.StatusBadRequest) return } var User models.User result := database.DB.First(&User, id) if result.Error != nil { http.Error(w, result.Error.Error(), http.StatusNotFound) return } w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(User) } func UpdateUser(w http.ResponseWriter, r *http.Request) { params := mux.Vars(r) id, err := strconv.Atoi(params["id"]) if err != nil { http.Error(w, "Invalid ID", http.StatusBadRequest) return } var User models.User err = json.NewDecoder(r.Body).Decode(&User) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } result := database.DB.Model(&models.User{}).Where("id = ?", id).Updates(User) if result.Error != nil { http.Error(w, result.Error.Error(), http.StatusInternalServerError) return } w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusOK) json.NewEncoder(w).Encode(User) } func DeleteUser(w http.ResponseWriter, r *http.Request) { params := mux.Vars(r) id, err := strconv.Atoi(params["id"]) if err != nil { http.Error(w, "Invalid ID", http.StatusBadRequest) return } result := database.DB.Delete(&models.User{}, id) if result.Error != nil { http.Error(w, result.Error.Error(), http.StatusInternalServerError) return } w.WriteHeader(http.StatusNoContent) }