map
All checks were successful
Build and Publish / BuildAndDeploy (push) Successful in 13s

This commit is contained in:
matst80
2025-05-13 22:01:59 +02:00
parent 428a135b3f
commit d767fb8830

22
main.go
View File

@@ -22,7 +22,7 @@ func init() {
type PersistingOrderHandler struct {
mu sync.RWMutex
Orders []Order `json:"orders"`
Orders map[string]Order `json:"orders"`
fileName string
}
@@ -47,7 +47,7 @@ func (h *PersistingOrderHandler) Load() error {
tmp := Order{}
for err == nil {
if err = enc.Decode(&tmp); err == nil {
h.Orders = append(h.Orders, tmp)
h.Orders[tmp.ID] = tmp
}
}
enc = nil
@@ -62,12 +62,8 @@ func (h *PersistingOrderHandler) Load() error {
func (h *PersistingOrderHandler) GetById(id string) (*Order, bool) {
h.mu.RLock()
defer h.mu.RUnlock()
for _, curr := range h.Orders {
if curr.ID == id {
return &curr, true
}
}
return nil, false
order, ok := h.Orders[id]
return &order, ok
}
func (h *PersistingOrderHandler) Save() error {
@@ -98,14 +94,18 @@ func (h *PersistingOrderHandler) Save() error {
func (h *PersistingOrderHandler) GetLatest() []Order {
h.mu.RLock()
defer h.mu.RUnlock()
return h.Orders
ret := make([]Order, 0, len(h.Orders))
for _, order := range h.Orders {
ret = append(ret, order)
}
return ret
}
func (h *PersistingOrderHandler) OrderPlaced(order Order) {
// Here you would implement the logic to persist the order
log.Printf("Order placed: %s", order.ID)
h.mu.Lock()
h.Orders = append(h.Orders, order)
h.Orders[order.ID] = order
h.mu.Unlock()
go func() {
err := h.Save()
@@ -118,7 +118,7 @@ func (h *PersistingOrderHandler) OrderPlaced(order Order) {
func main() {
handler := &PersistingOrderHandler{
Orders: make([]Order, 0),
Orders: make(map[string]Order),
mu: sync.RWMutex{},
fileName: "data/order.dbz",
}