pokedex-go/pokemon/repo.go

37 lines
726 B
Go

package pokemon
import (
"fmt"
"gorm.io/gorm"
)
type Repo struct {
db *gorm.DB
}
func NewRepo(db *gorm.DB) Repo {
return Repo{
db: db,
}
}
func (r Repo) Find(name string) (Pokemon, error) {
var pokemon Pokemon
result := r.db.Find(&pokemon, "name = ?", name) // .First() generates an error if none found
if result.Error != nil {
return Pokemon{}, fmt.Errorf("Unable to retrive pokemon named %s: %w", name, result.Error)
}
return pokemon, nil
}
func (r Repo) FindAll() ([]Pokemon, error) {
var pokemons []Pokemon
result := r.db.Model(&Pokemon{}).Preload("Moves").Find(&pokemons)
if result.Error != nil {
return nil, fmt.Errorf("Unable to retrive pokemons: %w", result.Error)
}
return pokemons, nil
}