diff --git a/foo.db b/foo.db index c5879be..bca1e75 100644 Binary files a/foo.db and b/foo.db differ diff --git a/internal/store/order.go b/internal/store/order.go index 3346ed2..af3f840 100644 --- a/internal/store/order.go +++ b/internal/store/order.go @@ -99,6 +99,23 @@ func (s *Store) GetTopOrders(from, to time.Time) ([]models.Order, error) { 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) + if err != nil { + return err + } + + query = "insert into ordered_cake(customer_order, cake, amount) values (?,?,?);" + for _, e := range newOrder.Cakes { + _, err := tx.Exec(query, newOrder.ID, e.ID, e.Amount) + if err != nil { + return err + } + } + 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 (?, ?, ?, ?, ?, ?, ?, ?) returning id;" if newOrder.ID != 0 { @@ -129,24 +146,12 @@ func (s *Store) SaveOrder(newOrder models.Order) (int, error) { return newOrder.ID, err } - // remove all ordered_cakes associated with this order before inserting - query = "delete from ordered_cake where customer_order = ?;" - _, err = tx.Exec(query, newOrder.ID) + err = s.UpdateOrderContents(tx, newOrder) if err != nil { _ = tx.Rollback() return newOrder.ID, err } - // add all ordered_cakes for this order - query = "insert into ordered_cake(customer_order, cake, amount) values (?,?,?);" - for _, e := range newOrder.Cakes { - _, err := tx.Exec(query, newOrder.ID, e.ID, e.Amount) - if err != nil { - _ = tx.Rollback() - return newOrder.ID, err - } - } - err = tx.Commit() return newOrder.ID, err }