Documentation ¶
Index ¶
- func CreateDeleteDirective(mergeKey string, mergeKeyValue interface{}) map[string]interface{}
- func CreateThreeWayMergePatch(original, modified, current []byte, dataStruct interface{}, overwrite bool, ...) ([]byte, error)
- func CreateTwoWayMergePatch(original, modified []byte, dataStruct interface{}, ...) ([]byte, error)
- func ItemAddedToModifiedSlice(original, modified string) bool
- func ItemMatchesOriginalAndModifiedSlice(original, modified string) bool
- func ItemRemovedFromModifiedSlice(original, modified string) bool
- func MergingMapsHaveConflicts(left, right map[string]interface{}, dataStruct interface{}) (bool, error)
- func StrategicMergePatch(original, patch []byte, dataStruct interface{}) ([]byte, error)
- type DiffOptions
- type JSONMap
- type MergeOptions
- type SortableSliceOfMaps
- type SortableSliceOfScalars
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CreateDeleteDirective ¶ added in v1.7.0
func CreateThreeWayMergePatch ¶
func CreateThreeWayMergePatch(original, modified, current []byte, dataStruct interface{}, overwrite bool, fns ...mergepatch.PreconditionFunc) ([]byte, error)
CreateThreeWayMergePatch reconciles a modified configuration with an original configuration, while preserving any changes or deletions made to the original configuration in the interim, and not overridden by the current configuration. All three documents must be passed to the method as json encoded content. It will return a strategic merge patch, or an error if any of the documents is invalid, or if there are any preconditions that fail against the modified configuration, or, if overwrite is false and there are conflicts between the modified and current configurations. Conflicts are defined as keys changed differently from original to modified than from original to current. In other words, a conflict occurs if modified changes any key in a way that is different from how it is changed in current (e.g., deleting it, changing its value). We also propagate values fields that do not exist in original but are explicitly defined in modified.
func CreateTwoWayMergePatch ¶
func CreateTwoWayMergePatch(original, modified []byte, dataStruct interface{}, fns ...mergepatch.PreconditionFunc) ([]byte, error)
CreateTwoWayMergePatch creates a patch that can be passed to StrategicMergePatch from an original document and a modified document, which are passed to the method as json encoded content. It will return a patch that yields the modified document when applied to the original document, or an error if either of the two documents is invalid.
func ItemAddedToModifiedSlice ¶ added in v1.7.0
func ItemMatchesOriginalAndModifiedSlice ¶ added in v1.7.0
func ItemRemovedFromModifiedSlice ¶ added in v1.7.0
func MergingMapsHaveConflicts ¶
func MergingMapsHaveConflicts(left, right map[string]interface{}, dataStruct interface{}) (bool, error)
MergingMapsHaveConflicts returns true if the left and right JSON interface objects overlap with different values in any key. All keys are required to be strings. Since patches of the same Type have congruent keys, this is valid for multiple patch types. This method supports strategic merge patch semantics.
func StrategicMergePatch ¶
StrategicMergePatch applies a strategic merge patch. The patch and the original document must be json encoded content. A patch can be created from an original and a modified document by calling CreateStrategicMergePatch.
Types ¶
type DiffOptions ¶ added in v1.7.0
type DiffOptions struct { // SetElementOrder determines whether we generate the $setElementOrder parallel list. SetElementOrder bool // IgnoreChangesAndAdditions indicates if we keep the changes and additions in the patch. IgnoreChangesAndAdditions bool // IgnoreDeletions indicates if we keep the deletions in the patch. IgnoreDeletions bool // We introduce a new value retainKeys for patchStrategy. // It indicates that all fields needing to be preserved must be // present in the `retainKeys` list. // And the fields that are present will be merged with live object. // All the missing fields will be cleared when patching. BuildRetainKeysDirective bool }
type JSONMap ¶
type JSONMap map[string]interface{}
JSONMap is a representations of JSON object encoded as map[string]interface{} where the children can be either map[string]interface{}, []interface{} or primitive type). Operating on JSONMap representation is much faster as it doesn't require any json marshaling and/or unmarshaling operations.
func CreateTwoWayMergeMapPatch ¶
func CreateTwoWayMergeMapPatch(original, modified JSONMap, dataStruct interface{}, fns ...mergepatch.PreconditionFunc) (JSONMap, error)
CreateTwoWayMergeMapPatch creates a patch from an original and modified JSON objects, encoded JSONMap. The serialized version of the map can then be passed to StrategicMergeMapPatch.
func StrategicMergeMapPatch ¶
StrategicMergeMapPatch applies a strategic merge patch. The original and patch documents must be JSONMap. A patch can be created from an original and modified document by calling CreateTwoWayMergeMapPatch. Warning: the original and patch JSONMap objects are mutated by this function and should not be reused.
type MergeOptions ¶ added in v1.7.0
type MergeOptions struct { // MergeParallelList indicates if we are merging the parallel list. // We don't merge parallel list when calling mergeMap() in CreateThreeWayMergePatch() // which is called client-side. // We merge parallel list iff when calling mergeMap() in StrategicMergeMapPatch() // which is called server-side MergeParallelList bool // IgnoreUnmatchedNulls indicates if we should process the unmatched nulls. IgnoreUnmatchedNulls bool }
type SortableSliceOfMaps ¶
type SortableSliceOfMaps struct {
// contains filtered or unexported fields
}
func (SortableSliceOfMaps) Len ¶
func (ss SortableSliceOfMaps) Len() int
func (SortableSliceOfMaps) Less ¶
func (ss SortableSliceOfMaps) Less(i, j int) bool
func (SortableSliceOfMaps) Swap ¶
func (ss SortableSliceOfMaps) Swap(i, j int)
type SortableSliceOfScalars ¶
type SortableSliceOfScalars struct {
// contains filtered or unexported fields
}
func (SortableSliceOfScalars) Len ¶
func (ss SortableSliceOfScalars) Len() int
func (SortableSliceOfScalars) Less ¶
func (ss SortableSliceOfScalars) Less(i, j int) bool
func (SortableSliceOfScalars) Swap ¶
func (ss SortableSliceOfScalars) Swap(i, j int)