github.com/wfusion/gofusion@v1.1.14/common/infra/watermill/components/cqrs/ctx.go (about)

     1  package cqrs
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/wfusion/gofusion/common/infra/watermill/message"
     7  )
     8  
     9  type ctxKey string
    10  
    11  const (
    12  	originalMessage ctxKey = "original_message"
    13  )
    14  
    15  // OriginalMessageFromCtx returns the original message that was received by the event/command handler.
    16  func OriginalMessageFromCtx(ctx context.Context) *message.Message {
    17  	val, ok := ctx.Value(originalMessage).(*message.Message)
    18  	if !ok {
    19  		return nil
    20  	}
    21  	return val
    22  }
    23  
    24  // CtxWithOriginalMessage returns a new context with the original message attached.
    25  func CtxWithOriginalMessage(ctx context.Context, msg *message.Message) context.Context {
    26  	return context.WithValue(ctx, originalMessage, msg)
    27  }