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 }