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

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/limits/proto/v1/accepted_plan.proto
     3  // DO NOT EDIT!!!
     4  
     5  package accepted_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_organization "github.com/cloudwan/edgelq-sdk/iam/resources/v1/organization"
    23  	iam_project "github.com/cloudwan/edgelq-sdk/iam/resources/v1/project"
    24  	common "github.com/cloudwan/edgelq-sdk/limits/resources/v1/common"
    25  	plan "github.com/cloudwan/edgelq-sdk/limits/resources/v1/plan"
    26  	meta_service "github.com/cloudwan/goten-sdk/meta-service/resources/v1/service"
    27  	meta "github.com/cloudwan/goten-sdk/types/meta"
    28  )
    29  
    30  // ensure the imports are used
    31  var (
    32  	_ = new(json.Marshaler)
    33  	_ = strings.Builder{}
    34  
    35  	_ = codes.NotFound
    36  	_ = status.Status{}
    37  	_ = new(proto.Message)
    38  	_ = new(preflect.Message)
    39  	_ = googlefieldmaskpb.FieldMask{}
    40  
    41  	_ = new(gotenobject.FieldMask)
    42  )
    43  
    44  // make sure we're using proto imports
    45  var (
    46  	_ = &iam_organization.Organization{}
    47  	_ = &iam_project.Project{}
    48  	_ = &common.RegionalPlanAssignment{}
    49  	_ = &plan.Plan{}
    50  	_ = &meta_service.Service{}
    51  	_ = &meta.Meta{}
    52  )
    53  
    54  type AcceptedPlan_FieldMask struct {
    55  	Paths []AcceptedPlan_FieldPath
    56  }
    57  
    58  func FullAcceptedPlan_FieldMask() *AcceptedPlan_FieldMask {
    59  	res := &AcceptedPlan_FieldMask{}
    60  	res.Paths = append(res.Paths, &AcceptedPlan_FieldTerminalPath{selector: AcceptedPlan_FieldPathSelectorName})
    61  	res.Paths = append(res.Paths, &AcceptedPlan_FieldTerminalPath{selector: AcceptedPlan_FieldPathSelectorMetadata})
    62  	res.Paths = append(res.Paths, &AcceptedPlan_FieldTerminalPath{selector: AcceptedPlan_FieldPathSelectorDefaultRegionalPlan})
    63  	res.Paths = append(res.Paths, &AcceptedPlan_FieldTerminalPath{selector: AcceptedPlan_FieldPathSelectorService})
    64  	res.Paths = append(res.Paths, &AcceptedPlan_FieldTerminalPath{selector: AcceptedPlan_FieldPathSelectorRegionalPlanOverrides})
    65  	res.Paths = append(res.Paths, &AcceptedPlan_FieldTerminalPath{selector: AcceptedPlan_FieldPathSelectorExtensions})
    66  	res.Paths = append(res.Paths, &AcceptedPlan_FieldTerminalPath{selector: AcceptedPlan_FieldPathSelectorAllowances})
    67  	res.Paths = append(res.Paths, &AcceptedPlan_FieldTerminalPath{selector: AcceptedPlan_FieldPathSelectorAppliedRegions})
    68  	res.Paths = append(res.Paths, &AcceptedPlan_FieldTerminalPath{selector: AcceptedPlan_FieldPathSelectorAppliedPlanSpecGeneration})
    69  	res.Paths = append(res.Paths, &AcceptedPlan_FieldTerminalPath{selector: AcceptedPlan_FieldPathSelectorAssignee})
    70  	return res
    71  }
    72  
    73  func (fieldMask *AcceptedPlan_FieldMask) String() string {
    74  	if fieldMask == nil {
    75  		return "<nil>"
    76  	}
    77  	pathsStr := make([]string, 0, len(fieldMask.Paths))
    78  	for _, path := range fieldMask.Paths {
    79  		pathsStr = append(pathsStr, path.String())
    80  	}
    81  	return strings.Join(pathsStr, ", ")
    82  }
    83  
    84  func (fieldMask *AcceptedPlan_FieldMask) IsFull() bool {
    85  	if fieldMask == nil {
    86  		return false
    87  	}
    88  	presentSelectors := make([]bool, 10)
    89  	for _, path := range fieldMask.Paths {
    90  		if asFinal, ok := path.(*AcceptedPlan_FieldTerminalPath); ok {
    91  			presentSelectors[int(asFinal.selector)] = true
    92  		}
    93  	}
    94  	for _, flag := range presentSelectors {
    95  		if !flag {
    96  			return false
    97  		}
    98  	}
    99  	return true
   100  }
   101  
   102  func (fieldMask *AcceptedPlan_FieldMask) ProtoReflect() preflect.Message {
   103  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   104  		return ParseAcceptedPlan_FieldPath(raw)
   105  	})
   106  }
   107  
   108  func (fieldMask *AcceptedPlan_FieldMask) ProtoMessage() {}
   109  
   110  func (fieldMask *AcceptedPlan_FieldMask) Reset() {
   111  	if fieldMask != nil {
   112  		fieldMask.Paths = nil
   113  	}
   114  }
   115  
   116  func (fieldMask *AcceptedPlan_FieldMask) Subtract(other *AcceptedPlan_FieldMask) *AcceptedPlan_FieldMask {
   117  	result := &AcceptedPlan_FieldMask{}
   118  	removedSelectors := make([]bool, 10)
   119  	otherSubMasks := map[AcceptedPlan_FieldPathSelector]gotenobject.FieldMask{
   120  		AcceptedPlan_FieldPathSelectorMetadata:              &meta.Meta_FieldMask{},
   121  		AcceptedPlan_FieldPathSelectorRegionalPlanOverrides: &common.RegionalPlanAssignment_FieldMask{},
   122  		AcceptedPlan_FieldPathSelectorExtensions:            &common.Allowance_FieldMask{},
   123  		AcceptedPlan_FieldPathSelectorAllowances:            &common.Allowance_FieldMask{},
   124  		AcceptedPlan_FieldPathSelectorAssignee:              &AcceptedPlan_Assignee_FieldMask{},
   125  	}
   126  	mySubMasks := map[AcceptedPlan_FieldPathSelector]gotenobject.FieldMask{
   127  		AcceptedPlan_FieldPathSelectorMetadata:              &meta.Meta_FieldMask{},
   128  		AcceptedPlan_FieldPathSelectorRegionalPlanOverrides: &common.RegionalPlanAssignment_FieldMask{},
   129  		AcceptedPlan_FieldPathSelectorExtensions:            &common.Allowance_FieldMask{},
   130  		AcceptedPlan_FieldPathSelectorAllowances:            &common.Allowance_FieldMask{},
   131  		AcceptedPlan_FieldPathSelectorAssignee:              &AcceptedPlan_Assignee_FieldMask{},
   132  	}
   133  
   134  	for _, path := range other.GetPaths() {
   135  		switch tp := path.(type) {
   136  		case *AcceptedPlan_FieldTerminalPath:
   137  			removedSelectors[int(tp.selector)] = true
   138  		case *AcceptedPlan_FieldSubPath:
   139  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
   140  		}
   141  	}
   142  	for _, path := range fieldMask.GetPaths() {
   143  		if !removedSelectors[int(path.Selector())] {
   144  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
   145  				if tp, ok := path.(*AcceptedPlan_FieldTerminalPath); ok {
   146  					switch tp.selector {
   147  					case AcceptedPlan_FieldPathSelectorMetadata:
   148  						mySubMasks[AcceptedPlan_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask()
   149  					case AcceptedPlan_FieldPathSelectorRegionalPlanOverrides:
   150  						mySubMasks[AcceptedPlan_FieldPathSelectorRegionalPlanOverrides] = common.FullRegionalPlanAssignment_FieldMask()
   151  					case AcceptedPlan_FieldPathSelectorExtensions:
   152  						mySubMasks[AcceptedPlan_FieldPathSelectorExtensions] = common.FullAllowance_FieldMask()
   153  					case AcceptedPlan_FieldPathSelectorAllowances:
   154  						mySubMasks[AcceptedPlan_FieldPathSelectorAllowances] = common.FullAllowance_FieldMask()
   155  					case AcceptedPlan_FieldPathSelectorAssignee:
   156  						mySubMasks[AcceptedPlan_FieldPathSelectorAssignee] = FullAcceptedPlan_Assignee_FieldMask()
   157  					}
   158  				} else if tp, ok := path.(*AcceptedPlan_FieldSubPath); ok {
   159  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
   160  				}
   161  			} else {
   162  				result.Paths = append(result.Paths, path)
   163  			}
   164  		}
   165  	}
   166  	for selector, mySubMask := range mySubMasks {
   167  		if mySubMask.PathsCount() > 0 {
   168  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
   169  				result.Paths = append(result.Paths, &AcceptedPlan_FieldSubPath{selector: selector, subPath: allowedPath})
   170  			}
   171  		}
   172  	}
   173  
   174  	if len(result.Paths) == 0 {
   175  		return nil
   176  	}
   177  	return result
   178  }
   179  
   180  func (fieldMask *AcceptedPlan_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   181  	return fieldMask.Subtract(other.(*AcceptedPlan_FieldMask))
   182  }
   183  
   184  // FilterInputFields generates copy of field paths with output_only field paths removed
   185  func (fieldMask *AcceptedPlan_FieldMask) FilterInputFields() *AcceptedPlan_FieldMask {
   186  	result := &AcceptedPlan_FieldMask{}
   187  	for _, path := range fieldMask.Paths {
   188  		switch path.Selector() {
   189  		case AcceptedPlan_FieldPathSelectorService:
   190  		case AcceptedPlan_FieldPathSelectorAllowances:
   191  		case AcceptedPlan_FieldPathSelectorAppliedRegions:
   192  		case AcceptedPlan_FieldPathSelectorAppliedPlanSpecGeneration:
   193  		case AcceptedPlan_FieldPathSelectorMetadata:
   194  			if _, ok := path.(*AcceptedPlan_FieldTerminalPath); ok {
   195  				for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths {
   196  					result.Paths = append(result.Paths, &AcceptedPlan_FieldSubPath{selector: path.Selector(), subPath: subpath})
   197  				}
   198  			} else if sub, ok := path.(*AcceptedPlan_FieldSubPath); ok {
   199  				selectedMask := &meta.Meta_FieldMask{
   200  					Paths: []meta.Meta_FieldPath{sub.subPath.(meta.Meta_FieldPath)},
   201  				}
   202  				for _, allowedPath := range selectedMask.FilterInputFields().Paths {
   203  					result.Paths = append(result.Paths, &AcceptedPlan_FieldSubPath{selector: AcceptedPlan_FieldPathSelectorMetadata, subPath: allowedPath})
   204  				}
   205  			}
   206  		case AcceptedPlan_FieldPathSelectorRegionalPlanOverrides:
   207  			if _, ok := path.(*AcceptedPlan_FieldTerminalPath); ok {
   208  				for _, subpath := range common.FullRegionalPlanAssignment_FieldMask().FilterInputFields().Paths {
   209  					result.Paths = append(result.Paths, &AcceptedPlan_FieldSubPath{selector: path.Selector(), subPath: subpath})
   210  				}
   211  			} else if sub, ok := path.(*AcceptedPlan_FieldSubPath); ok {
   212  				selectedMask := &common.RegionalPlanAssignment_FieldMask{
   213  					Paths: []common.RegionalPlanAssignment_FieldPath{sub.subPath.(common.RegionalPlanAssignment_FieldPath)},
   214  				}
   215  				for _, allowedPath := range selectedMask.FilterInputFields().Paths {
   216  					result.Paths = append(result.Paths, &AcceptedPlan_FieldSubPath{selector: AcceptedPlan_FieldPathSelectorRegionalPlanOverrides, subPath: allowedPath})
   217  				}
   218  			}
   219  		default:
   220  			result.Paths = append(result.Paths, path)
   221  		}
   222  	}
   223  	return result
   224  }
   225  
   226  // ToFieldMask is used for proto conversions
   227  func (fieldMask *AcceptedPlan_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   228  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   229  	for _, path := range fieldMask.Paths {
   230  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   231  	}
   232  	return protoFieldMask
   233  }
   234  
   235  func (fieldMask *AcceptedPlan_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   236  	if fieldMask == nil {
   237  		return status.Error(codes.Internal, "target field mask is nil")
   238  	}
   239  	fieldMask.Paths = make([]AcceptedPlan_FieldPath, 0, len(protoFieldMask.Paths))
   240  	for _, strPath := range protoFieldMask.Paths {
   241  		path, err := ParseAcceptedPlan_FieldPath(strPath)
   242  		if err != nil {
   243  			return err
   244  		}
   245  		fieldMask.Paths = append(fieldMask.Paths, path)
   246  	}
   247  	return nil
   248  }
   249  
   250  // implement methods required by customType
   251  func (fieldMask AcceptedPlan_FieldMask) Marshal() ([]byte, error) {
   252  	protoFieldMask := fieldMask.ToProtoFieldMask()
   253  	return proto.Marshal(protoFieldMask)
   254  }
   255  
   256  func (fieldMask *AcceptedPlan_FieldMask) Unmarshal(data []byte) error {
   257  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   258  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   259  		return err
   260  	}
   261  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   262  		return err
   263  	}
   264  	return nil
   265  }
   266  
   267  func (fieldMask *AcceptedPlan_FieldMask) Size() int {
   268  	return proto.Size(fieldMask.ToProtoFieldMask())
   269  }
   270  
   271  func (fieldMask AcceptedPlan_FieldMask) MarshalJSON() ([]byte, error) {
   272  	return json.Marshal(fieldMask.ToProtoFieldMask())
   273  }
   274  
   275  func (fieldMask *AcceptedPlan_FieldMask) UnmarshalJSON(data []byte) error {
   276  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   277  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   278  		return err
   279  	}
   280  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   281  		return err
   282  	}
   283  	return nil
   284  }
   285  
   286  func (fieldMask *AcceptedPlan_FieldMask) AppendPath(path AcceptedPlan_FieldPath) {
   287  	fieldMask.Paths = append(fieldMask.Paths, path)
   288  }
   289  
   290  func (fieldMask *AcceptedPlan_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   291  	fieldMask.Paths = append(fieldMask.Paths, path.(AcceptedPlan_FieldPath))
   292  }
   293  
   294  func (fieldMask *AcceptedPlan_FieldMask) GetPaths() []AcceptedPlan_FieldPath {
   295  	if fieldMask == nil {
   296  		return nil
   297  	}
   298  	return fieldMask.Paths
   299  }
   300  
   301  func (fieldMask *AcceptedPlan_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   302  	if fieldMask == nil {
   303  		return nil
   304  	}
   305  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   306  	for _, path := range fieldMask.Paths {
   307  		rawPaths = append(rawPaths, path)
   308  	}
   309  	return rawPaths
   310  }
   311  
   312  func (fieldMask *AcceptedPlan_FieldMask) SetFromCliFlag(raw string) error {
   313  	path, err := ParseAcceptedPlan_FieldPath(raw)
   314  	if err != nil {
   315  		return err
   316  	}
   317  	fieldMask.Paths = append(fieldMask.Paths, path)
   318  	return nil
   319  }
   320  
   321  func (fieldMask *AcceptedPlan_FieldMask) Set(target, source *AcceptedPlan) {
   322  	for _, path := range fieldMask.Paths {
   323  		val, _ := path.GetSingle(source)
   324  		// if val is nil, then field does not exist in source, skip
   325  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   326  		if val != nil {
   327  			path.WithIValue(val).SetTo(&target)
   328  		}
   329  	}
   330  }
   331  
   332  func (fieldMask *AcceptedPlan_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   333  	fieldMask.Set(target.(*AcceptedPlan), source.(*AcceptedPlan))
   334  }
   335  
   336  func (fieldMask *AcceptedPlan_FieldMask) Project(source *AcceptedPlan) *AcceptedPlan {
   337  	if source == nil {
   338  		return nil
   339  	}
   340  	if fieldMask == nil {
   341  		return source
   342  	}
   343  	result := &AcceptedPlan{}
   344  	metadataMask := &meta.Meta_FieldMask{}
   345  	wholeMetadataAccepted := false
   346  	regionalPlanOverridesMask := &common.RegionalPlanAssignment_FieldMask{}
   347  	wholeRegionalPlanOverridesAccepted := false
   348  	extensionsMask := &common.Allowance_FieldMask{}
   349  	wholeExtensionsAccepted := false
   350  	allowancesMask := &common.Allowance_FieldMask{}
   351  	wholeAllowancesAccepted := false
   352  	assigneeMask := &AcceptedPlan_Assignee_FieldMask{}
   353  	wholeAssigneeAccepted := false
   354  
   355  	for _, p := range fieldMask.Paths {
   356  		switch tp := p.(type) {
   357  		case *AcceptedPlan_FieldTerminalPath:
   358  			switch tp.selector {
   359  			case AcceptedPlan_FieldPathSelectorName:
   360  				result.Name = source.Name
   361  			case AcceptedPlan_FieldPathSelectorMetadata:
   362  				result.Metadata = source.Metadata
   363  				wholeMetadataAccepted = true
   364  			case AcceptedPlan_FieldPathSelectorDefaultRegionalPlan:
   365  				result.DefaultRegionalPlan = source.DefaultRegionalPlan
   366  			case AcceptedPlan_FieldPathSelectorService:
   367  				result.Service = source.Service
   368  			case AcceptedPlan_FieldPathSelectorRegionalPlanOverrides:
   369  				result.RegionalPlanOverrides = source.RegionalPlanOverrides
   370  				wholeRegionalPlanOverridesAccepted = true
   371  			case AcceptedPlan_FieldPathSelectorExtensions:
   372  				result.Extensions = source.Extensions
   373  				wholeExtensionsAccepted = true
   374  			case AcceptedPlan_FieldPathSelectorAllowances:
   375  				result.Allowances = source.Allowances
   376  				wholeAllowancesAccepted = true
   377  			case AcceptedPlan_FieldPathSelectorAppliedRegions:
   378  				result.AppliedRegions = source.AppliedRegions
   379  			case AcceptedPlan_FieldPathSelectorAppliedPlanSpecGeneration:
   380  				result.AppliedPlanSpecGeneration = source.AppliedPlanSpecGeneration
   381  			case AcceptedPlan_FieldPathSelectorAssignee:
   382  				result.Assignee = source.Assignee
   383  				wholeAssigneeAccepted = true
   384  			}
   385  		case *AcceptedPlan_FieldSubPath:
   386  			switch tp.selector {
   387  			case AcceptedPlan_FieldPathSelectorMetadata:
   388  				metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath))
   389  			case AcceptedPlan_FieldPathSelectorRegionalPlanOverrides:
   390  				regionalPlanOverridesMask.AppendPath(tp.subPath.(common.RegionalPlanAssignment_FieldPath))
   391  			case AcceptedPlan_FieldPathSelectorExtensions:
   392  				extensionsMask.AppendPath(tp.subPath.(common.Allowance_FieldPath))
   393  			case AcceptedPlan_FieldPathSelectorAllowances:
   394  				allowancesMask.AppendPath(tp.subPath.(common.Allowance_FieldPath))
   395  			case AcceptedPlan_FieldPathSelectorAssignee:
   396  				assigneeMask.AppendPath(tp.subPath.(AcceptedPlanAssignee_FieldPath))
   397  			}
   398  		}
   399  	}
   400  	if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 {
   401  		result.Metadata = metadataMask.Project(source.GetMetadata())
   402  	}
   403  	if wholeRegionalPlanOverridesAccepted == false && len(regionalPlanOverridesMask.Paths) > 0 {
   404  		for _, sourceItem := range source.GetRegionalPlanOverrides() {
   405  			result.RegionalPlanOverrides = append(result.RegionalPlanOverrides, regionalPlanOverridesMask.Project(sourceItem))
   406  		}
   407  	}
   408  	if wholeExtensionsAccepted == false && len(extensionsMask.Paths) > 0 {
   409  		for _, sourceItem := range source.GetExtensions() {
   410  			result.Extensions = append(result.Extensions, extensionsMask.Project(sourceItem))
   411  		}
   412  	}
   413  	if wholeAllowancesAccepted == false && len(allowancesMask.Paths) > 0 {
   414  		for _, sourceItem := range source.GetAllowances() {
   415  			result.Allowances = append(result.Allowances, allowancesMask.Project(sourceItem))
   416  		}
   417  	}
   418  	if wholeAssigneeAccepted == false && len(assigneeMask.Paths) > 0 {
   419  		result.Assignee = assigneeMask.Project(source.GetAssignee())
   420  	}
   421  	return result
   422  }
   423  
   424  func (fieldMask *AcceptedPlan_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   425  	return fieldMask.Project(source.(*AcceptedPlan))
   426  }
   427  
   428  func (fieldMask *AcceptedPlan_FieldMask) PathsCount() int {
   429  	if fieldMask == nil {
   430  		return 0
   431  	}
   432  	return len(fieldMask.Paths)
   433  }
   434  
   435  type AcceptedPlan_Assignee_FieldMask struct {
   436  	Paths []AcceptedPlanAssignee_FieldPath
   437  }
   438  
   439  func FullAcceptedPlan_Assignee_FieldMask() *AcceptedPlan_Assignee_FieldMask {
   440  	res := &AcceptedPlan_Assignee_FieldMask{}
   441  	res.Paths = append(res.Paths, &AcceptedPlanAssignee_FieldTerminalPath{selector: AcceptedPlanAssignee_FieldPathSelectorProjectAssignee})
   442  	res.Paths = append(res.Paths, &AcceptedPlanAssignee_FieldTerminalPath{selector: AcceptedPlanAssignee_FieldPathSelectorOrganizationAssignee})
   443  	res.Paths = append(res.Paths, &AcceptedPlanAssignee_FieldTerminalPath{selector: AcceptedPlanAssignee_FieldPathSelectorServiceAssignee})
   444  	return res
   445  }
   446  
   447  func (fieldMask *AcceptedPlan_Assignee_FieldMask) String() string {
   448  	if fieldMask == nil {
   449  		return "<nil>"
   450  	}
   451  	pathsStr := make([]string, 0, len(fieldMask.Paths))
   452  	for _, path := range fieldMask.Paths {
   453  		pathsStr = append(pathsStr, path.String())
   454  	}
   455  	return strings.Join(pathsStr, ", ")
   456  }
   457  
   458  func (fieldMask *AcceptedPlan_Assignee_FieldMask) IsFull() bool {
   459  	if fieldMask == nil {
   460  		return false
   461  	}
   462  	presentSelectors := make([]bool, 3)
   463  	for _, path := range fieldMask.Paths {
   464  		if asFinal, ok := path.(*AcceptedPlanAssignee_FieldTerminalPath); ok {
   465  			presentSelectors[int(asFinal.selector)] = true
   466  		}
   467  	}
   468  	for _, flag := range presentSelectors {
   469  		if !flag {
   470  			return false
   471  		}
   472  	}
   473  	return true
   474  }
   475  
   476  func (fieldMask *AcceptedPlan_Assignee_FieldMask) ProtoReflect() preflect.Message {
   477  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   478  		return ParseAcceptedPlanAssignee_FieldPath(raw)
   479  	})
   480  }
   481  
   482  func (fieldMask *AcceptedPlan_Assignee_FieldMask) ProtoMessage() {}
   483  
   484  func (fieldMask *AcceptedPlan_Assignee_FieldMask) Reset() {
   485  	if fieldMask != nil {
   486  		fieldMask.Paths = nil
   487  	}
   488  }
   489  
   490  func (fieldMask *AcceptedPlan_Assignee_FieldMask) Subtract(other *AcceptedPlan_Assignee_FieldMask) *AcceptedPlan_Assignee_FieldMask {
   491  	result := &AcceptedPlan_Assignee_FieldMask{}
   492  	removedSelectors := make([]bool, 3)
   493  
   494  	for _, path := range other.GetPaths() {
   495  		switch tp := path.(type) {
   496  		case *AcceptedPlanAssignee_FieldTerminalPath:
   497  			removedSelectors[int(tp.selector)] = true
   498  		}
   499  	}
   500  	for _, path := range fieldMask.GetPaths() {
   501  		if !removedSelectors[int(path.Selector())] {
   502  			result.Paths = append(result.Paths, path)
   503  		}
   504  	}
   505  
   506  	if len(result.Paths) == 0 {
   507  		return nil
   508  	}
   509  	return result
   510  }
   511  
   512  func (fieldMask *AcceptedPlan_Assignee_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   513  	return fieldMask.Subtract(other.(*AcceptedPlan_Assignee_FieldMask))
   514  }
   515  
   516  // FilterInputFields generates copy of field paths with output_only field paths removed
   517  func (fieldMask *AcceptedPlan_Assignee_FieldMask) FilterInputFields() *AcceptedPlan_Assignee_FieldMask {
   518  	result := &AcceptedPlan_Assignee_FieldMask{}
   519  	result.Paths = append(result.Paths, fieldMask.Paths...)
   520  	return result
   521  }
   522  
   523  // ToFieldMask is used for proto conversions
   524  func (fieldMask *AcceptedPlan_Assignee_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   525  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   526  	for _, path := range fieldMask.Paths {
   527  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   528  	}
   529  	return protoFieldMask
   530  }
   531  
   532  func (fieldMask *AcceptedPlan_Assignee_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   533  	if fieldMask == nil {
   534  		return status.Error(codes.Internal, "target field mask is nil")
   535  	}
   536  	fieldMask.Paths = make([]AcceptedPlanAssignee_FieldPath, 0, len(protoFieldMask.Paths))
   537  	for _, strPath := range protoFieldMask.Paths {
   538  		path, err := ParseAcceptedPlanAssignee_FieldPath(strPath)
   539  		if err != nil {
   540  			return err
   541  		}
   542  		fieldMask.Paths = append(fieldMask.Paths, path)
   543  	}
   544  	return nil
   545  }
   546  
   547  // implement methods required by customType
   548  func (fieldMask AcceptedPlan_Assignee_FieldMask) Marshal() ([]byte, error) {
   549  	protoFieldMask := fieldMask.ToProtoFieldMask()
   550  	return proto.Marshal(protoFieldMask)
   551  }
   552  
   553  func (fieldMask *AcceptedPlan_Assignee_FieldMask) Unmarshal(data []byte) error {
   554  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   555  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   556  		return err
   557  	}
   558  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   559  		return err
   560  	}
   561  	return nil
   562  }
   563  
   564  func (fieldMask *AcceptedPlan_Assignee_FieldMask) Size() int {
   565  	return proto.Size(fieldMask.ToProtoFieldMask())
   566  }
   567  
   568  func (fieldMask AcceptedPlan_Assignee_FieldMask) MarshalJSON() ([]byte, error) {
   569  	return json.Marshal(fieldMask.ToProtoFieldMask())
   570  }
   571  
   572  func (fieldMask *AcceptedPlan_Assignee_FieldMask) UnmarshalJSON(data []byte) error {
   573  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   574  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   575  		return err
   576  	}
   577  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   578  		return err
   579  	}
   580  	return nil
   581  }
   582  
   583  func (fieldMask *AcceptedPlan_Assignee_FieldMask) AppendPath(path AcceptedPlanAssignee_FieldPath) {
   584  	fieldMask.Paths = append(fieldMask.Paths, path)
   585  }
   586  
   587  func (fieldMask *AcceptedPlan_Assignee_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   588  	fieldMask.Paths = append(fieldMask.Paths, path.(AcceptedPlanAssignee_FieldPath))
   589  }
   590  
   591  func (fieldMask *AcceptedPlan_Assignee_FieldMask) GetPaths() []AcceptedPlanAssignee_FieldPath {
   592  	if fieldMask == nil {
   593  		return nil
   594  	}
   595  	return fieldMask.Paths
   596  }
   597  
   598  func (fieldMask *AcceptedPlan_Assignee_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   599  	if fieldMask == nil {
   600  		return nil
   601  	}
   602  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   603  	for _, path := range fieldMask.Paths {
   604  		rawPaths = append(rawPaths, path)
   605  	}
   606  	return rawPaths
   607  }
   608  
   609  func (fieldMask *AcceptedPlan_Assignee_FieldMask) SetFromCliFlag(raw string) error {
   610  	path, err := ParseAcceptedPlanAssignee_FieldPath(raw)
   611  	if err != nil {
   612  		return err
   613  	}
   614  	fieldMask.Paths = append(fieldMask.Paths, path)
   615  	return nil
   616  }
   617  
   618  func (fieldMask *AcceptedPlan_Assignee_FieldMask) Set(target, source *AcceptedPlan_Assignee) {
   619  	for _, path := range fieldMask.Paths {
   620  		val, _ := path.GetSingle(source)
   621  		// if val is nil, then field does not exist in source, skip
   622  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   623  		if val != nil {
   624  			path.WithIValue(val).SetTo(&target)
   625  		}
   626  	}
   627  }
   628  
   629  func (fieldMask *AcceptedPlan_Assignee_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   630  	fieldMask.Set(target.(*AcceptedPlan_Assignee), source.(*AcceptedPlan_Assignee))
   631  }
   632  
   633  func (fieldMask *AcceptedPlan_Assignee_FieldMask) Project(source *AcceptedPlan_Assignee) *AcceptedPlan_Assignee {
   634  	if source == nil {
   635  		return nil
   636  	}
   637  	if fieldMask == nil {
   638  		return source
   639  	}
   640  	result := &AcceptedPlan_Assignee{}
   641  
   642  	for _, p := range fieldMask.Paths {
   643  		switch tp := p.(type) {
   644  		case *AcceptedPlanAssignee_FieldTerminalPath:
   645  			switch tp.selector {
   646  			case AcceptedPlanAssignee_FieldPathSelectorProjectAssignee:
   647  				if source, ok := source.Assignee.(*AcceptedPlan_Assignee_ProjectAssignee); ok {
   648  					result.Assignee = &AcceptedPlan_Assignee_ProjectAssignee{
   649  						ProjectAssignee: source.ProjectAssignee,
   650  					}
   651  				}
   652  			case AcceptedPlanAssignee_FieldPathSelectorOrganizationAssignee:
   653  				if source, ok := source.Assignee.(*AcceptedPlan_Assignee_OrganizationAssignee); ok {
   654  					result.Assignee = &AcceptedPlan_Assignee_OrganizationAssignee{
   655  						OrganizationAssignee: source.OrganizationAssignee,
   656  					}
   657  				}
   658  			case AcceptedPlanAssignee_FieldPathSelectorServiceAssignee:
   659  				if source, ok := source.Assignee.(*AcceptedPlan_Assignee_ServiceAssignee); ok {
   660  					result.Assignee = &AcceptedPlan_Assignee_ServiceAssignee{
   661  						ServiceAssignee: source.ServiceAssignee,
   662  					}
   663  				}
   664  			}
   665  		}
   666  	}
   667  	return result
   668  }
   669  
   670  func (fieldMask *AcceptedPlan_Assignee_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   671  	return fieldMask.Project(source.(*AcceptedPlan_Assignee))
   672  }
   673  
   674  func (fieldMask *AcceptedPlan_Assignee_FieldMask) PathsCount() int {
   675  	if fieldMask == nil {
   676  		return 0
   677  	}
   678  	return len(fieldMask.Paths)
   679  }