pokedex-go/pokemon/pokemon.go

58 lines
906 B
Go

package pokemon
import "pokedex/pb"
type move struct {
Name string
Url string
PokemonID uint // implicit; see https://gorm.io/docs/has_many.html
}
func (m move) ToPb() *pb.Move {
return &pb.Move{
Name: m.Name,
Url: m.Url,
}
}
type pokemon struct {
Id int
Name string
Height int
Weight int
Moves []move
}
func ToPb(p []pokemon) *pb.Pokemons {
pbs := make([]*pb.Pokemon, len(p))
for i, m := range p {
pbs[i] = m.ToPb()
}
return &pb.Pokemons{
Entries: pbs,
}
}
func (p pokemon) ToPbWrapped() *pb.Pokemons {
pbs := make([]*pb.Pokemon, 1)
pbs = append(pbs, p.ToPb())
return &pb.Pokemons{
Entries: pbs,
}
}
func (p pokemon) ToPb() *pb.Pokemon {
moves := make([]*pb.Move, len(p.Moves))
for i, m := range p.Moves {
moves[i] = m.ToPb()
}
return &pb.Pokemon{
Name: p.Name,
Height: int32(p.Height),
Weight: int32(p.Weight),
Moves: moves,
}
}