Files
hamster-tycoon/storage/dao/postgresql/database_postgresql_cages.go
2021-08-24 00:11:00 +02:00

73 lines
1.4 KiB
Go
Executable File

package postgresql
import (
"database/sql"
"hamster-tycoon/storage/dao"
"hamster-tycoon/storage/model"
"github.com/lib/pq"
)
func (db *DatabasePostgreSQL) GetAllCages() ([]*model.Cage, error) {
q := `
SELECT c.id, created_at, updated_at
FROM public.Cage c
`
rows, err := db.session.Query(q)
if err != nil {
return nil, err
}
defer rows.Close()
cages := make([]*model.Cage, 0)
for rows.Next() {
cage := model.Cage{}
err := rows.Scan(&cage.ID, &cage.CreatedAt, &cage.UpdatedAt)
if err != nil {
return nil, err
}
cages = append(cages, &cage)
}
return cages, nil
}
func (db *DatabasePostgreSQL) GetCageByID(cageID string) (*model.Cage, error) {
q := `
SELECT c.id, created_at, updated_at
FROM public.Cage c
WHERE c.id = $2
`
row := db.session.QueryRow(q, cageID)
cage := model.Cage{}
err := row.Scan(&cage.ID, &cage.CreatedAt, &cage.UpdatedAt)
if errPq, ok := err.(*pq.Error); ok {
return nil, handlePgError(errPq)
}
if err == sql.ErrNoRows {
return nil, dao.NewDAOError(dao.ErrTypeNotFound, err)
}
return &cage, err
}
func (db *DatabasePostgreSQL) CreateCage(cage *model.Cage) error {
return nil
}
func (db *DatabasePostgreSQL) DeleteCage(id string) error {
q := `
DELETE FROM public.Cage
WHERE id = $1
`
_, err := db.session.Exec(q, id)
if errPq, ok := err.(*pq.Error); ok {
return handlePgError(errPq)
}
return err
}
func (db *DatabasePostgreSQL) UpdateCage(cage *model.Cage) error {
return nil
}