58 lines
906 B
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,
|
|
}
|
|
}
|