better pbany parsing
Some checks failed
Build and Publish / BuildAndDeployArm64 (push) Failing after 4s
Build and Publish / BuildAndDeployAmd64 (push) Successful in 52s

This commit is contained in:
matst80
2025-11-18 23:07:28 +01:00
parent a7aab5161b
commit e662192b56
5 changed files with 94 additions and 36 deletions

View File

@@ -5,41 +5,23 @@ import (
"fmt"
messages "git.tornberg.me/go-cart-actor/pkg/messages"
"google.golang.org/protobuf/types/known/anypb"
)
func UpsertSubscriptionDetails(g *CartGrain, m *messages.UpsertSubscriptionDetails) error {
if m == nil {
return nil
}
// Helper to get data bytes from Data field
getDataBytes := func(data *anypb.Any) ([]byte, error) {
if data == nil {
return nil, nil
}
if len(data.Value) > 0 {
return data.Value, nil
}
if data.TypeUrl != "" {
return []byte(data.TypeUrl), nil
}
return nil, nil
}
metaBytes := m.Data.GetValue()
// Create new subscription details when Id is nil.
if m.Id == nil {
// Validate JSON if provided.
var meta json.RawMessage
dataBytes, err := getDataBytes(m.Data)
if err != nil {
return err
}
if dataBytes != nil {
if !json.Valid(dataBytes) {
if metaBytes != nil {
if !json.Valid(metaBytes) {
return fmt.Errorf("subscription details invalid json")
}
meta = json.RawMessage(dataBytes)
meta = json.RawMessage(metaBytes)
}
id := MustNewCartId().String()
@@ -68,15 +50,11 @@ func UpsertSubscriptionDetails(g *CartGrain, m *messages.UpsertSubscriptionDetai
existing.SigningType = m.SigningType
changed = true
}
dataBytes, err := getDataBytes(m.Data)
if err != nil {
return err
}
if dataBytes != nil {
if !json.Valid(dataBytes) {
if metaBytes != nil {
if !json.Valid(metaBytes) {
return fmt.Errorf("subscription details invalid json")
}
existing.Meta = dataBytes
existing.Meta = json.RawMessage(metaBytes)
changed = true
}
if changed {