From 7b21ee837dc67f9872c006755ab30d3e6369c250 Mon Sep 17 00:00:00 2001 From: bronku Date: Sun, 30 Mar 2025 19:47:31 +0200 Subject: [PATCH] Refactor: Add time range to order queries --- internal/server/get.go | 5 +++-- internal/store/order.go | 23 ++++++++++++++++------- internal/store/store_test.go | 4 ++-- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/internal/server/get.go b/internal/server/get.go index 3b47235..390a4c6 100644 --- a/internal/server/get.go +++ b/internal/server/get.go @@ -5,20 +5,21 @@ import ( "net/http" "strconv" "strings" + "time" "github.com/Bronku/iroon/internal/models" ) func (h *Server) orders(r *http.Request) (any, int, error) { //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 } func (h *Server) ordersSearch(r *http.Request) (any, int, error) { q := r.URL.Query().Get("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 } diff --git a/internal/store/order.go b/internal/store/order.go index 042a388..d4c4c37 100644 --- a/internal/store/order.go +++ b/internal/store/order.go @@ -48,6 +48,7 @@ func (s *Store) getOrdersFromQuery(query string, args ...any) ([]models.Order, e var out []models.Order rows, err := s.db.Query(query, args...) if err != nil { + fmt.Println("gofq", err) return out, err } defer rows.Close() @@ -76,17 +77,25 @@ func (s *Store) GetOrder(id int) (models.Order, error) { 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 == "" { - return s.GetTopOrders() + return s.GetTopOrders(from, to) } - query := "select * from order_fts(?) order by rank;" - return s.getOrdersFromQuery(query, filter) + start := from.Format("2006-01-02") + " 00:00" + 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) { - start := time.Now().Format("2006-01-02") + " 00:00" - end := time.Now().Format("2006-01-02") + " 99:99" +func (s *Store) GetTopOrders(from, to time.Time) ([]models.Order, error) { + start := from.Format("2006-01-02") + " 00:00" + 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 <= ? ;" return s.getOrdersFromQuery(query, start, end) } diff --git a/internal/store/store_test.go b/internal/store/store_test.go index 5813def..b36100a 100644 --- a/internal/store/store_test.go +++ b/internal/store/store_test.go @@ -19,7 +19,7 @@ func TestStore(t *testing.T) { if len(cakes) != 0 { 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 { t.Errorf("Error getting orders: %v", err) } @@ -170,7 +170,7 @@ func TestStore(t *testing.T) { } // get orders - orders, err = s.GetTopOrders() + orders, err = s.GetTopOrders(time.Time{}, time.Time{}) if err != nil { t.Fatalf("Failed to get all orders after creation: %v", err) }