in pkg/log/structure/merger/merged.go [596:639]
func removeSetElements(list []any, patch []any, remove []any) ([]any, error) {
retained := map[string]struct{}{}
for _, v := range list {
vhash, err := toHash(v)
if err != nil {
return nil, err
}
retained[vhash] = struct{}{}
}
for _, v := range patch {
vhash, err := toHash(v)
if err != nil {
return nil, err
}
retained[vhash] = struct{}{}
}
for _, v := range remove {
vhash, err := toHash(v)
if err != nil {
return nil, err
}
delete(retained, vhash)
}
result := []any{}
for _, v := range list {
vhash, err := toHash(v)
if err != nil {
return nil, err
}
if _, found := retained[vhash]; found {
result = append(result, v)
}
}
for _, v := range patch {
vhash, err := toHash(v)
if err != nil {
return nil, err
}
if _, found := retained[vhash]; found {
result = append(result, v)
}
}
return result, nil
}