package pokemon

import (
	"fmt"
	"git.ssns.se/git/frozendragon/pokemon-go-trade/internal/db"
)

type Package struct {
	Db db.Interface
}

type Interface interface {
	GetAvailablePokemons() (*Pokemons, error)
}

type Pokemons struct {
	Pokemons []Pokemon `json:"pokemons"`
}

type Pokemon struct {
	ID  int    `json:"id"`
	Url string `json:"url"`
}

func (p *Package) GetAvailablePokemons() (*Pokemons, error) {
	dbPokemons, err := p.Db.GetPokemons()
	if err != nil {
		return nil, err
	}
	var pokemons Pokemons
	for _, pokemon := range dbPokemons {
		pokemons.Pokemons = append(pokemons.Pokemons, Pokemon{
			ID:  pokemon.ID,
			Url: fmt.Sprintf("image/%s", pokemon.ShinyImageName),
		})
	}
	return &pokemons, nil
}
