From bc50391fe767a718272a02f567944efd8e3a6414 Mon Sep 17 00:00:00 2001 From: Stephan D Date: Thu, 5 Feb 2026 16:34:34 +0100 Subject: [PATCH] fixed upsert --- .../mntx/internal/service/gateway/card_processor.go | 5 +++++ api/gateway/mntx/storage/mongo/store/payouts.go | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/api/gateway/mntx/internal/service/gateway/card_processor.go b/api/gateway/mntx/internal/service/gateway/card_processor.go index 391efd70..f5486e1a 100644 --- a/api/gateway/mntx/internal/service/gateway/card_processor.go +++ b/api/gateway/mntx/internal/service/gateway/card_processor.go @@ -11,10 +11,12 @@ import ( "github.com/tech/sendico/gateway/mntx/storage" "github.com/tech/sendico/gateway/mntx/storage/model" clockpkg "github.com/tech/sendico/pkg/clock" + "github.com/tech/sendico/pkg/db/storable" "github.com/tech/sendico/pkg/merrors" msg "github.com/tech/sendico/pkg/messaging" "github.com/tech/sendico/pkg/mlogger" mntxv1 "github.com/tech/sendico/pkg/proto/gateway/mntx/v1" + "go.mongodb.org/mongo-driver/v2/bson" "go.uber.org/zap" ) @@ -87,6 +89,9 @@ func (p *cardPayoutProcessor) Submit(ctx context.Context, req *mntxv1.CardPayout now := p.clock.Now() state := &model.CardPayout{ + Base: storable.Base{ + ID: bson.NilObjectID, + }, PayoutID: strings.TrimSpace(req.GetPayoutId()), OperationRef: strings.TrimSpace(req.GetOperationRef()), IdempotencyKey: strings.TrimSpace(req.GetIdempotencyKey()), diff --git a/api/gateway/mntx/storage/mongo/store/payouts.go b/api/gateway/mntx/storage/mongo/store/payouts.go index 151b2983..982eec71 100644 --- a/api/gateway/mntx/storage/mongo/store/payouts.go +++ b/api/gateway/mntx/storage/mongo/store/payouts.go @@ -10,6 +10,7 @@ import ( ri "github.com/tech/sendico/pkg/db/repository/index" "github.com/tech/sendico/pkg/merrors" "github.com/tech/sendico/pkg/mlogger" + "go.mongodb.org/mongo-driver/v2/bson" "go.mongodb.org/mongo-driver/v2/mongo" "go.uber.org/zap" ) @@ -81,7 +82,11 @@ func (p *Payouts) Upsert(ctx context.Context, record *model.CardPayout) error { return merrors.InvalidArgument("operation ref is required", "operation_ref") } - return p.repository.Insert(ctx, record, repository.Filter(payoutIdemField, record.IdempotencyKey)) + if record.ID == bson.NilObjectID { + return p.repository.Insert(ctx, record, nil) + } + + return p.repository.Update(ctx, record) } var _ storage.PayoutsStore = (*Payouts)(nil) -- 2.49.1