changed queries to not use returning id
This commit is contained in:
parent
5661ac4594
commit
732c2cb084
2 changed files with 16 additions and 20 deletions
|
|
@ -22,7 +22,7 @@ func (s *Store) cakeCount() int {
|
||||||
func (s *Store) loadCakes() ([]models.Cake, error) {
|
func (s *Store) loadCakes() ([]models.Cake, error) {
|
||||||
out := make([]models.Cake, 0, s.cakeCount())
|
out := make([]models.Cake, 0, s.cakeCount())
|
||||||
|
|
||||||
rows, err := s.db.Query("select id, name, price, category, availability from cake order by id asc;")
|
rows, err := s.db.Query("select id, name, price, category, availability from cake order by id;")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return out, err
|
return out, err
|
||||||
}
|
}
|
||||||
|
|
@ -88,20 +88,18 @@ func (s *Store) SaveCake(newCake models.Cake) (int, error) {
|
||||||
return newCake.ID, s.updateCake(newCake)
|
return newCake.ID, s.updateCake(newCake)
|
||||||
}
|
}
|
||||||
fmt.Println("adding a new cake", newCake)
|
fmt.Println("adding a new cake", newCake)
|
||||||
query := "insert into cake(name, price, category, availability) values (?, ?, ?, ?) returning id;"
|
query := "insert into cake(name, price, category, availability) values (?, ?, ?, ?);"
|
||||||
rows, err := s.db.Query(query, newCake.Name, newCake.Price, newCake.Category, newCake.Availability)
|
result, err := s.db.Exec(query, newCake.Name, newCake.Price, newCake.Category, newCake.Availability)
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
defer rows.Close()
|
|
||||||
if !rows.Next() {
|
|
||||||
return 0, errors.New("query didn't return the cake id")
|
|
||||||
}
|
|
||||||
err = rows.Scan(&newCake.ID)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
id, err := result.LastInsertId()
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
newCake.ID = int(id)
|
||||||
|
|
||||||
s.cakes = append(s.cakes, newCake)
|
s.cakes = append(s.cakes, newCake)
|
||||||
return newCake.ID, nil
|
return newCake.ID, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,8 @@ import (
|
||||||
"github.com/Bronku/iroon/internal/models"
|
"github.com/Bronku/iroon/internal/models"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// #todo update labels in templates
|
||||||
|
|
||||||
func (s *Store) parseOrderRow(row *sql.Rows) (models.Order, error) {
|
func (s *Store) parseOrderRow(row *sql.Rows) (models.Order, error) {
|
||||||
var out models.Order
|
var out models.Order
|
||||||
var orderDate, deliveryDate string
|
var orderDate, deliveryDate string
|
||||||
|
|
@ -117,10 +119,10 @@ func (s *Store) UpdateOrderContents(tx *sql.Tx, newOrder models.Order) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Store) SaveOrder(newOrder models.Order) (int, error) {
|
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;"
|
query := "insert into customer_order(name, surname, phone, location, order_date, delivery_date, status, paid) values (?, ?, ?, ?, ?, ?, ?, ?);"
|
||||||
if newOrder.ID != 0 {
|
if newOrder.ID != 0 {
|
||||||
query = "update customer_order set name = ?, surname = ?, phone = ?, location = ?, order_date = ?, delivery_date = ?, status = ?, paid = ? where id = "
|
query = "update customer_order set name = ?, surname = ?, phone = ?, location = ?, order_date = ?, delivery_date = ?, status = ?, paid = ? where id = "
|
||||||
query += strconv.Itoa(newOrder.ID) + " returning id;"
|
query += strconv.Itoa(newOrder.ID) + " ;"
|
||||||
}
|
}
|
||||||
tx, err := s.db.Begin()
|
tx, err := s.db.Begin()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -129,22 +131,18 @@ func (s *Store) SaveOrder(newOrder models.Order) (int, error) {
|
||||||
|
|
||||||
accepted := newOrder.Accepted.Format("2006-01-02 15:04")
|
accepted := newOrder.Accepted.Format("2006-01-02 15:04")
|
||||||
date := newOrder.Date.Format("2006-01-02 15:04")
|
date := newOrder.Date.Format("2006-01-02 15:04")
|
||||||
row, err := tx.Query(query, newOrder.Name, newOrder.Surname, newOrder.Phone, newOrder.Location, accepted, date, newOrder.Status, newOrder.Paid)
|
result, err := tx.Exec(query, newOrder.Name, newOrder.Surname, newOrder.Phone, newOrder.Location, accepted, date, newOrder.Status, newOrder.Paid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
_ = tx.Rollback()
|
_ = tx.Rollback()
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
defer row.Close()
|
|
||||||
|
|
||||||
if !row.Next() {
|
id, err := result.LastInsertId()
|
||||||
_ = tx.Rollback()
|
|
||||||
return 0, errors.New("the database didn't respond with an id")
|
|
||||||
}
|
|
||||||
err = row.Scan(&newOrder.ID)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
_ = tx.Rollback()
|
_ = tx.Rollback()
|
||||||
return newOrder.ID, err
|
return newOrder.ID, err
|
||||||
}
|
}
|
||||||
|
newOrder.ID = int(id)
|
||||||
|
|
||||||
err = s.UpdateOrderContents(tx, newOrder)
|
err = s.UpdateOrderContents(tx, newOrder)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue