ledger account describibale support

This commit is contained in:
Stephan D
2026-01-06 17:51:35 +01:00
parent 12700c5595
commit 43edbc109d
34 changed files with 326 additions and 91 deletions

View File

@@ -3,7 +3,6 @@ package discovery
import (
"context"
"encoding/json"
"errors"
"strings"
"sync"
@@ -13,6 +12,7 @@ import (
cons "github.com/tech/sendico/pkg/messaging/consumer"
me "github.com/tech/sendico/pkg/messaging/envelope"
msgproducer "github.com/tech/sendico/pkg/messaging/producer"
"github.com/tech/sendico/pkg/merrors"
"github.com/tech/sendico/pkg/mlogger"
"go.uber.org/zap"
)
@@ -29,7 +29,7 @@ type Client struct {
func NewClient(logger mlogger.Logger, msgBroker mb.Broker, producer msg.Producer, sender string) (*Client, error) {
if msgBroker == nil {
return nil, errors.New("discovery client: broker is nil")
return nil, merrors.InvalidArgument("discovery client: broker is nil")
}
if logger == nil {
logger = zap.NewNop()
@@ -82,7 +82,7 @@ func (c *Client) Close() {
func (c *Client) Lookup(ctx context.Context) (LookupResponse, error) {
if c == nil || c.producer == nil {
return LookupResponse{}, errors.New("discovery client: producer not configured")
return LookupResponse{}, merrors.Internal("discovery client: producer not configured")
}
requestID := uuid.NewString()
ch := make(chan LookupResponse, 1)

View File

@@ -7,6 +7,7 @@ import (
"time"
"github.com/nats-io/nats.go"
"github.com/tech/sendico/pkg/merrors"
"github.com/tech/sendico/pkg/mlogger"
"go.uber.org/zap"
)
@@ -48,7 +49,7 @@ type KVStore struct {
func NewKVStore(logger mlogger.Logger, js nats.JetStreamContext, bucket string, opts ...KVStoreOption) (*KVStore, error) {
if js == nil {
return nil, errors.New("discovery kv: jetstream is nil")
return nil, merrors.InvalidArgument("discovery kv: jetstream is nil")
}
if logger == nil {
logger = zap.NewNop()
@@ -120,11 +121,11 @@ func ensureKVTTL(logger mlogger.Logger, js nats.JetStreamContext, kv nats.KeyVal
func (s *KVStore) Put(entry RegistryEntry) error {
if s == nil || s.kv == nil {
return errors.New("discovery kv: not configured")
return merrors.Internal("discovery kv: not configured")
}
key := registryEntryKey(normalizeEntry(entry))
if key == "" {
return errors.New("discovery kv: entry key is empty")
return merrors.InvalidArgument("discovery kv: entry key is empty")
}
payload, err := json.Marshal(entry)
if err != nil {
@@ -140,7 +141,7 @@ func (s *KVStore) Put(entry RegistryEntry) error {
func (s *KVStore) Delete(id string) error {
if s == nil || s.kv == nil {
return errors.New("discovery kv: not configured")
return merrors.Internal("discovery kv: not configured")
}
key := kvKeyFromRegistryKey(id)
if key == "" {
@@ -155,7 +156,7 @@ func (s *KVStore) Delete(id string) error {
func (s *KVStore) WatchAll() (nats.KeyWatcher, error) {
if s == nil || s.kv == nil {
return nil, errors.New("discovery kv: not configured")
return nil, merrors.Internal("discovery kv: not configured")
}
return s.kv.WatchAll()
}

View File

@@ -2,9 +2,9 @@ package discovery
import (
"encoding/json"
"errors"
messaging "github.com/tech/sendico/pkg/messaging/envelope"
"github.com/tech/sendico/pkg/merrors"
"github.com/tech/sendico/pkg/model"
)
@@ -15,7 +15,7 @@ type jsonEnvelope struct {
func (e *jsonEnvelope) Serialize() ([]byte, error) {
if e.payload == nil {
return nil, errors.New("discovery envelope payload is nil")
return nil, merrors.InvalidArgument("discovery envelope payload is nil")
}
data, err := json.Marshal(e.payload)
if err != nil {

View File

@@ -3,12 +3,12 @@ package discovery
import (
"context"
"encoding/json"
"errors"
"strings"
"sync"
"time"
"github.com/nats-io/nats.go"
"github.com/tech/sendico/pkg/merrors"
msg "github.com/tech/sendico/pkg/messaging"
mb "github.com/tech/sendico/pkg/messaging/broker"
cons "github.com/tech/sendico/pkg/messaging/consumer"
@@ -50,13 +50,13 @@ type consumerHandler struct {
func NewRegistryService(logger mlogger.Logger, msgBroker mb.Broker, producer msg.Producer, registry *Registry, sender string, opts ...RegistryOption) (*RegistryService, error) {
if msgBroker == nil {
return nil, errors.New("discovery registry: broker is nil")
return nil, merrors.InvalidArgument("discovery registry: broker is nil", "broker")
}
if registry == nil {
registry = NewRegistry()
}
if logger == nil {
logger = zap.NewNop()
return nil, merrors.InvalidArgument("discovery registry: no logger provided", "logger")
}
logger = logger.Named("discovery_registry")
sender = strings.TrimSpace(sender)

View File

@@ -2,12 +2,12 @@ package discovery
import (
"encoding/json"
"errors"
"sync"
"time"
"github.com/nats-io/nats.go"
mb "github.com/tech/sendico/pkg/messaging/broker"
"github.com/tech/sendico/pkg/merrors"
"github.com/tech/sendico/pkg/mlogger"
"go.uber.org/zap"
)
@@ -23,22 +23,22 @@ type RegistryWatcher struct {
func NewRegistryWatcher(logger mlogger.Logger, msgBroker mb.Broker, registry *Registry) (*RegistryWatcher, error) {
if msgBroker == nil {
return nil, errors.New("discovery watcher: broker is nil")
return nil, merrors.InvalidArgument("discovery watcher: broker is nil")
}
if registry == nil {
registry = NewRegistry()
}
if logger == nil {
return nil, errors.New("discovery logger: logger must be provided")
return nil, merrors.InvalidArgument("discovery logger: logger must be provided")
}
logger = logger.Named("discovery_watcher")
provider, ok := msgBroker.(jetStreamProvider)
if !ok {
return nil, errors.New("discovery watcher: jetstream not available")
return nil, merrors.Internal("discovery watcher: jetstream not available")
}
js := provider.JetStream()
if js == nil {
return nil, errors.New("discovery watcher: jetstream not configured")
return nil, merrors.Internal("discovery watcher: jetstream not configured")
}
store, err := NewKVStore(logger, js, "")
if err != nil {
@@ -54,7 +54,7 @@ func NewRegistryWatcher(logger mlogger.Logger, msgBroker mb.Broker, registry *Re
func (w *RegistryWatcher) Start() error {
if w == nil || w.kv == nil {
return errors.New("discovery watcher: not configured")
return merrors.Internal("discovery watcher: not configured")
}
watcher, err := w.kv.WatchAll()
if err != nil {