diff --git a/cmd/cart/main.go b/cmd/cart/main.go index d174722..bf3ad0b 100644 --- a/cmd/cart/main.go +++ b/cmd/cart/main.go @@ -145,7 +145,7 @@ func main() { log.Fatalf("Error creating inventory service: %v\n", err) } - syncedServer := NewPoolServer(pool, fmt.Sprintf("%s, %s", name, podIp), klarnaClient, inventoryService) + syncedServer := NewPoolServer(pool, fmt.Sprintf("%s, %s", name, podIp), klarnaClient, inventoryService, rdb) app := &App{ pool: pool, diff --git a/cmd/cart/pool-server.go b/cmd/cart/pool-server.go index 36bc93a..53ea7c0 100644 --- a/cmd/cart/pool-server.go +++ b/cmd/cart/pool-server.go @@ -55,15 +55,13 @@ func NewPoolServer(pool actor.GrainPool[*cart.CartGrain], pod_name string, klarn klarnaClient: klarnaClient, inventoryService: inventoryService, } - inventory.NewInventoryChangeListener(inventoryRedisClient, func(ctx context.Context, sku inventory.SKU, locationID inventory.LocationID) { - qty, err := inventoryService.GetInventory(ctx, sku, locationID) - if err != nil { - log.Printf("error fetching inventory for sku %s at location %s: %v", sku, locationID, err) + inventory.NewInventoryChangeListener(inventoryRedisClient, context.Background(), func(changes []inventory.InventoryChange) { + for _, change := range changes { + srv.GrainPool.GetPubSub().Publish(actor.Event{ + Topic: fmt.Sprintf("inventory:%s:%s", change.SKU, change.StockLocationID), + Payload: change.Value, + }) } - srv.GrainPool.GetPubSub().Publish(actor.Event{ - Topic: fmt.Sprintf("inventory:%s:%s", sku, locationID), - Payload: qty, - }) }) return srv }