pokedex-go/pokemon/repo.go

37 lines
717 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 poke pokemon
result := r.db.Find(&poke, "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 poke, 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
}