github.com/giovannyortegon/go@v0.0.0-20220115155912-8890063f5bdd/src/APIRest/handlers/handlers.go (about)

     1  package handlers
     2  
     3  import (
     4  	"apirest/models"
     5  	"encoding/json"
     6  	"fmt"
     7  	"net/http"
     8  	"strconv"
     9  
    10  	"github.com/gorilla/mux"
    11  )
    12  
    13  func GetUsers(rw http.ResponseWriter, r *http.Request) {
    14  	// fmt.Fprintln(rw, "Listar todos los Usuarios")
    15  	/*rw.Header().Set("Content-Type", "application/json")
    16  	// rw.Header().Set("Content-Type", "application/xml")
    17  
    18  	db.Connect_DB()
    19  	user, _ := models.ListUsers()
    20  	db.Close_DB()
    21  	output, _ := json.Marshal(user)
    22  	// output, _ := xml.Marshal(user)
    23  	// output, _ := yaml.Marshal(user)
    24  	fmt.Fprintln(rw, string(output))*/
    25  
    26  	if users, err := models.ListUsers(); err != nil {
    27  		models.SendNotFound(rw)
    28  	} else {
    29  		models.SendData(rw, users)
    30  	}
    31  }
    32  func GetUser(rw http.ResponseWriter, r *http.Request) {
    33  	// fmt.Fprintln(rw, "Obtiene un Usuario")
    34  	/*rw.Header().Set("Content-Type", "application/json")
    35  
    36  	// obtener id
    37  	vars := mux.Vars(r)
    38  
    39  	userId, _ := strconv.Atoi(vars["id"])
    40  
    41  	db.Connect_DB()
    42  	user, _ := models.GetUser(userId)
    43  	db.Close_DB()
    44  	output, _ := json.Marshal(user)
    45  	fmt.Fprintln(rw, string(output))*/
    46  	if user, err := getUserByRequest(r); err != nil {
    47  		models.SendNotFound(rw)
    48  	} else {
    49  		models.SendData(rw, user)
    50  	}
    51  
    52  }
    53  
    54  func CreateUser(rw http.ResponseWriter, r *http.Request) {
    55  	// fmt.Fprintln(rw, "Crea un Usuario")
    56  	// rw.Header().Set("Content-Type", "application/json")
    57  	user := models.User{}
    58  	decoder := json.NewDecoder(r.Body)
    59  
    60  	if err := decoder.Decode(&user); err != nil {
    61  		models.SendUnprocessableEntity(rw)
    62  	} else {
    63  		user.Save()
    64  		models.SendData(rw, user)
    65  	}
    66  	// obtener id
    67  	output, _ := json.Marshal(user)
    68  	fmt.Fprintln(rw, string(output))
    69  }
    70  func UpdateUser(rw http.ResponseWriter, r *http.Request) {
    71  	// rw.Header().Set("Content-Type", "application/json")
    72  	// fmt.Fprintln(rw, "Actuliza un Usuario")
    73  	// user := models.User{}
    74  	var userId int64
    75  
    76  	if user, err := getUserByRequest(r); err != nil {
    77  		models.SendNotFound(rw)
    78  	} else {
    79  		userId = user.Id
    80  	}
    81  
    82  	user := models.User{}
    83  	decoder := json.NewDecoder(r.Body)
    84  
    85  	if err := decoder.Decode(&user); err != nil {
    86  		models.SendUnprocessableEntity(rw)
    87  	} else {
    88  		user.Id = userId
    89  		user.Save()
    90  		models.SendData(rw, user)
    91  	}
    92  	/*
    93  		if err := decoder.Decode(&user); err != nil {
    94  			fmt.Fprintln(rw, http.StatusUnprocessableEntity)
    95  		} else {
    96  			db.Connect_DB()
    97  			user.Save()
    98  			db.Close_DB()
    99  		}
   100  		// obtener id
   101  		output, _ := json.Marshal(user)
   102  		fmt.Fprintln(rw, string(output))*/
   103  }
   104  func DeleteUser(rw http.ResponseWriter, r *http.Request) {
   105  	// fmt.Fprintln(rw, "Elimina un Usuario")
   106  	/*	rw.Header().Set("Content-Type", "application/json")
   107  
   108  		// obtener id
   109  		vars := mux.Vars(r)
   110  
   111  		userId, _ := strconv.Atoi(vars["id"])
   112  
   113  		db.Connect_DB()
   114  		user, _ := models.GetUser(userId)
   115  		user.Delete()
   116  		db.Close_DB()
   117  		output, _ := json.Marshal(user)
   118  		fmt.Fprintln(rw, string(output))*/
   119  	if user, err := getUserByRequest(r); err != nil {
   120  		models.SendNotFound(rw)
   121  	} else {
   122  		user.Delete()
   123  		models.SendData(rw, user)
   124  	}
   125  }
   126  
   127  func getUserByRequest(r *http.Request) (models.User, error) {
   128  	vars := mux.Vars(r)
   129  	userId, _ := strconv.Atoi(vars["id"])
   130  
   131  	if user, err := models.GetUser(userId); err != nil {
   132  		return *user, err
   133  	} else {
   134  		return *user, nil
   135  	}
   136  }