adding PatchContext - this will create new context with original + patch metadata

This commit is contained in:
Sumanth Chinthagunta
2019-10-24 17:51:54 -07:00
parent f5b8a12106
commit 1f658cfbff
2 changed files with 39 additions and 0 deletions

View File

@@ -28,3 +28,17 @@ func FromContext(ctx context.Context) (Metadata, bool) {
func NewContext(ctx context.Context, md Metadata) context.Context {
return context.WithValue(ctx, metaKey{}, md)
}
// PatchContext : will add/replace source metadata fields with given patch metadata fields
func PatchContext(ctx context.Context, patchMd Metadata) context.Context {
md, _ := ctx.Value(metaKey{}).(Metadata)
cmd := make(Metadata)
for k, v := range md {
cmd[k] = v
}
for k, v := range patchMd {
cmd[k] = v
}
return context.WithValue(ctx, metaKey{}, cmd)
}