github.com/cloudwan/edgelq-sdk@v1.15.4/limits/resources/v1/plan/plan.pb.fieldmask.go (about)

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/limits/proto/v1/plan.proto
     3  // DO NOT EDIT!!!
     4  
     5  package plan
     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  	iam_iam_common "github.com/cloudwan/edgelq-sdk/iam/resources/v1/common"
    23  	iam_organization "github.com/cloudwan/edgelq-sdk/iam/resources/v1/organization"
    24  	meta_resource "github.com/cloudwan/goten-sdk/meta-service/resources/v1/resource"
    25  	meta_service "github.com/cloudwan/goten-sdk/meta-service/resources/v1/service"
    26  	meta "github.com/cloudwan/goten-sdk/types/meta"
    27  )
    28  
    29  // ensure the imports are used
    30  var (
    31  	_ = new(json.Marshaler)
    32  	_ = strings.Builder{}
    33  
    34  	_ = codes.NotFound
    35  	_ = status.Status{}
    36  	_ = new(proto.Message)
    37  	_ = new(preflect.Message)
    38  	_ = googlefieldmaskpb.FieldMask{}
    39  
    40  	_ = new(gotenobject.FieldMask)
    41  )
    42  
    43  // make sure we're using proto imports
    44  var (
    45  	_ = &iam_iam_common.PCR{}
    46  	_ = &iam_organization.Organization{}
    47  	_ = &meta_resource.Resource{}
    48  	_ = &meta_service.Service{}
    49  	_ = &meta.Meta{}
    50  )
    51  
    52  type Plan_FieldMask struct {
    53  	Paths []Plan_FieldPath
    54  }
    55  
    56  func FullPlan_FieldMask() *Plan_FieldMask {
    57  	res := &Plan_FieldMask{}
    58  	res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorName})
    59  	res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorMetadata})
    60  	res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorDisplayName})
    61  	res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorService})
    62  	res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorResourceLimits})
    63  	res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorPlanLevel})
    64  	res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorBusinessTier})
    65  	res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorGeneration})
    66  	return res
    67  }
    68  
    69  func (fieldMask *Plan_FieldMask) String() string {
    70  	if fieldMask == nil {
    71  		return "<nil>"
    72  	}
    73  	pathsStr := make([]string, 0, len(fieldMask.Paths))
    74  	for _, path := range fieldMask.Paths {
    75  		pathsStr = append(pathsStr, path.String())
    76  	}
    77  	return strings.Join(pathsStr, ", ")
    78  }
    79  
    80  func (fieldMask *Plan_FieldMask) IsFull() bool {
    81  	if fieldMask == nil {
    82  		return false
    83  	}
    84  	presentSelectors := make([]bool, 8)
    85  	for _, path := range fieldMask.Paths {
    86  		if asFinal, ok := path.(*Plan_FieldTerminalPath); ok {
    87  			presentSelectors[int(asFinal.selector)] = true
    88  		}
    89  	}
    90  	for _, flag := range presentSelectors {
    91  		if !flag {
    92  			return false
    93  		}
    94  	}
    95  	return true
    96  }
    97  
    98  func (fieldMask *Plan_FieldMask) ProtoReflect() preflect.Message {
    99  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   100  		return ParsePlan_FieldPath(raw)
   101  	})
   102  }
   103  
   104  func (fieldMask *Plan_FieldMask) ProtoMessage() {}
   105  
   106  func (fieldMask *Plan_FieldMask) Reset() {
   107  	if fieldMask != nil {
   108  		fieldMask.Paths = nil
   109  	}
   110  }
   111  
   112  func (fieldMask *Plan_FieldMask) Subtract(other *Plan_FieldMask) *Plan_FieldMask {
   113  	result := &Plan_FieldMask{}
   114  	removedSelectors := make([]bool, 8)
   115  	otherSubMasks := map[Plan_FieldPathSelector]gotenobject.FieldMask{
   116  		Plan_FieldPathSelectorMetadata:       &meta.Meta_FieldMask{},
   117  		Plan_FieldPathSelectorResourceLimits: &Plan_LimitValue_FieldMask{},
   118  	}
   119  	mySubMasks := map[Plan_FieldPathSelector]gotenobject.FieldMask{
   120  		Plan_FieldPathSelectorMetadata:       &meta.Meta_FieldMask{},
   121  		Plan_FieldPathSelectorResourceLimits: &Plan_LimitValue_FieldMask{},
   122  	}
   123  
   124  	for _, path := range other.GetPaths() {
   125  		switch tp := path.(type) {
   126  		case *Plan_FieldTerminalPath:
   127  			removedSelectors[int(tp.selector)] = true
   128  		case *Plan_FieldSubPath:
   129  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
   130  		}
   131  	}
   132  	for _, path := range fieldMask.GetPaths() {
   133  		if !removedSelectors[int(path.Selector())] {
   134  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
   135  				if tp, ok := path.(*Plan_FieldTerminalPath); ok {
   136  					switch tp.selector {
   137  					case Plan_FieldPathSelectorMetadata:
   138  						mySubMasks[Plan_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask()
   139  					case Plan_FieldPathSelectorResourceLimits:
   140  						mySubMasks[Plan_FieldPathSelectorResourceLimits] = FullPlan_LimitValue_FieldMask()
   141  					}
   142  				} else if tp, ok := path.(*Plan_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, &Plan_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 *Plan_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   165  	return fieldMask.Subtract(other.(*Plan_FieldMask))
   166  }
   167  
   168  // FilterInputFields generates copy of field paths with output_only field paths removed
   169  func (fieldMask *Plan_FieldMask) FilterInputFields() *Plan_FieldMask {
   170  	result := &Plan_FieldMask{}
   171  	for _, path := range fieldMask.Paths {
   172  		switch path.Selector() {
   173  		case Plan_FieldPathSelectorGeneration:
   174  		case Plan_FieldPathSelectorMetadata:
   175  			if _, ok := path.(*Plan_FieldTerminalPath); ok {
   176  				for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths {
   177  					result.Paths = append(result.Paths, &Plan_FieldSubPath{selector: path.Selector(), subPath: subpath})
   178  				}
   179  			} else if sub, ok := path.(*Plan_FieldSubPath); ok {
   180  				selectedMask := &meta.Meta_FieldMask{
   181  					Paths: []meta.Meta_FieldPath{sub.subPath.(meta.Meta_FieldPath)},
   182  				}
   183  				for _, allowedPath := range selectedMask.FilterInputFields().Paths {
   184  					result.Paths = append(result.Paths, &Plan_FieldSubPath{selector: Plan_FieldPathSelectorMetadata, subPath: allowedPath})
   185  				}
   186  			}
   187  		default:
   188  			result.Paths = append(result.Paths, path)
   189  		}
   190  	}
   191  	return result
   192  }
   193  
   194  // ToFieldMask is used for proto conversions
   195  func (fieldMask *Plan_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   196  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   197  	for _, path := range fieldMask.Paths {
   198  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   199  	}
   200  	return protoFieldMask
   201  }
   202  
   203  func (fieldMask *Plan_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   204  	if fieldMask == nil {
   205  		return status.Error(codes.Internal, "target field mask is nil")
   206  	}
   207  	fieldMask.Paths = make([]Plan_FieldPath, 0, len(protoFieldMask.Paths))
   208  	for _, strPath := range protoFieldMask.Paths {
   209  		path, err := ParsePlan_FieldPath(strPath)
   210  		if err != nil {
   211  			return err
   212  		}
   213  		fieldMask.Paths = append(fieldMask.Paths, path)
   214  	}
   215  	return nil
   216  }
   217  
   218  // implement methods required by customType
   219  func (fieldMask Plan_FieldMask) Marshal() ([]byte, error) {
   220  	protoFieldMask := fieldMask.ToProtoFieldMask()
   221  	return proto.Marshal(protoFieldMask)
   222  }
   223  
   224  func (fieldMask *Plan_FieldMask) Unmarshal(data []byte) error {
   225  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   226  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   227  		return err
   228  	}
   229  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   230  		return err
   231  	}
   232  	return nil
   233  }
   234  
   235  func (fieldMask *Plan_FieldMask) Size() int {
   236  	return proto.Size(fieldMask.ToProtoFieldMask())
   237  }
   238  
   239  func (fieldMask Plan_FieldMask) MarshalJSON() ([]byte, error) {
   240  	return json.Marshal(fieldMask.ToProtoFieldMask())
   241  }
   242  
   243  func (fieldMask *Plan_FieldMask) UnmarshalJSON(data []byte) error {
   244  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   245  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   246  		return err
   247  	}
   248  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   249  		return err
   250  	}
   251  	return nil
   252  }
   253  
   254  func (fieldMask *Plan_FieldMask) AppendPath(path Plan_FieldPath) {
   255  	fieldMask.Paths = append(fieldMask.Paths, path)
   256  }
   257  
   258  func (fieldMask *Plan_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   259  	fieldMask.Paths = append(fieldMask.Paths, path.(Plan_FieldPath))
   260  }
   261  
   262  func (fieldMask *Plan_FieldMask) GetPaths() []Plan_FieldPath {
   263  	if fieldMask == nil {
   264  		return nil
   265  	}
   266  	return fieldMask.Paths
   267  }
   268  
   269  func (fieldMask *Plan_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   270  	if fieldMask == nil {
   271  		return nil
   272  	}
   273  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   274  	for _, path := range fieldMask.Paths {
   275  		rawPaths = append(rawPaths, path)
   276  	}
   277  	return rawPaths
   278  }
   279  
   280  func (fieldMask *Plan_FieldMask) SetFromCliFlag(raw string) error {
   281  	path, err := ParsePlan_FieldPath(raw)
   282  	if err != nil {
   283  		return err
   284  	}
   285  	fieldMask.Paths = append(fieldMask.Paths, path)
   286  	return nil
   287  }
   288  
   289  func (fieldMask *Plan_FieldMask) Set(target, source *Plan) {
   290  	for _, path := range fieldMask.Paths {
   291  		val, _ := path.GetSingle(source)
   292  		// if val is nil, then field does not exist in source, skip
   293  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   294  		if val != nil {
   295  			path.WithIValue(val).SetTo(&target)
   296  		}
   297  	}
   298  }
   299  
   300  func (fieldMask *Plan_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   301  	fieldMask.Set(target.(*Plan), source.(*Plan))
   302  }
   303  
   304  func (fieldMask *Plan_FieldMask) Project(source *Plan) *Plan {
   305  	if source == nil {
   306  		return nil
   307  	}
   308  	if fieldMask == nil {
   309  		return source
   310  	}
   311  	result := &Plan{}
   312  	metadataMask := &meta.Meta_FieldMask{}
   313  	wholeMetadataAccepted := false
   314  	resourceLimitsMask := &Plan_LimitValue_FieldMask{}
   315  	wholeResourceLimitsAccepted := false
   316  
   317  	for _, p := range fieldMask.Paths {
   318  		switch tp := p.(type) {
   319  		case *Plan_FieldTerminalPath:
   320  			switch tp.selector {
   321  			case Plan_FieldPathSelectorName:
   322  				result.Name = source.Name
   323  			case Plan_FieldPathSelectorMetadata:
   324  				result.Metadata = source.Metadata
   325  				wholeMetadataAccepted = true
   326  			case Plan_FieldPathSelectorDisplayName:
   327  				result.DisplayName = source.DisplayName
   328  			case Plan_FieldPathSelectorService:
   329  				result.Service = source.Service
   330  			case Plan_FieldPathSelectorResourceLimits:
   331  				result.ResourceLimits = source.ResourceLimits
   332  				wholeResourceLimitsAccepted = true
   333  			case Plan_FieldPathSelectorPlanLevel:
   334  				result.PlanLevel = source.PlanLevel
   335  			case Plan_FieldPathSelectorBusinessTier:
   336  				result.BusinessTier = source.BusinessTier
   337  			case Plan_FieldPathSelectorGeneration:
   338  				result.Generation = source.Generation
   339  			}
   340  		case *Plan_FieldSubPath:
   341  			switch tp.selector {
   342  			case Plan_FieldPathSelectorMetadata:
   343  				metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath))
   344  			case Plan_FieldPathSelectorResourceLimits:
   345  				resourceLimitsMask.AppendPath(tp.subPath.(PlanLimitValue_FieldPath))
   346  			}
   347  		}
   348  	}
   349  	if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 {
   350  		result.Metadata = metadataMask.Project(source.GetMetadata())
   351  	}
   352  	if wholeResourceLimitsAccepted == false && len(resourceLimitsMask.Paths) > 0 {
   353  		for _, sourceItem := range source.GetResourceLimits() {
   354  			result.ResourceLimits = append(result.ResourceLimits, resourceLimitsMask.Project(sourceItem))
   355  		}
   356  	}
   357  	return result
   358  }
   359  
   360  func (fieldMask *Plan_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   361  	return fieldMask.Project(source.(*Plan))
   362  }
   363  
   364  func (fieldMask *Plan_FieldMask) PathsCount() int {
   365  	if fieldMask == nil {
   366  		return 0
   367  	}
   368  	return len(fieldMask.Paths)
   369  }
   370  
   371  type Plan_LimitValue_FieldMask struct {
   372  	Paths []PlanLimitValue_FieldPath
   373  }
   374  
   375  func FullPlan_LimitValue_FieldMask() *Plan_LimitValue_FieldMask {
   376  	res := &Plan_LimitValue_FieldMask{}
   377  	res.Paths = append(res.Paths, &PlanLimitValue_FieldTerminalPath{selector: PlanLimitValue_FieldPathSelectorResource})
   378  	res.Paths = append(res.Paths, &PlanLimitValue_FieldTerminalPath{selector: PlanLimitValue_FieldPathSelectorValue})
   379  	return res
   380  }
   381  
   382  func (fieldMask *Plan_LimitValue_FieldMask) String() string {
   383  	if fieldMask == nil {
   384  		return "<nil>"
   385  	}
   386  	pathsStr := make([]string, 0, len(fieldMask.Paths))
   387  	for _, path := range fieldMask.Paths {
   388  		pathsStr = append(pathsStr, path.String())
   389  	}
   390  	return strings.Join(pathsStr, ", ")
   391  }
   392  
   393  func (fieldMask *Plan_LimitValue_FieldMask) IsFull() bool {
   394  	if fieldMask == nil {
   395  		return false
   396  	}
   397  	presentSelectors := make([]bool, 2)
   398  	for _, path := range fieldMask.Paths {
   399  		if asFinal, ok := path.(*PlanLimitValue_FieldTerminalPath); ok {
   400  			presentSelectors[int(asFinal.selector)] = true
   401  		}
   402  	}
   403  	for _, flag := range presentSelectors {
   404  		if !flag {
   405  			return false
   406  		}
   407  	}
   408  	return true
   409  }
   410  
   411  func (fieldMask *Plan_LimitValue_FieldMask) ProtoReflect() preflect.Message {
   412  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   413  		return ParsePlanLimitValue_FieldPath(raw)
   414  	})
   415  }
   416  
   417  func (fieldMask *Plan_LimitValue_FieldMask) ProtoMessage() {}
   418  
   419  func (fieldMask *Plan_LimitValue_FieldMask) Reset() {
   420  	if fieldMask != nil {
   421  		fieldMask.Paths = nil
   422  	}
   423  }
   424  
   425  func (fieldMask *Plan_LimitValue_FieldMask) Subtract(other *Plan_LimitValue_FieldMask) *Plan_LimitValue_FieldMask {
   426  	result := &Plan_LimitValue_FieldMask{}
   427  	removedSelectors := make([]bool, 2)
   428  
   429  	for _, path := range other.GetPaths() {
   430  		switch tp := path.(type) {
   431  		case *PlanLimitValue_FieldTerminalPath:
   432  			removedSelectors[int(tp.selector)] = true
   433  		}
   434  	}
   435  	for _, path := range fieldMask.GetPaths() {
   436  		if !removedSelectors[int(path.Selector())] {
   437  			result.Paths = append(result.Paths, path)
   438  		}
   439  	}
   440  
   441  	if len(result.Paths) == 0 {
   442  		return nil
   443  	}
   444  	return result
   445  }
   446  
   447  func (fieldMask *Plan_LimitValue_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   448  	return fieldMask.Subtract(other.(*Plan_LimitValue_FieldMask))
   449  }
   450  
   451  // FilterInputFields generates copy of field paths with output_only field paths removed
   452  func (fieldMask *Plan_LimitValue_FieldMask) FilterInputFields() *Plan_LimitValue_FieldMask {
   453  	result := &Plan_LimitValue_FieldMask{}
   454  	result.Paths = append(result.Paths, fieldMask.Paths...)
   455  	return result
   456  }
   457  
   458  // ToFieldMask is used for proto conversions
   459  func (fieldMask *Plan_LimitValue_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   460  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   461  	for _, path := range fieldMask.Paths {
   462  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   463  	}
   464  	return protoFieldMask
   465  }
   466  
   467  func (fieldMask *Plan_LimitValue_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   468  	if fieldMask == nil {
   469  		return status.Error(codes.Internal, "target field mask is nil")
   470  	}
   471  	fieldMask.Paths = make([]PlanLimitValue_FieldPath, 0, len(protoFieldMask.Paths))
   472  	for _, strPath := range protoFieldMask.Paths {
   473  		path, err := ParsePlanLimitValue_FieldPath(strPath)
   474  		if err != nil {
   475  			return err
   476  		}
   477  		fieldMask.Paths = append(fieldMask.Paths, path)
   478  	}
   479  	return nil
   480  }
   481  
   482  // implement methods required by customType
   483  func (fieldMask Plan_LimitValue_FieldMask) Marshal() ([]byte, error) {
   484  	protoFieldMask := fieldMask.ToProtoFieldMask()
   485  	return proto.Marshal(protoFieldMask)
   486  }
   487  
   488  func (fieldMask *Plan_LimitValue_FieldMask) Unmarshal(data []byte) error {
   489  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   490  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   491  		return err
   492  	}
   493  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   494  		return err
   495  	}
   496  	return nil
   497  }
   498  
   499  func (fieldMask *Plan_LimitValue_FieldMask) Size() int {
   500  	return proto.Size(fieldMask.ToProtoFieldMask())
   501  }
   502  
   503  func (fieldMask Plan_LimitValue_FieldMask) MarshalJSON() ([]byte, error) {
   504  	return json.Marshal(fieldMask.ToProtoFieldMask())
   505  }
   506  
   507  func (fieldMask *Plan_LimitValue_FieldMask) UnmarshalJSON(data []byte) error {
   508  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   509  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   510  		return err
   511  	}
   512  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   513  		return err
   514  	}
   515  	return nil
   516  }
   517  
   518  func (fieldMask *Plan_LimitValue_FieldMask) AppendPath(path PlanLimitValue_FieldPath) {
   519  	fieldMask.Paths = append(fieldMask.Paths, path)
   520  }
   521  
   522  func (fieldMask *Plan_LimitValue_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   523  	fieldMask.Paths = append(fieldMask.Paths, path.(PlanLimitValue_FieldPath))
   524  }
   525  
   526  func (fieldMask *Plan_LimitValue_FieldMask) GetPaths() []PlanLimitValue_FieldPath {
   527  	if fieldMask == nil {
   528  		return nil
   529  	}
   530  	return fieldMask.Paths
   531  }
   532  
   533  func (fieldMask *Plan_LimitValue_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   534  	if fieldMask == nil {
   535  		return nil
   536  	}
   537  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   538  	for _, path := range fieldMask.Paths {
   539  		rawPaths = append(rawPaths, path)
   540  	}
   541  	return rawPaths
   542  }
   543  
   544  func (fieldMask *Plan_LimitValue_FieldMask) SetFromCliFlag(raw string) error {
   545  	path, err := ParsePlanLimitValue_FieldPath(raw)
   546  	if err != nil {
   547  		return err
   548  	}
   549  	fieldMask.Paths = append(fieldMask.Paths, path)
   550  	return nil
   551  }
   552  
   553  func (fieldMask *Plan_LimitValue_FieldMask) Set(target, source *Plan_LimitValue) {
   554  	for _, path := range fieldMask.Paths {
   555  		val, _ := path.GetSingle(source)
   556  		// if val is nil, then field does not exist in source, skip
   557  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   558  		if val != nil {
   559  			path.WithIValue(val).SetTo(&target)
   560  		}
   561  	}
   562  }
   563  
   564  func (fieldMask *Plan_LimitValue_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   565  	fieldMask.Set(target.(*Plan_LimitValue), source.(*Plan_LimitValue))
   566  }
   567  
   568  func (fieldMask *Plan_LimitValue_FieldMask) Project(source *Plan_LimitValue) *Plan_LimitValue {
   569  	if source == nil {
   570  		return nil
   571  	}
   572  	if fieldMask == nil {
   573  		return source
   574  	}
   575  	result := &Plan_LimitValue{}
   576  
   577  	for _, p := range fieldMask.Paths {
   578  		switch tp := p.(type) {
   579  		case *PlanLimitValue_FieldTerminalPath:
   580  			switch tp.selector {
   581  			case PlanLimitValue_FieldPathSelectorResource:
   582  				result.Resource = source.Resource
   583  			case PlanLimitValue_FieldPathSelectorValue:
   584  				result.Value = source.Value
   585  			}
   586  		}
   587  	}
   588  	return result
   589  }
   590  
   591  func (fieldMask *Plan_LimitValue_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   592  	return fieldMask.Project(source.(*Plan_LimitValue))
   593  }
   594  
   595  func (fieldMask *Plan_LimitValue_FieldMask) PathsCount() int {
   596  	if fieldMask == nil {
   597  		return 0
   598  	}
   599  	return len(fieldMask.Paths)
   600  }