pokedex-go/pokemon/handler.go

45 lines
994 B
Go

package pokemon
import (
"fmt"
"gorm.io/gorm"
"net/http"
"pokedex/rest"
)
// @Summary Find a specific pokemon by name
// @ID get-specific-pokemon
// @Produce json
// @Success 200 {object} pb.Pokemons
// @failure 500 {string} string "error"
// @Router /pokemon/{name} [get]
func HandleFindSingle(db *gorm.DB, rw http.ResponseWriter, req *http.Request) {
repo := NewRepo(db)
name := req.PathValue("name")
fmt.Println("Path " + name)
pk, err := repo.Find(name)
if err != nil {
http.Error(rw, err.Error(), http.StatusInternalServerError)
return
}
rest.ProtoJson(rw, pk.ToPbWrapped())
}
// @Summary get all pokemon
// @ID get-all-pokemon
// @Produce json
// @Success 200 {object} pb.Pokemons
// @Router /pokemon [get]
func HandleFindAll(db *gorm.DB, rw http.ResponseWriter, req *http.Request) {
repo := NewRepo(db)
pokemons, err := repo.FindAll()
if err != nil {
http.Error(rw, err.Error(), http.StatusInternalServerError)
return
}
rest.ProtoJson(rw, ToPb(pokemons))
}