73 lines
1.4 KiB
Go
Executable File
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
|
|
}
|