package postgres import ( "database/sql" "log" "github.com/dustinpianalto/quartermaster" ) type groupService struct { db *sql.DB } func (s groupService) Group(id int) (*quartermaster.Group, error) { var g quartermaster.Group queryString := "SELECT id, name, description FROM groups WHERE id = $1" row := s.db.QueryRow(queryString, id) err := row.Scan(&g.ID, &g.Name, &g.Description) if err != nil { return nil, err } return &g, nil } func (s groupService) AddGroup(g *quartermaster.Group) (*quartermaster.Group, error) { queryString := "INSERT INTO groups (name, description) VALUES ($1, $2) RETURNING id" err := s.db.QueryRow(queryString, g.Name, g.Description).Scan(&g.ID) return g, err } func (s groupService) UpdateGroup(g *quartermaster.Group) error { queryString := "UPDATE groups SET name = $2, description = $3 WHERE id = $1" _, err := s.db.Exec(queryString, g.ID, g.Name, g.Description) return err } func (s groupService) DeleteGroup(g *quartermaster.Group) error { queryString := "DELETE FROM groups WHERE id = $1" _, err := s.db.Exec(queryString, g.ID) return err } func (s groupService) GetItems(g *quartermaster.Group) ([]*quartermaster.Item, error) { var items []*quartermaster.Item queryString := "SELECT item_id FROM x_items_groups WHERE group_id = $1" rows, err := s.db.Query(queryString, g.ID) if err != nil { return nil, err } for rows.Next() { var id int err = rows.Scan(&id) if err != nil { log.Println(err) continue } item, err := ItemService.Item(id) if err != nil { log.Println(err) continue } items = append(items, item) } return items, nil }