65 lines
1 KiB
Go
65 lines
1 KiB
Go
package main
|
|
|
|
import (
|
|
"errors"
|
|
)
|
|
|
|
type store struct {
|
|
cakes []cake
|
|
orders []order
|
|
}
|
|
|
|
func NewStore() *store {
|
|
var out store
|
|
out.cakes = make([]cake, 0)
|
|
out.orders = make([]order, 0)
|
|
return &out
|
|
}
|
|
|
|
func (s *store) getCakes() []cake {
|
|
return s.cakes
|
|
}
|
|
|
|
func (s *store) saveCake(newCake cake) int {
|
|
if newCake.ID == -1 {
|
|
newCake.ID = len(s.cakes)
|
|
s.cakes = append(s.cakes, newCake)
|
|
return newCake.ID
|
|
}
|
|
for i := range s.cakes {
|
|
if s.cakes[i].ID == newCake.ID {
|
|
s.cakes[i] = newCake
|
|
break
|
|
}
|
|
}
|
|
return newCake.ID
|
|
}
|
|
|
|
func (s *store) getOrder(id int) (order, error) {
|
|
for _, e := range s.orders {
|
|
if e.ID == id {
|
|
return e, nil
|
|
}
|
|
}
|
|
return order{}, errors.New("order not found")
|
|
}
|
|
|
|
func (s *store) getOrders() []order {
|
|
return s.orders
|
|
}
|
|
|
|
func (s *store) saveOrder(newOrder order) int {
|
|
if newOrder.ID == -1 {
|
|
newOrder.ID = len(s.orders)
|
|
s.orders = append(s.orders, newOrder)
|
|
return newOrder.ID
|
|
}
|
|
|
|
for i := range s.orders {
|
|
if s.orders[i].ID == newOrder.ID {
|
|
s.orders[i] = newOrder
|
|
break
|
|
}
|
|
}
|
|
return newOrder.ID
|
|
}
|