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