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 }