From c4c116fc433931de3587836cb75cbdfd79cadb14 Mon Sep 17 00:00:00 2001 From: matst80 Date: Tue, 18 Nov 2025 21:30:50 +0100 Subject: [PATCH] unique ids --- pkg/cart/cart-grain.go | 1 + pkg/cart/mutation_upsert_subscriptiondetails.go | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/pkg/cart/cart-grain.go b/pkg/cart/cart-grain.go index d8a48bc..2e2b2c7 100644 --- a/pkg/cart/cart-grain.go +++ b/pkg/cart/cart-grain.go @@ -65,6 +65,7 @@ type CartNotification struct { type SubscriptionDetails struct { Id string `json:"id"` + Version uint16 `json:"version"` OfferingCode string `json:"offeringCode,omitempty"` SigningType string `json:"signingType,omitempty"` Meta json.RawMessage `json:"data,omitempty"` diff --git a/pkg/cart/mutation_upsert_subscriptiondetails.go b/pkg/cart/mutation_upsert_subscriptiondetails.go index 1e438bd..102e547 100644 --- a/pkg/cart/mutation_upsert_subscriptiondetails.go +++ b/pkg/cart/mutation_upsert_subscriptiondetails.go @@ -24,8 +24,10 @@ func UpsertSubscriptionDetails(g *CartGrain, m *messages.UpsertSubscriptionDetai } id := MustNewCartId().String() + g.SubscriptionDetails[id] = &SubscriptionDetails{ Id: id, + Version: 1, OfferingCode: m.OfferingCode, SigningType: m.SigningType, Meta: meta, @@ -38,11 +40,14 @@ func UpsertSubscriptionDetails(g *CartGrain, m *messages.UpsertSubscriptionDetai if !ok { return fmt.Errorf("subscription details not found") } + changed := false if m.OfferingCode != "" { existing.OfferingCode = m.OfferingCode + changed = true } if m.SigningType != "" { existing.SigningType = m.SigningType + changed = true } if m.Data != nil { // Only validate & assign if there is content; empty -> leave as-is. @@ -51,7 +56,11 @@ func UpsertSubscriptionDetails(g *CartGrain, m *messages.UpsertSubscriptionDetai return fmt.Errorf("subscription details invalid json") } existing.Meta = m.Data.Value + changed = true } } + if changed { + existing.Version++ + } return nil }