cake-order-tracker/store.go
2025-02-07 08:40:04 +01:00

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
}