50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
package model
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
func (m *Model) GetItemById(id int64) (*Item, error) {
|
|
row := m.db.QueryRowx("SELECT * FROM items WHERE id = ?", id)
|
|
if row.Err() != nil {
|
|
return nil, fmt.Errorf("failed to query db: %v", row.Err())
|
|
}
|
|
|
|
item := new(Item)
|
|
if err := row.StructScan(item); err != nil {
|
|
return nil, fmt.Errorf("failed to struct scan item: %v", err)
|
|
}
|
|
|
|
return item, nil
|
|
}
|
|
|
|
func (m *Model) GetItems() ([]*Item, error) {
|
|
rows, err := m.db.Queryx("SELECT * FROM items")
|
|
if err != nil {
|
|
return nil, fmt.Errorf("couldn't query db: %v", err)
|
|
}
|
|
|
|
items := []*Item{}
|
|
for rows.Next() {
|
|
item := &Item{}
|
|
if err := rows.StructScan(&item); err != nil {
|
|
continue
|
|
}
|
|
items = append(items, item)
|
|
}
|
|
|
|
return items, nil
|
|
}
|
|
|
|
func (m *Model) UpdateRefreshedAt(itemId int64, refreshedAt time.Time) error {
|
|
if _, err := m.db.NamedExec("UPDATE items SET refreshed_at = :refreshed_at WHERE id = :item_id", map[string]any{
|
|
"refreshed_at": refreshedAt,
|
|
"item_id": itemId,
|
|
}); err != nil {
|
|
return fmt.Errorf("failed to update refreshed_at field: %v", err)
|
|
}
|
|
|
|
return nil
|
|
}
|