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  }