Refactor: Add time range to order queries

This commit is contained in:
bronku 2025-03-30 19:47:31 +02:00
parent 4e55e880b4
commit 7b21ee837d
3 changed files with 21 additions and 11 deletions

View file

@ -5,20 +5,21 @@ import (
"net/http" "net/http"
"strconv" "strconv"
"strings" "strings"
"time"
"github.com/Bronku/iroon/internal/models" "github.com/Bronku/iroon/internal/models"
) )
func (h *Server) orders(r *http.Request) (any, int, error) { func (h *Server) orders(r *http.Request) (any, int, error) {
//r.URL.Query().Get() //r.URL.Query().Get()
data, err := h.s.GetTopOrders() data, err := h.s.GetTopOrders(time.Now(), time.Now().Add(time.Hour*24))
return data, http.StatusOK, err return data, http.StatusOK, err
} }
func (h *Server) ordersSearch(r *http.Request) (any, int, error) { func (h *Server) ordersSearch(r *http.Request) (any, int, error) {
q := r.URL.Query().Get("q") q := r.URL.Query().Get("q")
fmt.Println(q) fmt.Println(q)
data, err := h.s.GetFilteredOrder(q) data, err := h.s.GetFilteredOrder(q, time.Time{}, time.Time{})
return data, http.StatusOK, err return data, http.StatusOK, err
} }

View file

@ -48,6 +48,7 @@ func (s *Store) getOrdersFromQuery(query string, args ...any) ([]models.Order, e
var out []models.Order var out []models.Order
rows, err := s.db.Query(query, args...) rows, err := s.db.Query(query, args...)
if err != nil { if err != nil {
fmt.Println("gofq", err)
return out, err return out, err
} }
defer rows.Close() defer rows.Close()
@ -76,17 +77,25 @@ func (s *Store) GetOrder(id int) (models.Order, error) {
return out[0], nil return out[0], nil
} }
func (s *Store) GetFilteredOrder(filter string) ([]models.Order, error) { func (s *Store) GetFilteredOrder(filter string, from, to time.Time) ([]models.Order, error) {
if filter == "" { if filter == "" {
return s.GetTopOrders() return s.GetTopOrders(from, to)
} }
query := "select * from order_fts(?) order by rank;" start := from.Format("2006-01-02") + " 00:00"
return s.getOrdersFromQuery(query, filter) end := to.Format("2006-01-02") + " 99:99"
if to.IsZero() {
end = "9999-99-99 99:99"
}
query := "select id, name, surname, phone, location, order_date, delivery_date, status, paid from order_fts(?) where delivery_date >= ? and delivery_date <= ? order by rank;"
return s.getOrdersFromQuery(query, filter, start, end)
} }
func (s *Store) GetTopOrders() ([]models.Order, error) { func (s *Store) GetTopOrders(from, to time.Time) ([]models.Order, error) {
start := time.Now().Format("2006-01-02") + " 00:00" start := from.Format("2006-01-02") + " 00:00"
end := time.Now().Format("2006-01-02") + " 99:99" end := to.Format("2006-01-02") + " 99:99"
if to.IsZero() {
end = "9999-99-99 99:99"
}
query := "select * from customer_order where status != 'done' and delivery_date >= ? and delivery_date <= ? ;" query := "select * from customer_order where status != 'done' and delivery_date >= ? and delivery_date <= ? ;"
return s.getOrdersFromQuery(query, start, end) return s.getOrdersFromQuery(query, start, end)
} }

View file

@ -19,7 +19,7 @@ func TestStore(t *testing.T) {
if len(cakes) != 0 { if len(cakes) != 0 {
t.Errorf("Expected empty cakes list, got: %v", cakes) t.Errorf("Expected empty cakes list, got: %v", cakes)
} }
orders, err := s.GetTopOrders() orders, err := s.GetTopOrders(time.Now(), time.Now().Add(time.Hour*24))
if err != nil { if err != nil {
t.Errorf("Error getting orders: %v", err) t.Errorf("Error getting orders: %v", err)
} }
@ -170,7 +170,7 @@ func TestStore(t *testing.T) {
} }
// get orders // get orders
orders, err = s.GetTopOrders() orders, err = s.GetTopOrders(time.Time{}, time.Time{})
if err != nil { if err != nil {
t.Fatalf("Failed to get all orders after creation: %v", err) t.Fatalf("Failed to get all orders after creation: %v", err)
} }