func removeSetElements()

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
}