github.com/giovannyortegon/go@v0.0.0-20220115155912-8890063f5bdd/src/APIRestORM/handlers/handlers.go (about) 1 package handlers 2 3 import ( 4 "encoding/json" 5 "gorom/db" 6 "gorom/models" 7 "net/http" 8 "strconv" 9 10 "github.com/gorilla/mux" 11 "gorm.io/gorm" 12 ) 13 14 func GetUsers(rw http.ResponseWriter, r *http.Request) { 15 users := models.Users{} 16 17 db.DataBase.Find(&users) 18 SendData(rw, users, http.StatusOK) 19 } 20 21 func GetUser(rw http.ResponseWriter, r *http.Request) { 22 if user, err := getUserById(r); err != nil { 23 sendError(rw, http.StatusNotFound) 24 } else { 25 SendData(rw, user, http.StatusOK) 26 } 27 } 28 29 func getUserById(r *http.Request) (models.User, *gorm.DB) { 30 // obtener id 31 vars := mux.Vars(r) 32 userId, _ := strconv.Atoi(vars["id"]) 33 user := models.User{} 34 if err := db.DataBase.First(&user, userId); err.Error != nil { 35 return user, err 36 } else { 37 return user, nil 38 } 39 } 40 41 func CreateUser(rw http.ResponseWriter, r *http.Request) { 42 user := models.User{} 43 decoder := json.NewDecoder(r.Body) 44 45 if err := decoder.Decode(&user); err != nil { 46 sendError(rw, http.StatusUnprocessableEntity) 47 } else { 48 db.DataBase.Save(&user) 49 SendData(rw, user, http.StatusCreated) 50 } 51 } 52 53 func UpdateUser(rw http.ResponseWriter, r *http.Request) { 54 var userId int64 55 56 if BeforeIdUser, err := getUserById(r); err != nil { 57 sendError(rw, http.StatusNotFound) 58 } else { 59 userId = BeforeIdUser.Id 60 61 user := models.User{} 62 decoder := json.NewDecoder(r.Body) 63 64 if err := decoder.Decode(&user); err != nil { 65 sendError(rw, http.StatusUnprocessableEntity) 66 } else { 67 user.Id = userId 68 db.DataBase.Save(&user) 69 SendData(rw, user, http.StatusOK) 70 } 71 } 72 } 73 74 func DeleteUser(rw http.ResponseWriter, r *http.Request) { 75 if user, err := getUserById(r); err != nil { 76 sendError(rw, http.StatusNotFound) 77 } else { 78 db.DataBase.Delete(&user) 79 SendData(rw, user, http.StatusOK) 80 } 81 }