Get Users by Phone should return single user. Fixes #15
parent
3c3f26086d
commit
e81b91eebb
27
handlers.go
27
handlers.go
|
@ -59,7 +59,7 @@ func (h *Handler) CreateUser(w http.ResponseWriter, r *http.Request, _ httproute
|
||||||
json.NewEncoder(w).Encode(user)
|
json.NewEncoder(w).Encode(user)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *Handler) GetUsersByPhone(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
|
func (h *Handler) GetUserByPhone(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
|
||||||
// Parse
|
// Parse
|
||||||
phone, err := ParsePhone(r.FormValue("phone_number"))
|
phone, err := ParsePhone(r.FormValue("phone_number"))
|
||||||
|
|
||||||
|
@ -70,33 +70,22 @@ func (h *Handler) GetUsersByPhone(w http.ResponseWriter, r *http.Request, _ http
|
||||||
}
|
}
|
||||||
|
|
||||||
// Response object
|
// Response object
|
||||||
users := make([]User, 0)
|
user := User{}
|
||||||
|
|
||||||
// Select
|
// Select
|
||||||
rows, err := h.db.Query(`
|
err = h.db.QueryRow(`
|
||||||
SELECT id, username, bio, profile_pic, first_name, last_name FROM "user" WHERE phone_number = $1
|
SELECT id, username, bio, profile_pic, first_name, last_name, phone_number FROM "user" WHERE phone_number = $1
|
||||||
`, phone)
|
`, phone).Scan(&user.ID, &user.Username, &user.Bio, &user.ProfilePic, &user.FirstName, &user.LastName, &user.PhoneNumber)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
||||||
log.Print(err)
|
log.Print(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer rows.Close()
|
|
||||||
|
|
||||||
// Scan
|
|
||||||
for rows.Next() {
|
|
||||||
user := User{}
|
|
||||||
if err := rows.Scan(&user.ID, &user.Username, &user.Bio, &user.ProfilePic, &user.FirstName, &user.LastName); err != nil {
|
|
||||||
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
|
||||||
log.Print(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
users = append(users, user)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Respond
|
// Respond
|
||||||
w.Header().Set("Content-Type", "application/json")
|
w.Header().Set("Content-Type", "application/json")
|
||||||
json.NewEncoder(w).Encode(users)
|
json.NewEncoder(w).Encode(user)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *Handler) GetUser(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
|
func (h *Handler) GetUser(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
|
||||||
|
|
2
main.go
2
main.go
|
@ -40,7 +40,7 @@ func main() {
|
||||||
router := httprouter.New()
|
router := httprouter.New()
|
||||||
// Users
|
// Users
|
||||||
router.POST("/user", h.CreateUser)
|
router.POST("/user", h.CreateUser)
|
||||||
router.GET("/user", h.GetUsersByPhone)
|
router.GET("/user", h.GetUserByPhone)
|
||||||
router.GET("/user/id/:user", h.GetUser)
|
router.GET("/user/id/:user", h.GetUser)
|
||||||
router.GET("/user/username/:username", h.GetUserByUsername)
|
router.GET("/user/username/:username", h.GetUserByUsername)
|
||||||
router.PATCH("/user", h.UpdateUser)
|
router.PATCH("/user", h.UpdateUser)
|
||||||
|
|
Loading…
Reference in New Issue