From e2042556919f70ef843696786671fdc7c4ef2397 Mon Sep 17 00:00:00 2001 From: bronku Date: Mon, 31 Mar 2025 21:09:38 +0200 Subject: [PATCH] fixed tests --- internal/server/get.go | 2 +- internal/store/order.go | 59 ++++++++++++++++++++++++------------ internal/store/store_test.go | 4 +-- 3 files changed, 43 insertions(+), 22 deletions(-) diff --git a/internal/server/get.go b/internal/server/get.go index 17dda3a..c3300c0 100644 --- a/internal/server/get.go +++ b/internal/server/get.go @@ -12,7 +12,7 @@ import ( func (h *Server) orders(_ *http.Request) (any, int, error) { //r.URL.Query().Get() - orders, err := h.s.GetTopOrders(time.Now(), time.Now().Add(time.Hour*24)) + orders, err := h.s.GetFilteredOrder("", time.Now(), time.Now().Add(time.Hour*24)) data := struct { Today string Orders []models.Order diff --git a/internal/store/order.go b/internal/store/order.go index 6484f7c..e021be2 100644 --- a/internal/store/order.go +++ b/internal/store/order.go @@ -4,7 +4,6 @@ import ( "database/sql" "errors" "fmt" - "strconv" "time" "github.com/Bronku/iroon/internal/models" @@ -79,28 +78,19 @@ func (s *Store) GetOrder(id int) (models.Order, error) { } func (s *Store) GetFilteredOrder(filter string, from, to time.Time) ([]models.Order, error) { - if filter == "" { - return s.GetTopOrders(from, to) - } 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" } + if filter == "" { + query := "select * from customer_order where status != 'done' and delivery_date >= ? and delivery_date <= ? ;" + return s.getOrdersFromQuery(query, start, end) + } 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(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) -} - func (s *Store) UpdateOrderContents(tx *sql.Tx, newOrder models.Order) error { query := "delete from ordered_cake where customer_order = ?;" _, err := tx.Exec(query, newOrder.ID) @@ -118,12 +108,43 @@ func (s *Store) UpdateOrderContents(tx *sql.Tx, newOrder models.Order) error { return nil } -func (s *Store) SaveOrder(newOrder models.Order) (int, error) { - query := "insert into customer_order(name, surname, phone, location, order_date, delivery_date, status, paid) values (?, ?, ?, ?, ?, ?, ?, ?);" - if newOrder.ID != 0 { - query = "update customer_order set name = ?, surname = ?, phone = ?, location = ?, order_date = ?, delivery_date = ?, status = ?, paid = ? where id = " - query += strconv.Itoa(newOrder.ID) + " ;" +func (s *Store) UpdateOrder(newOrder models.Order) error { + _, err := s.GetOrder(newOrder.ID) + if err != nil { + return err } + query := "update customer_order set name = ?, surname = ?, phone = ?, location = ?, order_date = ?, delivery_date = ?, status = ?, paid = ? where id = ?;" + + accepted := newOrder.Accepted.Format("2006-01-02 15:04") + date := newOrder.Date.Format("2006-01-02 15:04") + + tx, err := s.db.Begin() + if err != nil { + return err + } + + _, err = tx.Exec(query, newOrder.Name, newOrder.Surname, newOrder.Phone, newOrder.Location, accepted, date, newOrder.Status, newOrder.Paid, newOrder.ID) + if err != nil { + _ = tx.Rollback() + return err + } + + err = s.UpdateOrderContents(tx, newOrder) + if err != nil { + _ = tx.Rollback() + return err + } + + err = tx.Commit() + return nil +} + +func (s *Store) SaveOrder(newOrder models.Order) (int, error) { + if newOrder.ID != 0 { + return newOrder.ID, s.UpdateOrder(newOrder) + } + query := "insert into customer_order(name, surname, phone, location, order_date, delivery_date, status, paid) values (?, ?, ?, ?, ?, ?, ?, ?);" + tx, err := s.db.Begin() if err != nil { return 0, err diff --git a/internal/store/store_test.go b/internal/store/store_test.go index a3a6512..1b1f962 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(time.Now(), time.Now().Add(time.Hour*24)) + orders, err := s.GetFilteredOrder("", 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(time.Time{}, time.Time{}) + orders, err = s.GetFilteredOrder("", time.Time{}, time.Time{}) if err != nil { t.Fatalf("Failed to get all orders after creation: %v", err) }