github.com/cloudwan/edgelq-sdk@v1.15.4/audit/resources/v1alpha2/audited_resource_descriptor/audited_resource_descriptor.pb.fieldmask.go (about)

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/audit/proto/v1alpha2/audited_resource_descriptor.proto
     3  // DO NOT EDIT!!!
     4  
     5  package audited_resource_descriptor
     6  
     7  import (
     8  	"encoding/json"
     9  	"strings"
    10  
    11  	"google.golang.org/grpc/codes"
    12  	"google.golang.org/grpc/status"
    13  	"google.golang.org/protobuf/proto"
    14  	preflect "google.golang.org/protobuf/reflect/protoreflect"
    15  	googlefieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
    16  
    17  	gotenobject "github.com/cloudwan/goten-sdk/runtime/object"
    18  )
    19  
    20  // proto imports
    21  import (
    22  	common "github.com/cloudwan/edgelq-sdk/audit/resources/v1alpha2/common"
    23  	meta "github.com/cloudwan/goten-sdk/types/meta"
    24  )
    25  
    26  // ensure the imports are used
    27  var (
    28  	_ = new(json.Marshaler)
    29  	_ = strings.Builder{}
    30  
    31  	_ = codes.NotFound
    32  	_ = status.Status{}
    33  	_ = new(proto.Message)
    34  	_ = new(preflect.Message)
    35  	_ = googlefieldmaskpb.FieldMask{}
    36  
    37  	_ = new(gotenobject.FieldMask)
    38  )
    39  
    40  // make sure we're using proto imports
    41  var (
    42  	_ = &common.Authentication{}
    43  	_ = &meta.Meta{}
    44  )
    45  
    46  type AuditedResourceDescriptor_FieldMask struct {
    47  	Paths []AuditedResourceDescriptor_FieldPath
    48  }
    49  
    50  func FullAuditedResourceDescriptor_FieldMask() *AuditedResourceDescriptor_FieldMask {
    51  	res := &AuditedResourceDescriptor_FieldMask{}
    52  	res.Paths = append(res.Paths, &AuditedResourceDescriptor_FieldTerminalPath{selector: AuditedResourceDescriptor_FieldPathSelectorName})
    53  	res.Paths = append(res.Paths, &AuditedResourceDescriptor_FieldTerminalPath{selector: AuditedResourceDescriptor_FieldPathSelectorDisplayName})
    54  	res.Paths = append(res.Paths, &AuditedResourceDescriptor_FieldTerminalPath{selector: AuditedResourceDescriptor_FieldPathSelectorDescription})
    55  	res.Paths = append(res.Paths, &AuditedResourceDescriptor_FieldTerminalPath{selector: AuditedResourceDescriptor_FieldPathSelectorLabels})
    56  	res.Paths = append(res.Paths, &AuditedResourceDescriptor_FieldTerminalPath{selector: AuditedResourceDescriptor_FieldPathSelectorPromotedLabelKeySets})
    57  	res.Paths = append(res.Paths, &AuditedResourceDescriptor_FieldTerminalPath{selector: AuditedResourceDescriptor_FieldPathSelectorVersions})
    58  	res.Paths = append(res.Paths, &AuditedResourceDescriptor_FieldTerminalPath{selector: AuditedResourceDescriptor_FieldPathSelectorSpecFields})
    59  	res.Paths = append(res.Paths, &AuditedResourceDescriptor_FieldTerminalPath{selector: AuditedResourceDescriptor_FieldPathSelectorStateFields})
    60  	res.Paths = append(res.Paths, &AuditedResourceDescriptor_FieldTerminalPath{selector: AuditedResourceDescriptor_FieldPathSelectorMetaFields})
    61  	res.Paths = append(res.Paths, &AuditedResourceDescriptor_FieldTerminalPath{selector: AuditedResourceDescriptor_FieldPathSelectorMetadata})
    62  	return res
    63  }
    64  
    65  func (fieldMask *AuditedResourceDescriptor_FieldMask) String() string {
    66  	if fieldMask == nil {
    67  		return "<nil>"
    68  	}
    69  	pathsStr := make([]string, 0, len(fieldMask.Paths))
    70  	for _, path := range fieldMask.Paths {
    71  		pathsStr = append(pathsStr, path.String())
    72  	}
    73  	return strings.Join(pathsStr, ", ")
    74  }
    75  
    76  func (fieldMask *AuditedResourceDescriptor_FieldMask) IsFull() bool {
    77  	if fieldMask == nil {
    78  		return false
    79  	}
    80  	presentSelectors := make([]bool, 10)
    81  	for _, path := range fieldMask.Paths {
    82  		if asFinal, ok := path.(*AuditedResourceDescriptor_FieldTerminalPath); ok {
    83  			presentSelectors[int(asFinal.selector)] = true
    84  		}
    85  	}
    86  	for _, flag := range presentSelectors {
    87  		if !flag {
    88  			return false
    89  		}
    90  	}
    91  	return true
    92  }
    93  
    94  func (fieldMask *AuditedResourceDescriptor_FieldMask) ProtoReflect() preflect.Message {
    95  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
    96  		return ParseAuditedResourceDescriptor_FieldPath(raw)
    97  	})
    98  }
    99  
   100  func (fieldMask *AuditedResourceDescriptor_FieldMask) ProtoMessage() {}
   101  
   102  func (fieldMask *AuditedResourceDescriptor_FieldMask) Reset() {
   103  	if fieldMask != nil {
   104  		fieldMask.Paths = nil
   105  	}
   106  }
   107  
   108  func (fieldMask *AuditedResourceDescriptor_FieldMask) Subtract(other *AuditedResourceDescriptor_FieldMask) *AuditedResourceDescriptor_FieldMask {
   109  	result := &AuditedResourceDescriptor_FieldMask{}
   110  	removedSelectors := make([]bool, 10)
   111  	otherSubMasks := map[AuditedResourceDescriptor_FieldPathSelector]gotenobject.FieldMask{
   112  		AuditedResourceDescriptor_FieldPathSelectorLabels:               &common.LabelDescriptor_FieldMask{},
   113  		AuditedResourceDescriptor_FieldPathSelectorPromotedLabelKeySets: &common.LabelKeySet_FieldMask{},
   114  		AuditedResourceDescriptor_FieldPathSelectorMetadata:             &meta.Meta_FieldMask{},
   115  	}
   116  	mySubMasks := map[AuditedResourceDescriptor_FieldPathSelector]gotenobject.FieldMask{
   117  		AuditedResourceDescriptor_FieldPathSelectorLabels:               &common.LabelDescriptor_FieldMask{},
   118  		AuditedResourceDescriptor_FieldPathSelectorPromotedLabelKeySets: &common.LabelKeySet_FieldMask{},
   119  		AuditedResourceDescriptor_FieldPathSelectorMetadata:             &meta.Meta_FieldMask{},
   120  	}
   121  
   122  	for _, path := range other.GetPaths() {
   123  		switch tp := path.(type) {
   124  		case *AuditedResourceDescriptor_FieldTerminalPath:
   125  			removedSelectors[int(tp.selector)] = true
   126  		case *AuditedResourceDescriptor_FieldSubPath:
   127  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
   128  		}
   129  	}
   130  	for _, path := range fieldMask.GetPaths() {
   131  		if !removedSelectors[int(path.Selector())] {
   132  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
   133  				if tp, ok := path.(*AuditedResourceDescriptor_FieldTerminalPath); ok {
   134  					switch tp.selector {
   135  					case AuditedResourceDescriptor_FieldPathSelectorLabels:
   136  						mySubMasks[AuditedResourceDescriptor_FieldPathSelectorLabels] = common.FullLabelDescriptor_FieldMask()
   137  					case AuditedResourceDescriptor_FieldPathSelectorPromotedLabelKeySets:
   138  						mySubMasks[AuditedResourceDescriptor_FieldPathSelectorPromotedLabelKeySets] = common.FullLabelKeySet_FieldMask()
   139  					case AuditedResourceDescriptor_FieldPathSelectorMetadata:
   140  						mySubMasks[AuditedResourceDescriptor_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask()
   141  					}
   142  				} else if tp, ok := path.(*AuditedResourceDescriptor_FieldSubPath); ok {
   143  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
   144  				}
   145  			} else {
   146  				result.Paths = append(result.Paths, path)
   147  			}
   148  		}
   149  	}
   150  	for selector, mySubMask := range mySubMasks {
   151  		if mySubMask.PathsCount() > 0 {
   152  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
   153  				result.Paths = append(result.Paths, &AuditedResourceDescriptor_FieldSubPath{selector: selector, subPath: allowedPath})
   154  			}
   155  		}
   156  	}
   157  
   158  	if len(result.Paths) == 0 {
   159  		return nil
   160  	}
   161  	return result
   162  }
   163  
   164  func (fieldMask *AuditedResourceDescriptor_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   165  	return fieldMask.Subtract(other.(*AuditedResourceDescriptor_FieldMask))
   166  }
   167  
   168  // FilterInputFields generates copy of field paths with output_only field paths removed
   169  func (fieldMask *AuditedResourceDescriptor_FieldMask) FilterInputFields() *AuditedResourceDescriptor_FieldMask {
   170  	result := &AuditedResourceDescriptor_FieldMask{}
   171  	for _, path := range fieldMask.Paths {
   172  		switch path.Selector() {
   173  		case AuditedResourceDescriptor_FieldPathSelectorMetadata:
   174  			if _, ok := path.(*AuditedResourceDescriptor_FieldTerminalPath); ok {
   175  				for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths {
   176  					result.Paths = append(result.Paths, &AuditedResourceDescriptor_FieldSubPath{selector: path.Selector(), subPath: subpath})
   177  				}
   178  			} else if sub, ok := path.(*AuditedResourceDescriptor_FieldSubPath); ok {
   179  				selectedMask := &meta.Meta_FieldMask{
   180  					Paths: []meta.Meta_FieldPath{sub.subPath.(meta.Meta_FieldPath)},
   181  				}
   182  				for _, allowedPath := range selectedMask.FilterInputFields().Paths {
   183  					result.Paths = append(result.Paths, &AuditedResourceDescriptor_FieldSubPath{selector: AuditedResourceDescriptor_FieldPathSelectorMetadata, subPath: allowedPath})
   184  				}
   185  			}
   186  		default:
   187  			result.Paths = append(result.Paths, path)
   188  		}
   189  	}
   190  	return result
   191  }
   192  
   193  // ToFieldMask is used for proto conversions
   194  func (fieldMask *AuditedResourceDescriptor_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   195  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   196  	for _, path := range fieldMask.Paths {
   197  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   198  	}
   199  	return protoFieldMask
   200  }
   201  
   202  func (fieldMask *AuditedResourceDescriptor_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   203  	if fieldMask == nil {
   204  		return status.Error(codes.Internal, "target field mask is nil")
   205  	}
   206  	fieldMask.Paths = make([]AuditedResourceDescriptor_FieldPath, 0, len(protoFieldMask.Paths))
   207  	for _, strPath := range protoFieldMask.Paths {
   208  		path, err := ParseAuditedResourceDescriptor_FieldPath(strPath)
   209  		if err != nil {
   210  			return err
   211  		}
   212  		fieldMask.Paths = append(fieldMask.Paths, path)
   213  	}
   214  	return nil
   215  }
   216  
   217  // implement methods required by customType
   218  func (fieldMask AuditedResourceDescriptor_FieldMask) Marshal() ([]byte, error) {
   219  	protoFieldMask := fieldMask.ToProtoFieldMask()
   220  	return proto.Marshal(protoFieldMask)
   221  }
   222  
   223  func (fieldMask *AuditedResourceDescriptor_FieldMask) Unmarshal(data []byte) error {
   224  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   225  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   226  		return err
   227  	}
   228  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   229  		return err
   230  	}
   231  	return nil
   232  }
   233  
   234  func (fieldMask *AuditedResourceDescriptor_FieldMask) Size() int {
   235  	return proto.Size(fieldMask.ToProtoFieldMask())
   236  }
   237  
   238  func (fieldMask AuditedResourceDescriptor_FieldMask) MarshalJSON() ([]byte, error) {
   239  	return json.Marshal(fieldMask.ToProtoFieldMask())
   240  }
   241  
   242  func (fieldMask *AuditedResourceDescriptor_FieldMask) UnmarshalJSON(data []byte) error {
   243  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   244  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   245  		return err
   246  	}
   247  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   248  		return err
   249  	}
   250  	return nil
   251  }
   252  
   253  func (fieldMask *AuditedResourceDescriptor_FieldMask) AppendPath(path AuditedResourceDescriptor_FieldPath) {
   254  	fieldMask.Paths = append(fieldMask.Paths, path)
   255  }
   256  
   257  func (fieldMask *AuditedResourceDescriptor_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   258  	fieldMask.Paths = append(fieldMask.Paths, path.(AuditedResourceDescriptor_FieldPath))
   259  }
   260  
   261  func (fieldMask *AuditedResourceDescriptor_FieldMask) GetPaths() []AuditedResourceDescriptor_FieldPath {
   262  	if fieldMask == nil {
   263  		return nil
   264  	}
   265  	return fieldMask.Paths
   266  }
   267  
   268  func (fieldMask *AuditedResourceDescriptor_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   269  	if fieldMask == nil {
   270  		return nil
   271  	}
   272  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   273  	for _, path := range fieldMask.Paths {
   274  		rawPaths = append(rawPaths, path)
   275  	}
   276  	return rawPaths
   277  }
   278  
   279  func (fieldMask *AuditedResourceDescriptor_FieldMask) SetFromCliFlag(raw string) error {
   280  	path, err := ParseAuditedResourceDescriptor_FieldPath(raw)
   281  	if err != nil {
   282  		return err
   283  	}
   284  	fieldMask.Paths = append(fieldMask.Paths, path)
   285  	return nil
   286  }
   287  
   288  func (fieldMask *AuditedResourceDescriptor_FieldMask) Set(target, source *AuditedResourceDescriptor) {
   289  	for _, path := range fieldMask.Paths {
   290  		val, _ := path.GetSingle(source)
   291  		// if val is nil, then field does not exist in source, skip
   292  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   293  		if val != nil {
   294  			path.WithIValue(val).SetTo(&target)
   295  		}
   296  	}
   297  }
   298  
   299  func (fieldMask *AuditedResourceDescriptor_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   300  	fieldMask.Set(target.(*AuditedResourceDescriptor), source.(*AuditedResourceDescriptor))
   301  }
   302  
   303  func (fieldMask *AuditedResourceDescriptor_FieldMask) Project(source *AuditedResourceDescriptor) *AuditedResourceDescriptor {
   304  	if source == nil {
   305  		return nil
   306  	}
   307  	if fieldMask == nil {
   308  		return source
   309  	}
   310  	result := &AuditedResourceDescriptor{}
   311  	labelsMask := &common.LabelDescriptor_FieldMask{}
   312  	wholeLabelsAccepted := false
   313  	promotedLabelKeySetsMask := &common.LabelKeySet_FieldMask{}
   314  	wholePromotedLabelKeySetsAccepted := false
   315  	metadataMask := &meta.Meta_FieldMask{}
   316  	wholeMetadataAccepted := false
   317  
   318  	for _, p := range fieldMask.Paths {
   319  		switch tp := p.(type) {
   320  		case *AuditedResourceDescriptor_FieldTerminalPath:
   321  			switch tp.selector {
   322  			case AuditedResourceDescriptor_FieldPathSelectorName:
   323  				result.Name = source.Name
   324  			case AuditedResourceDescriptor_FieldPathSelectorDisplayName:
   325  				result.DisplayName = source.DisplayName
   326  			case AuditedResourceDescriptor_FieldPathSelectorDescription:
   327  				result.Description = source.Description
   328  			case AuditedResourceDescriptor_FieldPathSelectorLabels:
   329  				result.Labels = source.Labels
   330  				wholeLabelsAccepted = true
   331  			case AuditedResourceDescriptor_FieldPathSelectorPromotedLabelKeySets:
   332  				result.PromotedLabelKeySets = source.PromotedLabelKeySets
   333  				wholePromotedLabelKeySetsAccepted = true
   334  			case AuditedResourceDescriptor_FieldPathSelectorVersions:
   335  				result.Versions = source.Versions
   336  			case AuditedResourceDescriptor_FieldPathSelectorSpecFields:
   337  				result.SpecFields = source.SpecFields
   338  			case AuditedResourceDescriptor_FieldPathSelectorStateFields:
   339  				result.StateFields = source.StateFields
   340  			case AuditedResourceDescriptor_FieldPathSelectorMetaFields:
   341  				result.MetaFields = source.MetaFields
   342  			case AuditedResourceDescriptor_FieldPathSelectorMetadata:
   343  				result.Metadata = source.Metadata
   344  				wholeMetadataAccepted = true
   345  			}
   346  		case *AuditedResourceDescriptor_FieldSubPath:
   347  			switch tp.selector {
   348  			case AuditedResourceDescriptor_FieldPathSelectorLabels:
   349  				labelsMask.AppendPath(tp.subPath.(common.LabelDescriptor_FieldPath))
   350  			case AuditedResourceDescriptor_FieldPathSelectorPromotedLabelKeySets:
   351  				promotedLabelKeySetsMask.AppendPath(tp.subPath.(common.LabelKeySet_FieldPath))
   352  			case AuditedResourceDescriptor_FieldPathSelectorMetadata:
   353  				metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath))
   354  			}
   355  		}
   356  	}
   357  	if wholeLabelsAccepted == false && len(labelsMask.Paths) > 0 {
   358  		for _, sourceItem := range source.GetLabels() {
   359  			result.Labels = append(result.Labels, labelsMask.Project(sourceItem))
   360  		}
   361  	}
   362  	if wholePromotedLabelKeySetsAccepted == false && len(promotedLabelKeySetsMask.Paths) > 0 {
   363  		for _, sourceItem := range source.GetPromotedLabelKeySets() {
   364  			result.PromotedLabelKeySets = append(result.PromotedLabelKeySets, promotedLabelKeySetsMask.Project(sourceItem))
   365  		}
   366  	}
   367  	if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 {
   368  		result.Metadata = metadataMask.Project(source.GetMetadata())
   369  	}
   370  	return result
   371  }
   372  
   373  func (fieldMask *AuditedResourceDescriptor_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   374  	return fieldMask.Project(source.(*AuditedResourceDescriptor))
   375  }
   376  
   377  func (fieldMask *AuditedResourceDescriptor_FieldMask) PathsCount() int {
   378  	if fieldMask == nil {
   379  		return 0
   380  	}
   381  	return len(fieldMask.Paths)
   382  }