metadata: allow to exclude some keys in Copy func (#321)

Reviewed-on: #321
Co-authored-by: Vasiliy Tolstov <v.tolstov@unistack.org>
Co-committed-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
Василий Толстов 2024-03-09 23:50:40 +03:00 committed by Василий Толстов
parent ed7972a1fa
commit f66ac9736b
2 changed files with 13 additions and 1 deletions

View File

@ -98,11 +98,12 @@ func (md Metadata) Del(keys ...string) {
} }
// Copy makes a copy of the metadata // Copy makes a copy of the metadata
func Copy(md Metadata) Metadata { func Copy(md Metadata, exclude ...string) Metadata {
nmd := New(len(md)) nmd := New(len(md))
for key, val := range md { for key, val := range md {
nmd.Set(key, val) nmd.Set(key, val)
} }
nmd.Del(exclude...)
return nmd return nmd
} }

View File

@ -190,3 +190,14 @@ func TestMetadataContext(t *testing.T) {
t.Errorf("Expected metadata length 1 got %d", i) t.Errorf("Expected metadata length 1 got %d", i)
} }
} }
func TestCopy(t *testing.T) {
md := New(2)
md.Set("key1", "val1", "key2", "val2")
nmd := Copy(md, "key2")
if len(nmd) != 1 {
t.Fatal("Copy exclude not works")
} else if nmd["Key1"] != "val1" {
t.Fatal("Copy exclude not works")
}
}