Refactor order retrieval logic
This commit is contained in:
parent
2588f2c54e
commit
a30a2fdab3
1 changed files with 30 additions and 42 deletions
|
|
@ -44,61 +44,49 @@ func (s *Store) parseOrderRow(row *sql.Rows) (models.Order, error) {
|
||||||
return out, nil
|
return out, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Store) GetOrder(id int) (models.Order, error) {
|
func (s *Store) getOrdersFromQuery(query string, args ...any) ([]models.Order, error) {
|
||||||
var out models.Order
|
var out []models.Order
|
||||||
row, err := s.db.Query("select id, name, surname, phone, location, order_date, delivery_date, status, paid from customer_order where id = ?;", id)
|
rows, err := s.db.Query(query, args...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return out, err
|
return out, err
|
||||||
}
|
}
|
||||||
defer row.Close()
|
defer rows.Close()
|
||||||
row.Next()
|
|
||||||
return s.parseOrderRow(row)
|
for rows.Next() {
|
||||||
|
order, err := s.parseOrderRow(rows)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
out = append(out, order)
|
||||||
|
}
|
||||||
|
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Store) GetOrder(id int) (models.Order, error) {
|
||||||
|
query := "select * from customer_order where id = ?"
|
||||||
|
out, err := s.getOrdersFromQuery(query, id)
|
||||||
|
if err != nil {
|
||||||
|
return models.Order{}, err
|
||||||
|
}
|
||||||
|
if len(out) < 1 {
|
||||||
|
return models.Order{}, errors.New("no output order")
|
||||||
|
}
|
||||||
|
return out[0], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Store) GetFilteredOrder(filter string) ([]models.Order, error) {
|
func (s *Store) GetFilteredOrder(filter string) ([]models.Order, error) {
|
||||||
if filter == "" {
|
if filter == "" {
|
||||||
return s.GetTopOrders()
|
return s.GetTopOrders()
|
||||||
}
|
}
|
||||||
var out []models.Order
|
|
||||||
query := "select * from order_fts(?) order by rank;"
|
query := "select * from order_fts(?) order by rank;"
|
||||||
rows, err := s.db.Query(query, filter)
|
return s.getOrdersFromQuery(query, filter)
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return out, err
|
|
||||||
}
|
|
||||||
defer rows.Close()
|
|
||||||
|
|
||||||
for rows.Next() {
|
|
||||||
fmt.Println("ok")
|
|
||||||
order, err := s.parseOrderRow(rows)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
out = append(out, order)
|
|
||||||
}
|
|
||||||
|
|
||||||
return out, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Store) GetTopOrders() ([]models.Order, error) {
|
func (s *Store) GetTopOrders() ([]models.Order, error) {
|
||||||
var out []models.Order
|
query := "select * from customer_order;"
|
||||||
rows, err := s.db.Query("select * from customer_order;")
|
return s.getOrdersFromQuery(query)
|
||||||
if err != nil {
|
|
||||||
return out, err
|
|
||||||
}
|
|
||||||
defer rows.Close()
|
|
||||||
|
|
||||||
for rows.Next() {
|
|
||||||
order, err := s.parseOrderRow(rows)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
out = append(out, order)
|
|
||||||
}
|
|
||||||
|
|
||||||
return out, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Store) SaveOrder(newOrder models.Order) (int, error) {
|
func (s *Store) SaveOrder(newOrder models.Order) (int, error) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue