github.com/cloudwan/edgelq-sdk@v1.15.4/iam/resources/v1alpha2/project/project.pb.fieldpath.go (about)

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/iam/proto/v1alpha2/project.proto
     3  // DO NOT EDIT!!!
     4  
     5  package project
     6  
     7  import (
     8  	"encoding/json"
     9  	"fmt"
    10  	"reflect"
    11  	"strings"
    12  	"time"
    13  
    14  	"google.golang.org/grpc/codes"
    15  	"google.golang.org/grpc/status"
    16  	"google.golang.org/protobuf/encoding/protojson"
    17  	"google.golang.org/protobuf/proto"
    18  	"google.golang.org/protobuf/reflect/protoregistry"
    19  
    20  	gotenobject "github.com/cloudwan/goten-sdk/runtime/object"
    21  	"github.com/cloudwan/goten-sdk/runtime/strcase"
    22  )
    23  
    24  // proto imports
    25  import (
    26  	iam_common "github.com/cloudwan/edgelq-sdk/iam/resources/v1alpha2/common"
    27  	organization "github.com/cloudwan/edgelq-sdk/iam/resources/v1alpha2/organization"
    28  	meta_service "github.com/cloudwan/edgelq-sdk/meta/resources/v1alpha2/service"
    29  	meta "github.com/cloudwan/goten-sdk/types/meta"
    30  	multi_region_policy "github.com/cloudwan/goten-sdk/types/multi_region_policy"
    31  )
    32  
    33  // ensure the imports are used
    34  var (
    35  	_ = new(json.Marshaler)
    36  	_ = new(fmt.Stringer)
    37  	_ = reflect.DeepEqual
    38  	_ = strings.Builder{}
    39  	_ = time.Second
    40  
    41  	_ = strcase.ToLowerCamel
    42  	_ = codes.NotFound
    43  	_ = status.Status{}
    44  	_ = protojson.UnmarshalOptions{}
    45  	_ = new(proto.Message)
    46  	_ = protoregistry.GlobalTypes
    47  
    48  	_ = new(gotenobject.FieldPath)
    49  )
    50  
    51  // make sure we're using proto imports
    52  var (
    53  	_ = &iam_common.PCR{}
    54  	_ = &organization.Organization{}
    55  	_ = &meta_service.Service{}
    56  	_ = &meta.Meta{}
    57  	_ = &multi_region_policy.MultiRegionPolicy{}
    58  )
    59  
    60  // FieldPath provides implementation to handle
    61  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
    62  type Project_FieldPath interface {
    63  	gotenobject.FieldPath
    64  	Selector() Project_FieldPathSelector
    65  	Get(source *Project) []interface{}
    66  	GetSingle(source *Project) (interface{}, bool)
    67  	ClearValue(item *Project)
    68  
    69  	// Those methods build corresponding Project_FieldPathValue
    70  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
    71  	WithIValue(value interface{}) Project_FieldPathValue
    72  	WithIArrayOfValues(values interface{}) Project_FieldPathArrayOfValues
    73  	WithIArrayItemValue(value interface{}) Project_FieldPathArrayItemValue
    74  }
    75  
    76  type Project_FieldPathSelector int32
    77  
    78  const (
    79  	Project_FieldPathSelectorName               Project_FieldPathSelector = 0
    80  	Project_FieldPathSelectorTitle              Project_FieldPathSelector = 1
    81  	Project_FieldPathSelectorParentOrganization Project_FieldPathSelector = 2
    82  	Project_FieldPathSelectorRootOrganization   Project_FieldPathSelector = 3
    83  	Project_FieldPathSelectorAncestryPath       Project_FieldPathSelector = 4
    84  	Project_FieldPathSelectorMetadata           Project_FieldPathSelector = 5
    85  	Project_FieldPathSelectorMultiRegionPolicy  Project_FieldPathSelector = 6
    86  	Project_FieldPathSelectorEnabledServices    Project_FieldPathSelector = 7
    87  	Project_FieldPathSelectorBusinessTier       Project_FieldPathSelector = 8
    88  	Project_FieldPathSelectorServiceTiers       Project_FieldPathSelector = 9
    89  	Project_FieldPathSelectorServiceErrors      Project_FieldPathSelector = 10
    90  )
    91  
    92  func (s Project_FieldPathSelector) String() string {
    93  	switch s {
    94  	case Project_FieldPathSelectorName:
    95  		return "name"
    96  	case Project_FieldPathSelectorTitle:
    97  		return "title"
    98  	case Project_FieldPathSelectorParentOrganization:
    99  		return "parent_organization"
   100  	case Project_FieldPathSelectorRootOrganization:
   101  		return "root_organization"
   102  	case Project_FieldPathSelectorAncestryPath:
   103  		return "ancestry_path"
   104  	case Project_FieldPathSelectorMetadata:
   105  		return "metadata"
   106  	case Project_FieldPathSelectorMultiRegionPolicy:
   107  		return "multi_region_policy"
   108  	case Project_FieldPathSelectorEnabledServices:
   109  		return "enabled_services"
   110  	case Project_FieldPathSelectorBusinessTier:
   111  		return "business_tier"
   112  	case Project_FieldPathSelectorServiceTiers:
   113  		return "service_tiers"
   114  	case Project_FieldPathSelectorServiceErrors:
   115  		return "service_errors"
   116  	default:
   117  		panic(fmt.Sprintf("Invalid selector for Project: %d", s))
   118  	}
   119  }
   120  
   121  func BuildProject_FieldPath(fp gotenobject.RawFieldPath) (Project_FieldPath, error) {
   122  	if len(fp) == 0 {
   123  		return nil, status.Error(codes.InvalidArgument, "empty field path for object Project")
   124  	}
   125  	if len(fp) == 1 {
   126  		switch fp[0] {
   127  		case "name":
   128  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorName}, nil
   129  		case "title":
   130  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorTitle}, nil
   131  		case "parent_organization", "parentOrganization", "parent-organization":
   132  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorParentOrganization}, nil
   133  		case "root_organization", "rootOrganization", "root-organization":
   134  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorRootOrganization}, nil
   135  		case "ancestry_path", "ancestryPath", "ancestry-path":
   136  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorAncestryPath}, nil
   137  		case "metadata":
   138  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorMetadata}, nil
   139  		case "multi_region_policy", "multiRegionPolicy", "multi-region-policy":
   140  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorMultiRegionPolicy}, nil
   141  		case "enabled_services", "enabledServices", "enabled-services":
   142  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorEnabledServices}, nil
   143  		case "business_tier", "businessTier", "business-tier":
   144  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorBusinessTier}, nil
   145  		case "service_tiers", "serviceTiers", "service-tiers":
   146  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorServiceTiers}, nil
   147  		case "service_errors", "serviceErrors", "service-errors":
   148  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorServiceErrors}, nil
   149  		}
   150  	} else {
   151  		switch fp[0] {
   152  		case "metadata":
   153  			if subpath, err := meta.BuildMeta_FieldPath(fp[1:]); err != nil {
   154  				return nil, err
   155  			} else {
   156  				return &Project_FieldSubPath{selector: Project_FieldPathSelectorMetadata, subPath: subpath}, nil
   157  			}
   158  		case "multi_region_policy", "multiRegionPolicy", "multi-region-policy":
   159  			if subpath, err := multi_region_policy.BuildMultiRegionPolicy_FieldPath(fp[1:]); err != nil {
   160  				return nil, err
   161  			} else {
   162  				return &Project_FieldSubPath{selector: Project_FieldPathSelectorMultiRegionPolicy, subPath: subpath}, nil
   163  			}
   164  		case "service_tiers", "serviceTiers", "service-tiers":
   165  			if subpath, err := iam_common.BuildServiceBusinessTier_FieldPath(fp[1:]); err != nil {
   166  				return nil, err
   167  			} else {
   168  				return &Project_FieldSubPath{selector: Project_FieldPathSelectorServiceTiers, subPath: subpath}, nil
   169  			}
   170  		case "service_errors", "serviceErrors", "service-errors":
   171  			if len(fp) > 2 {
   172  				return nil, status.Errorf(codes.InvalidArgument, "sub path for maps ('%s') are not supported (object Project)", fp)
   173  			}
   174  			return &Project_FieldPathMap{selector: Project_FieldPathSelectorServiceErrors, key: fp[1]}, nil
   175  		}
   176  	}
   177  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Project", fp)
   178  }
   179  
   180  func ParseProject_FieldPath(rawField string) (Project_FieldPath, error) {
   181  	fp, err := gotenobject.ParseRawFieldPath(rawField)
   182  	if err != nil {
   183  		return nil, err
   184  	}
   185  	return BuildProject_FieldPath(fp)
   186  }
   187  
   188  func MustParseProject_FieldPath(rawField string) Project_FieldPath {
   189  	fp, err := ParseProject_FieldPath(rawField)
   190  	if err != nil {
   191  		panic(err)
   192  	}
   193  	return fp
   194  }
   195  
   196  type Project_FieldTerminalPath struct {
   197  	selector Project_FieldPathSelector
   198  }
   199  
   200  var _ Project_FieldPath = (*Project_FieldTerminalPath)(nil)
   201  
   202  func (fp *Project_FieldTerminalPath) Selector() Project_FieldPathSelector {
   203  	return fp.selector
   204  }
   205  
   206  // String returns path representation in proto convention
   207  func (fp *Project_FieldTerminalPath) String() string {
   208  	return fp.selector.String()
   209  }
   210  
   211  // JSONString returns path representation is JSON convention
   212  func (fp *Project_FieldTerminalPath) JSONString() string {
   213  	return strcase.ToLowerCamel(fp.String())
   214  }
   215  
   216  // Get returns all values pointed by specific field from source Project
   217  func (fp *Project_FieldTerminalPath) Get(source *Project) (values []interface{}) {
   218  	if source != nil {
   219  		switch fp.selector {
   220  		case Project_FieldPathSelectorName:
   221  			if source.Name != nil {
   222  				values = append(values, source.Name)
   223  			}
   224  		case Project_FieldPathSelectorTitle:
   225  			values = append(values, source.Title)
   226  		case Project_FieldPathSelectorParentOrganization:
   227  			if source.ParentOrganization != nil {
   228  				values = append(values, source.ParentOrganization)
   229  			}
   230  		case Project_FieldPathSelectorRootOrganization:
   231  			if source.RootOrganization != nil {
   232  				values = append(values, source.RootOrganization)
   233  			}
   234  		case Project_FieldPathSelectorAncestryPath:
   235  			for _, value := range source.GetAncestryPath() {
   236  				values = append(values, value)
   237  			}
   238  		case Project_FieldPathSelectorMetadata:
   239  			if source.Metadata != nil {
   240  				values = append(values, source.Metadata)
   241  			}
   242  		case Project_FieldPathSelectorMultiRegionPolicy:
   243  			if source.MultiRegionPolicy != nil {
   244  				values = append(values, source.MultiRegionPolicy)
   245  			}
   246  		case Project_FieldPathSelectorEnabledServices:
   247  			for _, value := range source.GetEnabledServices() {
   248  				values = append(values, value)
   249  			}
   250  		case Project_FieldPathSelectorBusinessTier:
   251  			values = append(values, source.BusinessTier)
   252  		case Project_FieldPathSelectorServiceTiers:
   253  			for _, value := range source.GetServiceTiers() {
   254  				values = append(values, value)
   255  			}
   256  		case Project_FieldPathSelectorServiceErrors:
   257  			if source.ServiceErrors != nil {
   258  				values = append(values, source.ServiceErrors)
   259  			}
   260  		default:
   261  			panic(fmt.Sprintf("Invalid selector for Project: %d", fp.selector))
   262  		}
   263  	}
   264  	return
   265  }
   266  
   267  func (fp *Project_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
   268  	return fp.Get(source.(*Project))
   269  }
   270  
   271  // GetSingle returns value pointed by specific field of from source Project
   272  func (fp *Project_FieldTerminalPath) GetSingle(source *Project) (interface{}, bool) {
   273  	switch fp.selector {
   274  	case Project_FieldPathSelectorName:
   275  		res := source.GetName()
   276  		return res, res != nil
   277  	case Project_FieldPathSelectorTitle:
   278  		return source.GetTitle(), source != nil
   279  	case Project_FieldPathSelectorParentOrganization:
   280  		res := source.GetParentOrganization()
   281  		return res, res != nil
   282  	case Project_FieldPathSelectorRootOrganization:
   283  		res := source.GetRootOrganization()
   284  		return res, res != nil
   285  	case Project_FieldPathSelectorAncestryPath:
   286  		res := source.GetAncestryPath()
   287  		return res, res != nil
   288  	case Project_FieldPathSelectorMetadata:
   289  		res := source.GetMetadata()
   290  		return res, res != nil
   291  	case Project_FieldPathSelectorMultiRegionPolicy:
   292  		res := source.GetMultiRegionPolicy()
   293  		return res, res != nil
   294  	case Project_FieldPathSelectorEnabledServices:
   295  		res := source.GetEnabledServices()
   296  		return res, res != nil
   297  	case Project_FieldPathSelectorBusinessTier:
   298  		return source.GetBusinessTier(), source != nil
   299  	case Project_FieldPathSelectorServiceTiers:
   300  		res := source.GetServiceTiers()
   301  		return res, res != nil
   302  	case Project_FieldPathSelectorServiceErrors:
   303  		res := source.GetServiceErrors()
   304  		return res, res != nil
   305  	default:
   306  		panic(fmt.Sprintf("Invalid selector for Project: %d", fp.selector))
   307  	}
   308  }
   309  
   310  func (fp *Project_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   311  	return fp.GetSingle(source.(*Project))
   312  }
   313  
   314  // GetDefault returns a default value of the field type
   315  func (fp *Project_FieldTerminalPath) GetDefault() interface{} {
   316  	switch fp.selector {
   317  	case Project_FieldPathSelectorName:
   318  		return (*Name)(nil)
   319  	case Project_FieldPathSelectorTitle:
   320  		return ""
   321  	case Project_FieldPathSelectorParentOrganization:
   322  		return (*organization.Reference)(nil)
   323  	case Project_FieldPathSelectorRootOrganization:
   324  		return (*organization.Reference)(nil)
   325  	case Project_FieldPathSelectorAncestryPath:
   326  		return ([]*organization.Reference)(nil)
   327  	case Project_FieldPathSelectorMetadata:
   328  		return (*meta.Meta)(nil)
   329  	case Project_FieldPathSelectorMultiRegionPolicy:
   330  		return (*multi_region_policy.MultiRegionPolicy)(nil)
   331  	case Project_FieldPathSelectorEnabledServices:
   332  		return ([]*meta_service.Reference)(nil)
   333  	case Project_FieldPathSelectorBusinessTier:
   334  		return iam_common.BusinessTier_UNDEFINED
   335  	case Project_FieldPathSelectorServiceTiers:
   336  		return ([]*iam_common.ServiceBusinessTier)(nil)
   337  	case Project_FieldPathSelectorServiceErrors:
   338  		return (map[string]*iam_common.ServiceErrors)(nil)
   339  	default:
   340  		panic(fmt.Sprintf("Invalid selector for Project: %d", fp.selector))
   341  	}
   342  }
   343  
   344  func (fp *Project_FieldTerminalPath) ClearValue(item *Project) {
   345  	if item != nil {
   346  		switch fp.selector {
   347  		case Project_FieldPathSelectorName:
   348  			item.Name = nil
   349  		case Project_FieldPathSelectorTitle:
   350  			item.Title = ""
   351  		case Project_FieldPathSelectorParentOrganization:
   352  			item.ParentOrganization = nil
   353  		case Project_FieldPathSelectorRootOrganization:
   354  			item.RootOrganization = nil
   355  		case Project_FieldPathSelectorAncestryPath:
   356  			item.AncestryPath = nil
   357  		case Project_FieldPathSelectorMetadata:
   358  			item.Metadata = nil
   359  		case Project_FieldPathSelectorMultiRegionPolicy:
   360  			item.MultiRegionPolicy = nil
   361  		case Project_FieldPathSelectorEnabledServices:
   362  			item.EnabledServices = nil
   363  		case Project_FieldPathSelectorBusinessTier:
   364  			item.BusinessTier = iam_common.BusinessTier_UNDEFINED
   365  		case Project_FieldPathSelectorServiceTiers:
   366  			item.ServiceTiers = nil
   367  		case Project_FieldPathSelectorServiceErrors:
   368  			item.ServiceErrors = nil
   369  		default:
   370  			panic(fmt.Sprintf("Invalid selector for Project: %d", fp.selector))
   371  		}
   372  	}
   373  }
   374  
   375  func (fp *Project_FieldTerminalPath) ClearValueRaw(item proto.Message) {
   376  	fp.ClearValue(item.(*Project))
   377  }
   378  
   379  // IsLeaf - whether field path is holds simple value
   380  func (fp *Project_FieldTerminalPath) IsLeaf() bool {
   381  	return fp.selector == Project_FieldPathSelectorName ||
   382  		fp.selector == Project_FieldPathSelectorTitle ||
   383  		fp.selector == Project_FieldPathSelectorParentOrganization ||
   384  		fp.selector == Project_FieldPathSelectorRootOrganization ||
   385  		fp.selector == Project_FieldPathSelectorAncestryPath ||
   386  		fp.selector == Project_FieldPathSelectorEnabledServices ||
   387  		fp.selector == Project_FieldPathSelectorBusinessTier
   388  }
   389  
   390  func (fp *Project_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   391  	return []gotenobject.FieldPath{fp}
   392  }
   393  
   394  func (fp *Project_FieldTerminalPath) WithIValue(value interface{}) Project_FieldPathValue {
   395  	switch fp.selector {
   396  	case Project_FieldPathSelectorName:
   397  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.(*Name)}
   398  	case Project_FieldPathSelectorTitle:
   399  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.(string)}
   400  	case Project_FieldPathSelectorParentOrganization:
   401  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.(*organization.Reference)}
   402  	case Project_FieldPathSelectorRootOrganization:
   403  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.(*organization.Reference)}
   404  	case Project_FieldPathSelectorAncestryPath:
   405  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.([]*organization.Reference)}
   406  	case Project_FieldPathSelectorMetadata:
   407  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.(*meta.Meta)}
   408  	case Project_FieldPathSelectorMultiRegionPolicy:
   409  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.(*multi_region_policy.MultiRegionPolicy)}
   410  	case Project_FieldPathSelectorEnabledServices:
   411  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.([]*meta_service.Reference)}
   412  	case Project_FieldPathSelectorBusinessTier:
   413  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.(iam_common.BusinessTier)}
   414  	case Project_FieldPathSelectorServiceTiers:
   415  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.([]*iam_common.ServiceBusinessTier)}
   416  	case Project_FieldPathSelectorServiceErrors:
   417  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.(map[string]*iam_common.ServiceErrors)}
   418  	default:
   419  		panic(fmt.Sprintf("Invalid selector for Project: %d", fp.selector))
   420  	}
   421  }
   422  
   423  func (fp *Project_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   424  	return fp.WithIValue(value)
   425  }
   426  
   427  func (fp *Project_FieldTerminalPath) WithIArrayOfValues(values interface{}) Project_FieldPathArrayOfValues {
   428  	fpaov := &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp}
   429  	switch fp.selector {
   430  	case Project_FieldPathSelectorName:
   431  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([]*Name)}
   432  	case Project_FieldPathSelectorTitle:
   433  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([]string)}
   434  	case Project_FieldPathSelectorParentOrganization:
   435  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([]*organization.Reference)}
   436  	case Project_FieldPathSelectorRootOrganization:
   437  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([]*organization.Reference)}
   438  	case Project_FieldPathSelectorAncestryPath:
   439  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([][]*organization.Reference)}
   440  	case Project_FieldPathSelectorMetadata:
   441  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([]*meta.Meta)}
   442  	case Project_FieldPathSelectorMultiRegionPolicy:
   443  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([]*multi_region_policy.MultiRegionPolicy)}
   444  	case Project_FieldPathSelectorEnabledServices:
   445  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([][]*meta_service.Reference)}
   446  	case Project_FieldPathSelectorBusinessTier:
   447  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([]iam_common.BusinessTier)}
   448  	case Project_FieldPathSelectorServiceTiers:
   449  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([][]*iam_common.ServiceBusinessTier)}
   450  	case Project_FieldPathSelectorServiceErrors:
   451  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([]map[string]*iam_common.ServiceErrors)}
   452  	default:
   453  		panic(fmt.Sprintf("Invalid selector for Project: %d", fp.selector))
   454  	}
   455  	return fpaov
   456  }
   457  
   458  func (fp *Project_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   459  	return fp.WithIArrayOfValues(values)
   460  }
   461  
   462  func (fp *Project_FieldTerminalPath) WithIArrayItemValue(value interface{}) Project_FieldPathArrayItemValue {
   463  	switch fp.selector {
   464  	case Project_FieldPathSelectorAncestryPath:
   465  		return &Project_FieldTerminalPathArrayItemValue{Project_FieldTerminalPath: *fp, value: value.(*organization.Reference)}
   466  	case Project_FieldPathSelectorEnabledServices:
   467  		return &Project_FieldTerminalPathArrayItemValue{Project_FieldTerminalPath: *fp, value: value.(*meta_service.Reference)}
   468  	case Project_FieldPathSelectorServiceTiers:
   469  		return &Project_FieldTerminalPathArrayItemValue{Project_FieldTerminalPath: *fp, value: value.(*iam_common.ServiceBusinessTier)}
   470  	default:
   471  		panic(fmt.Sprintf("Invalid selector for Project: %d", fp.selector))
   472  	}
   473  }
   474  
   475  func (fp *Project_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   476  	return fp.WithIArrayItemValue(value)
   477  }
   478  
   479  // FieldPath for map type with additional Key information
   480  type Project_FieldPathMap struct {
   481  	key      string
   482  	selector Project_FieldPathSelector
   483  }
   484  
   485  var _ Project_FieldPath = (*Project_FieldPathMap)(nil)
   486  
   487  func (fpm *Project_FieldPathMap) Selector() Project_FieldPathSelector {
   488  	return fpm.selector
   489  }
   490  
   491  func (fpm *Project_FieldPathMap) Key() string {
   492  	return fpm.key
   493  }
   494  
   495  // String returns path representation in proto convention
   496  func (fpm *Project_FieldPathMap) String() string {
   497  	return fpm.selector.String() + "." + fpm.key
   498  }
   499  
   500  // JSONString returns path representation is JSON convention. Note that map keys are not transformed
   501  func (fpm *Project_FieldPathMap) JSONString() string {
   502  	return strcase.ToLowerCamel(fpm.selector.String()) + "." + fpm.key
   503  }
   504  
   505  // Get returns all values pointed by selected field map key from source Project
   506  func (fpm *Project_FieldPathMap) Get(source *Project) (values []interface{}) {
   507  	switch fpm.selector {
   508  	case Project_FieldPathSelectorServiceErrors:
   509  		if value, ok := source.GetServiceErrors()[fpm.key]; ok {
   510  			values = append(values, value)
   511  		}
   512  	default:
   513  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpm.selector))
   514  	}
   515  	return
   516  }
   517  
   518  func (fpm *Project_FieldPathMap) GetRaw(source proto.Message) []interface{} {
   519  	return fpm.Get(source.(*Project))
   520  }
   521  
   522  // GetSingle returns value by selected field map key from source Project
   523  func (fpm *Project_FieldPathMap) GetSingle(source *Project) (interface{}, bool) {
   524  	switch fpm.selector {
   525  	case Project_FieldPathSelectorServiceErrors:
   526  		res, ok := source.GetServiceErrors()[fpm.key]
   527  		return res, ok
   528  	default:
   529  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpm.selector))
   530  	}
   531  }
   532  
   533  func (fpm *Project_FieldPathMap) GetSingleRaw(source proto.Message) (interface{}, bool) {
   534  	return fpm.GetSingle(source.(*Project))
   535  }
   536  
   537  // GetDefault returns a default value of the field type
   538  func (fpm *Project_FieldPathMap) GetDefault() interface{} {
   539  	switch fpm.selector {
   540  	case Project_FieldPathSelectorServiceErrors:
   541  		var v *iam_common.ServiceErrors
   542  		return v
   543  	default:
   544  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpm.selector))
   545  	}
   546  }
   547  
   548  func (fpm *Project_FieldPathMap) ClearValue(item *Project) {
   549  	if item != nil {
   550  		switch fpm.selector {
   551  		case Project_FieldPathSelectorServiceErrors:
   552  			delete(item.ServiceErrors, fpm.key)
   553  		default:
   554  			panic(fmt.Sprintf("Invalid selector for Project: %d", fpm.selector))
   555  		}
   556  	}
   557  }
   558  
   559  func (fpm *Project_FieldPathMap) ClearValueRaw(item proto.Message) {
   560  	fpm.ClearValue(item.(*Project))
   561  }
   562  
   563  // IsLeaf - whether field path is holds simple value
   564  func (fpm *Project_FieldPathMap) IsLeaf() bool {
   565  	switch fpm.selector {
   566  	case Project_FieldPathSelectorServiceErrors:
   567  		return false
   568  	default:
   569  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpm.selector))
   570  	}
   571  }
   572  
   573  func (fpm *Project_FieldPathMap) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   574  	return []gotenobject.FieldPath{fpm}
   575  }
   576  
   577  func (fpm *Project_FieldPathMap) WithIValue(value interface{}) Project_FieldPathValue {
   578  	switch fpm.selector {
   579  	case Project_FieldPathSelectorServiceErrors:
   580  		return &Project_FieldPathMapValue{Project_FieldPathMap: *fpm, value: value.(*iam_common.ServiceErrors)}
   581  	default:
   582  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpm.selector))
   583  	}
   584  }
   585  
   586  func (fpm *Project_FieldPathMap) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   587  	return fpm.WithIValue(value)
   588  }
   589  
   590  func (fpm *Project_FieldPathMap) WithIArrayOfValues(values interface{}) Project_FieldPathArrayOfValues {
   591  	switch fpm.selector {
   592  	case Project_FieldPathSelectorServiceErrors:
   593  		return &Project_FieldPathMapArrayOfValues{Project_FieldPathMap: *fpm, values: values.([]*iam_common.ServiceErrors)}
   594  	default:
   595  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpm.selector))
   596  	}
   597  }
   598  
   599  func (fpm *Project_FieldPathMap) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   600  	return fpm.WithIArrayOfValues(values)
   601  }
   602  
   603  func (fpm *Project_FieldPathMap) WithIArrayItemValue(value interface{}) Project_FieldPathArrayItemValue {
   604  	panic("Cannot create array item value from map fieldpath")
   605  }
   606  
   607  func (fpm *Project_FieldPathMap) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   608  	return fpm.WithIArrayItemValue(value)
   609  }
   610  
   611  type Project_FieldSubPath struct {
   612  	selector Project_FieldPathSelector
   613  	subPath  gotenobject.FieldPath
   614  }
   615  
   616  var _ Project_FieldPath = (*Project_FieldSubPath)(nil)
   617  
   618  func (fps *Project_FieldSubPath) Selector() Project_FieldPathSelector {
   619  	return fps.selector
   620  }
   621  func (fps *Project_FieldSubPath) AsMetadataSubPath() (meta.Meta_FieldPath, bool) {
   622  	res, ok := fps.subPath.(meta.Meta_FieldPath)
   623  	return res, ok
   624  }
   625  func (fps *Project_FieldSubPath) AsMultiRegionPolicySubPath() (multi_region_policy.MultiRegionPolicy_FieldPath, bool) {
   626  	res, ok := fps.subPath.(multi_region_policy.MultiRegionPolicy_FieldPath)
   627  	return res, ok
   628  }
   629  func (fps *Project_FieldSubPath) AsServiceTiersSubPath() (iam_common.ServiceBusinessTier_FieldPath, bool) {
   630  	res, ok := fps.subPath.(iam_common.ServiceBusinessTier_FieldPath)
   631  	return res, ok
   632  }
   633  
   634  // String returns path representation in proto convention
   635  func (fps *Project_FieldSubPath) String() string {
   636  	return fps.selector.String() + "." + fps.subPath.String()
   637  }
   638  
   639  // JSONString returns path representation is JSON convention
   640  func (fps *Project_FieldSubPath) JSONString() string {
   641  	return strcase.ToLowerCamel(fps.selector.String()) + "." + fps.subPath.JSONString()
   642  }
   643  
   644  // Get returns all values pointed by selected field from source Project
   645  func (fps *Project_FieldSubPath) Get(source *Project) (values []interface{}) {
   646  	switch fps.selector {
   647  	case Project_FieldPathSelectorMetadata:
   648  		values = append(values, fps.subPath.GetRaw(source.GetMetadata())...)
   649  	case Project_FieldPathSelectorMultiRegionPolicy:
   650  		values = append(values, fps.subPath.GetRaw(source.GetMultiRegionPolicy())...)
   651  	case Project_FieldPathSelectorServiceTiers:
   652  		for _, item := range source.GetServiceTiers() {
   653  			values = append(values, fps.subPath.GetRaw(item)...)
   654  		}
   655  	default:
   656  		panic(fmt.Sprintf("Invalid selector for Project: %d", fps.selector))
   657  	}
   658  	return
   659  }
   660  
   661  func (fps *Project_FieldSubPath) GetRaw(source proto.Message) []interface{} {
   662  	return fps.Get(source.(*Project))
   663  }
   664  
   665  // GetSingle returns value of selected field from source Project
   666  func (fps *Project_FieldSubPath) GetSingle(source *Project) (interface{}, bool) {
   667  	switch fps.selector {
   668  	case Project_FieldPathSelectorMetadata:
   669  		if source.GetMetadata() == nil {
   670  			return nil, false
   671  		}
   672  		return fps.subPath.GetSingleRaw(source.GetMetadata())
   673  	case Project_FieldPathSelectorMultiRegionPolicy:
   674  		if source.GetMultiRegionPolicy() == nil {
   675  			return nil, false
   676  		}
   677  		return fps.subPath.GetSingleRaw(source.GetMultiRegionPolicy())
   678  	case Project_FieldPathSelectorServiceTiers:
   679  		if len(source.GetServiceTiers()) == 0 {
   680  			return nil, false
   681  		}
   682  		return fps.subPath.GetSingleRaw(source.GetServiceTiers()[0])
   683  	default:
   684  		panic(fmt.Sprintf("Invalid selector for Project: %d", fps.selector))
   685  	}
   686  }
   687  
   688  func (fps *Project_FieldSubPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   689  	return fps.GetSingle(source.(*Project))
   690  }
   691  
   692  // GetDefault returns a default value of the field type
   693  func (fps *Project_FieldSubPath) GetDefault() interface{} {
   694  	return fps.subPath.GetDefault()
   695  }
   696  
   697  func (fps *Project_FieldSubPath) ClearValue(item *Project) {
   698  	if item != nil {
   699  		switch fps.selector {
   700  		case Project_FieldPathSelectorMetadata:
   701  			fps.subPath.ClearValueRaw(item.Metadata)
   702  		case Project_FieldPathSelectorMultiRegionPolicy:
   703  			fps.subPath.ClearValueRaw(item.MultiRegionPolicy)
   704  		case Project_FieldPathSelectorServiceTiers:
   705  			for _, subItem := range item.ServiceTiers {
   706  				fps.subPath.ClearValueRaw(subItem)
   707  			}
   708  		default:
   709  			panic(fmt.Sprintf("Invalid selector for Project: %d", fps.selector))
   710  		}
   711  	}
   712  }
   713  
   714  func (fps *Project_FieldSubPath) ClearValueRaw(item proto.Message) {
   715  	fps.ClearValue(item.(*Project))
   716  }
   717  
   718  // IsLeaf - whether field path is holds simple value
   719  func (fps *Project_FieldSubPath) IsLeaf() bool {
   720  	return fps.subPath.IsLeaf()
   721  }
   722  
   723  func (fps *Project_FieldSubPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   724  	iPaths := []gotenobject.FieldPath{&Project_FieldTerminalPath{selector: fps.selector}}
   725  	iPaths = append(iPaths, fps.subPath.SplitIntoTerminalIPaths()...)
   726  	return iPaths
   727  }
   728  
   729  func (fps *Project_FieldSubPath) WithIValue(value interface{}) Project_FieldPathValue {
   730  	return &Project_FieldSubPathValue{fps, fps.subPath.WithRawIValue(value)}
   731  }
   732  
   733  func (fps *Project_FieldSubPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   734  	return fps.WithIValue(value)
   735  }
   736  
   737  func (fps *Project_FieldSubPath) WithIArrayOfValues(values interface{}) Project_FieldPathArrayOfValues {
   738  	return &Project_FieldSubPathArrayOfValues{fps, fps.subPath.WithRawIArrayOfValues(values)}
   739  }
   740  
   741  func (fps *Project_FieldSubPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   742  	return fps.WithIArrayOfValues(values)
   743  }
   744  
   745  func (fps *Project_FieldSubPath) WithIArrayItemValue(value interface{}) Project_FieldPathArrayItemValue {
   746  	return &Project_FieldSubPathArrayItemValue{fps, fps.subPath.WithRawIArrayItemValue(value)}
   747  }
   748  
   749  func (fps *Project_FieldSubPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   750  	return fps.WithIArrayItemValue(value)
   751  }
   752  
   753  // Project_FieldPathValue allows storing values for Project fields according to their type
   754  type Project_FieldPathValue interface {
   755  	Project_FieldPath
   756  	gotenobject.FieldPathValue
   757  	SetTo(target **Project)
   758  	CompareWith(*Project) (cmp int, comparable bool)
   759  }
   760  
   761  func ParseProject_FieldPathValue(pathStr, valueStr string) (Project_FieldPathValue, error) {
   762  	fp, err := ParseProject_FieldPath(pathStr)
   763  	if err != nil {
   764  		return nil, err
   765  	}
   766  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
   767  	if err != nil {
   768  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Project field path value from %s: %v", valueStr, err)
   769  	}
   770  	return fpv.(Project_FieldPathValue), nil
   771  }
   772  
   773  func MustParseProject_FieldPathValue(pathStr, valueStr string) Project_FieldPathValue {
   774  	fpv, err := ParseProject_FieldPathValue(pathStr, valueStr)
   775  	if err != nil {
   776  		panic(err)
   777  	}
   778  	return fpv
   779  }
   780  
   781  type Project_FieldTerminalPathValue struct {
   782  	Project_FieldTerminalPath
   783  	value interface{}
   784  }
   785  
   786  var _ Project_FieldPathValue = (*Project_FieldTerminalPathValue)(nil)
   787  
   788  // GetRawValue returns raw value stored under selected path for 'Project' as interface{}
   789  func (fpv *Project_FieldTerminalPathValue) GetRawValue() interface{} {
   790  	return fpv.value
   791  }
   792  func (fpv *Project_FieldTerminalPathValue) AsNameValue() (*Name, bool) {
   793  	res, ok := fpv.value.(*Name)
   794  	return res, ok
   795  }
   796  func (fpv *Project_FieldTerminalPathValue) AsTitleValue() (string, bool) {
   797  	res, ok := fpv.value.(string)
   798  	return res, ok
   799  }
   800  func (fpv *Project_FieldTerminalPathValue) AsParentOrganizationValue() (*organization.Reference, bool) {
   801  	res, ok := fpv.value.(*organization.Reference)
   802  	return res, ok
   803  }
   804  func (fpv *Project_FieldTerminalPathValue) AsRootOrganizationValue() (*organization.Reference, bool) {
   805  	res, ok := fpv.value.(*organization.Reference)
   806  	return res, ok
   807  }
   808  func (fpv *Project_FieldTerminalPathValue) AsAncestryPathValue() ([]*organization.Reference, bool) {
   809  	res, ok := fpv.value.([]*organization.Reference)
   810  	return res, ok
   811  }
   812  func (fpv *Project_FieldTerminalPathValue) AsMetadataValue() (*meta.Meta, bool) {
   813  	res, ok := fpv.value.(*meta.Meta)
   814  	return res, ok
   815  }
   816  func (fpv *Project_FieldTerminalPathValue) AsMultiRegionPolicyValue() (*multi_region_policy.MultiRegionPolicy, bool) {
   817  	res, ok := fpv.value.(*multi_region_policy.MultiRegionPolicy)
   818  	return res, ok
   819  }
   820  func (fpv *Project_FieldTerminalPathValue) AsEnabledServicesValue() ([]*meta_service.Reference, bool) {
   821  	res, ok := fpv.value.([]*meta_service.Reference)
   822  	return res, ok
   823  }
   824  func (fpv *Project_FieldTerminalPathValue) AsBusinessTierValue() (iam_common.BusinessTier, bool) {
   825  	res, ok := fpv.value.(iam_common.BusinessTier)
   826  	return res, ok
   827  }
   828  func (fpv *Project_FieldTerminalPathValue) AsServiceTiersValue() ([]*iam_common.ServiceBusinessTier, bool) {
   829  	res, ok := fpv.value.([]*iam_common.ServiceBusinessTier)
   830  	return res, ok
   831  }
   832  func (fpv *Project_FieldTerminalPathValue) AsServiceErrorsValue() (map[string]*iam_common.ServiceErrors, bool) {
   833  	res, ok := fpv.value.(map[string]*iam_common.ServiceErrors)
   834  	return res, ok
   835  }
   836  
   837  // SetTo stores value for selected field for object Project
   838  func (fpv *Project_FieldTerminalPathValue) SetTo(target **Project) {
   839  	if *target == nil {
   840  		*target = new(Project)
   841  	}
   842  	switch fpv.selector {
   843  	case Project_FieldPathSelectorName:
   844  		(*target).Name = fpv.value.(*Name)
   845  	case Project_FieldPathSelectorTitle:
   846  		(*target).Title = fpv.value.(string)
   847  	case Project_FieldPathSelectorParentOrganization:
   848  		(*target).ParentOrganization = fpv.value.(*organization.Reference)
   849  	case Project_FieldPathSelectorRootOrganization:
   850  		(*target).RootOrganization = fpv.value.(*organization.Reference)
   851  	case Project_FieldPathSelectorAncestryPath:
   852  		(*target).AncestryPath = fpv.value.([]*organization.Reference)
   853  	case Project_FieldPathSelectorMetadata:
   854  		(*target).Metadata = fpv.value.(*meta.Meta)
   855  	case Project_FieldPathSelectorMultiRegionPolicy:
   856  		(*target).MultiRegionPolicy = fpv.value.(*multi_region_policy.MultiRegionPolicy)
   857  	case Project_FieldPathSelectorEnabledServices:
   858  		(*target).EnabledServices = fpv.value.([]*meta_service.Reference)
   859  	case Project_FieldPathSelectorBusinessTier:
   860  		(*target).BusinessTier = fpv.value.(iam_common.BusinessTier)
   861  	case Project_FieldPathSelectorServiceTiers:
   862  		(*target).ServiceTiers = fpv.value.([]*iam_common.ServiceBusinessTier)
   863  	case Project_FieldPathSelectorServiceErrors:
   864  		(*target).ServiceErrors = fpv.value.(map[string]*iam_common.ServiceErrors)
   865  	default:
   866  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpv.selector))
   867  	}
   868  }
   869  
   870  func (fpv *Project_FieldTerminalPathValue) SetToRaw(target proto.Message) {
   871  	typedObject := target.(*Project)
   872  	fpv.SetTo(&typedObject)
   873  }
   874  
   875  // CompareWith compares value in the 'Project_FieldTerminalPathValue' with the value under path in 'Project'.
   876  func (fpv *Project_FieldTerminalPathValue) CompareWith(source *Project) (int, bool) {
   877  	switch fpv.selector {
   878  	case Project_FieldPathSelectorName:
   879  		leftValue := fpv.value.(*Name)
   880  		rightValue := source.GetName()
   881  		if leftValue == nil {
   882  			if rightValue != nil {
   883  				return -1, true
   884  			}
   885  			return 0, true
   886  		}
   887  		if rightValue == nil {
   888  			return 1, true
   889  		}
   890  		if leftValue.String() == rightValue.String() {
   891  			return 0, true
   892  		} else if leftValue.String() < rightValue.String() {
   893  			return -1, true
   894  		} else {
   895  			return 1, true
   896  		}
   897  	case Project_FieldPathSelectorTitle:
   898  		leftValue := fpv.value.(string)
   899  		rightValue := source.GetTitle()
   900  		if (leftValue) == (rightValue) {
   901  			return 0, true
   902  		} else if (leftValue) < (rightValue) {
   903  			return -1, true
   904  		} else {
   905  			return 1, true
   906  		}
   907  	case Project_FieldPathSelectorParentOrganization:
   908  		leftValue := fpv.value.(*organization.Reference)
   909  		rightValue := source.GetParentOrganization()
   910  		if leftValue == nil {
   911  			if rightValue != nil {
   912  				return -1, true
   913  			}
   914  			return 0, true
   915  		}
   916  		if rightValue == nil {
   917  			return 1, true
   918  		}
   919  		if leftValue.String() == rightValue.String() {
   920  			return 0, true
   921  		} else if leftValue.String() < rightValue.String() {
   922  			return -1, true
   923  		} else {
   924  			return 1, true
   925  		}
   926  	case Project_FieldPathSelectorRootOrganization:
   927  		leftValue := fpv.value.(*organization.Reference)
   928  		rightValue := source.GetRootOrganization()
   929  		if leftValue == nil {
   930  			if rightValue != nil {
   931  				return -1, true
   932  			}
   933  			return 0, true
   934  		}
   935  		if rightValue == nil {
   936  			return 1, true
   937  		}
   938  		if leftValue.String() == rightValue.String() {
   939  			return 0, true
   940  		} else if leftValue.String() < rightValue.String() {
   941  			return -1, true
   942  		} else {
   943  			return 1, true
   944  		}
   945  	case Project_FieldPathSelectorAncestryPath:
   946  		return 0, false
   947  	case Project_FieldPathSelectorMetadata:
   948  		return 0, false
   949  	case Project_FieldPathSelectorMultiRegionPolicy:
   950  		return 0, false
   951  	case Project_FieldPathSelectorEnabledServices:
   952  		return 0, false
   953  	case Project_FieldPathSelectorBusinessTier:
   954  		leftValue := fpv.value.(iam_common.BusinessTier)
   955  		rightValue := source.GetBusinessTier()
   956  		if (leftValue) == (rightValue) {
   957  			return 0, true
   958  		} else if (leftValue) < (rightValue) {
   959  			return -1, true
   960  		} else {
   961  			return 1, true
   962  		}
   963  	case Project_FieldPathSelectorServiceTiers:
   964  		return 0, false
   965  	case Project_FieldPathSelectorServiceErrors:
   966  		return 0, false
   967  	default:
   968  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpv.selector))
   969  	}
   970  }
   971  
   972  func (fpv *Project_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
   973  	return fpv.CompareWith(source.(*Project))
   974  }
   975  
   976  type Project_FieldPathMapValue struct {
   977  	Project_FieldPathMap
   978  	value interface{}
   979  }
   980  
   981  var _ Project_FieldPathValue = (*Project_FieldPathMapValue)(nil)
   982  
   983  // GetValue returns value stored under selected field in Project as interface{}
   984  func (fpmv *Project_FieldPathMapValue) GetRawValue() interface{} {
   985  	return fpmv.value
   986  }
   987  func (fpmv *Project_FieldPathMapValue) AsServiceErrorsElementValue() (*iam_common.ServiceErrors, bool) {
   988  	res, ok := fpmv.value.(*iam_common.ServiceErrors)
   989  	return res, ok
   990  }
   991  
   992  // SetTo stores value for selected field in Project
   993  func (fpmv *Project_FieldPathMapValue) SetTo(target **Project) {
   994  	if *target == nil {
   995  		*target = new(Project)
   996  	}
   997  	switch fpmv.selector {
   998  	case Project_FieldPathSelectorServiceErrors:
   999  		if (*target).ServiceErrors == nil {
  1000  			(*target).ServiceErrors = make(map[string]*iam_common.ServiceErrors)
  1001  		}
  1002  		(*target).ServiceErrors[fpmv.key] = fpmv.value.(*iam_common.ServiceErrors)
  1003  	default:
  1004  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpmv.selector))
  1005  	}
  1006  }
  1007  
  1008  func (fpmv *Project_FieldPathMapValue) SetToRaw(target proto.Message) {
  1009  	typedObject := target.(*Project)
  1010  	fpmv.SetTo(&typedObject)
  1011  }
  1012  
  1013  // CompareWith compares value in the 'Project_FieldPathMapValue' with the value under path in 'Project'.
  1014  func (fpmv *Project_FieldPathMapValue) CompareWith(source *Project) (int, bool) {
  1015  	switch fpmv.selector {
  1016  	case Project_FieldPathSelectorServiceErrors:
  1017  		return 0, false
  1018  	default:
  1019  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpmv.selector))
  1020  	}
  1021  }
  1022  
  1023  func (fpmv *Project_FieldPathMapValue) CompareWithRaw(source proto.Message) (int, bool) {
  1024  	return fpmv.CompareWith(source.(*Project))
  1025  }
  1026  
  1027  type Project_FieldSubPathValue struct {
  1028  	Project_FieldPath
  1029  	subPathValue gotenobject.FieldPathValue
  1030  }
  1031  
  1032  var _ Project_FieldPathValue = (*Project_FieldSubPathValue)(nil)
  1033  
  1034  func (fpvs *Project_FieldSubPathValue) AsMetadataPathValue() (meta.Meta_FieldPathValue, bool) {
  1035  	res, ok := fpvs.subPathValue.(meta.Meta_FieldPathValue)
  1036  	return res, ok
  1037  }
  1038  func (fpvs *Project_FieldSubPathValue) AsMultiRegionPolicyPathValue() (multi_region_policy.MultiRegionPolicy_FieldPathValue, bool) {
  1039  	res, ok := fpvs.subPathValue.(multi_region_policy.MultiRegionPolicy_FieldPathValue)
  1040  	return res, ok
  1041  }
  1042  func (fpvs *Project_FieldSubPathValue) AsServiceTiersPathValue() (iam_common.ServiceBusinessTier_FieldPathValue, bool) {
  1043  	res, ok := fpvs.subPathValue.(iam_common.ServiceBusinessTier_FieldPathValue)
  1044  	return res, ok
  1045  }
  1046  
  1047  func (fpvs *Project_FieldSubPathValue) SetTo(target **Project) {
  1048  	if *target == nil {
  1049  		*target = new(Project)
  1050  	}
  1051  	switch fpvs.Selector() {
  1052  	case Project_FieldPathSelectorMetadata:
  1053  		fpvs.subPathValue.(meta.Meta_FieldPathValue).SetTo(&(*target).Metadata)
  1054  	case Project_FieldPathSelectorMultiRegionPolicy:
  1055  		fpvs.subPathValue.(multi_region_policy.MultiRegionPolicy_FieldPathValue).SetTo(&(*target).MultiRegionPolicy)
  1056  	case Project_FieldPathSelectorServiceTiers:
  1057  		panic("FieldPath setter is unsupported for array subpaths")
  1058  	default:
  1059  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpvs.Selector()))
  1060  	}
  1061  }
  1062  
  1063  func (fpvs *Project_FieldSubPathValue) SetToRaw(target proto.Message) {
  1064  	typedObject := target.(*Project)
  1065  	fpvs.SetTo(&typedObject)
  1066  }
  1067  
  1068  func (fpvs *Project_FieldSubPathValue) GetRawValue() interface{} {
  1069  	return fpvs.subPathValue.GetRawValue()
  1070  }
  1071  
  1072  func (fpvs *Project_FieldSubPathValue) CompareWith(source *Project) (int, bool) {
  1073  	switch fpvs.Selector() {
  1074  	case Project_FieldPathSelectorMetadata:
  1075  		return fpvs.subPathValue.(meta.Meta_FieldPathValue).CompareWith(source.GetMetadata())
  1076  	case Project_FieldPathSelectorMultiRegionPolicy:
  1077  		return fpvs.subPathValue.(multi_region_policy.MultiRegionPolicy_FieldPathValue).CompareWith(source.GetMultiRegionPolicy())
  1078  	case Project_FieldPathSelectorServiceTiers:
  1079  		return 0, false // repeated field
  1080  	default:
  1081  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpvs.Selector()))
  1082  	}
  1083  }
  1084  
  1085  func (fpvs *Project_FieldSubPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  1086  	return fpvs.CompareWith(source.(*Project))
  1087  }
  1088  
  1089  // Project_FieldPathArrayItemValue allows storing single item in Path-specific values for Project according to their type
  1090  // Present only for array (repeated) types.
  1091  type Project_FieldPathArrayItemValue interface {
  1092  	gotenobject.FieldPathArrayItemValue
  1093  	Project_FieldPath
  1094  	ContainsValue(*Project) bool
  1095  }
  1096  
  1097  // ParseProject_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  1098  func ParseProject_FieldPathArrayItemValue(pathStr, valueStr string) (Project_FieldPathArrayItemValue, error) {
  1099  	fp, err := ParseProject_FieldPath(pathStr)
  1100  	if err != nil {
  1101  		return nil, err
  1102  	}
  1103  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  1104  	if err != nil {
  1105  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Project field path array item value from %s: %v", valueStr, err)
  1106  	}
  1107  	return fpaiv.(Project_FieldPathArrayItemValue), nil
  1108  }
  1109  
  1110  func MustParseProject_FieldPathArrayItemValue(pathStr, valueStr string) Project_FieldPathArrayItemValue {
  1111  	fpaiv, err := ParseProject_FieldPathArrayItemValue(pathStr, valueStr)
  1112  	if err != nil {
  1113  		panic(err)
  1114  	}
  1115  	return fpaiv
  1116  }
  1117  
  1118  type Project_FieldTerminalPathArrayItemValue struct {
  1119  	Project_FieldTerminalPath
  1120  	value interface{}
  1121  }
  1122  
  1123  var _ Project_FieldPathArrayItemValue = (*Project_FieldTerminalPathArrayItemValue)(nil)
  1124  
  1125  // GetRawValue returns stored element value for array in object Project as interface{}
  1126  func (fpaiv *Project_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  1127  	return fpaiv.value
  1128  }
  1129  func (fpaiv *Project_FieldTerminalPathArrayItemValue) AsAncestryPathItemValue() (*organization.Reference, bool) {
  1130  	res, ok := fpaiv.value.(*organization.Reference)
  1131  	return res, ok
  1132  }
  1133  func (fpaiv *Project_FieldTerminalPathArrayItemValue) AsEnabledServicesItemValue() (*meta_service.Reference, bool) {
  1134  	res, ok := fpaiv.value.(*meta_service.Reference)
  1135  	return res, ok
  1136  }
  1137  func (fpaiv *Project_FieldTerminalPathArrayItemValue) AsServiceTiersItemValue() (*iam_common.ServiceBusinessTier, bool) {
  1138  	res, ok := fpaiv.value.(*iam_common.ServiceBusinessTier)
  1139  	return res, ok
  1140  }
  1141  
  1142  func (fpaiv *Project_FieldTerminalPathArrayItemValue) GetSingle(source *Project) (interface{}, bool) {
  1143  	return nil, false
  1144  }
  1145  
  1146  func (fpaiv *Project_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1147  	return fpaiv.GetSingle(source.(*Project))
  1148  }
  1149  
  1150  // Contains returns a boolean indicating if value that is being held is present in given 'Project'
  1151  func (fpaiv *Project_FieldTerminalPathArrayItemValue) ContainsValue(source *Project) bool {
  1152  	slice := fpaiv.Project_FieldTerminalPath.Get(source)
  1153  	for _, v := range slice {
  1154  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  1155  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  1156  				return true
  1157  			}
  1158  		} else if reflect.DeepEqual(v, fpaiv.value) {
  1159  			return true
  1160  		}
  1161  	}
  1162  	return false
  1163  }
  1164  
  1165  type Project_FieldSubPathArrayItemValue struct {
  1166  	Project_FieldPath
  1167  	subPathItemValue gotenobject.FieldPathArrayItemValue
  1168  }
  1169  
  1170  // GetRawValue returns stored array item value
  1171  func (fpaivs *Project_FieldSubPathArrayItemValue) GetRawItemValue() interface{} {
  1172  	return fpaivs.subPathItemValue.GetRawItemValue()
  1173  }
  1174  func (fpaivs *Project_FieldSubPathArrayItemValue) AsMetadataPathItemValue() (meta.Meta_FieldPathArrayItemValue, bool) {
  1175  	res, ok := fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue)
  1176  	return res, ok
  1177  }
  1178  func (fpaivs *Project_FieldSubPathArrayItemValue) AsMultiRegionPolicyPathItemValue() (multi_region_policy.MultiRegionPolicy_FieldPathArrayItemValue, bool) {
  1179  	res, ok := fpaivs.subPathItemValue.(multi_region_policy.MultiRegionPolicy_FieldPathArrayItemValue)
  1180  	return res, ok
  1181  }
  1182  func (fpaivs *Project_FieldSubPathArrayItemValue) AsServiceTiersPathItemValue() (iam_common.ServiceBusinessTier_FieldPathArrayItemValue, bool) {
  1183  	res, ok := fpaivs.subPathItemValue.(iam_common.ServiceBusinessTier_FieldPathArrayItemValue)
  1184  	return res, ok
  1185  }
  1186  
  1187  // Contains returns a boolean indicating if value that is being held is present in given 'Project'
  1188  func (fpaivs *Project_FieldSubPathArrayItemValue) ContainsValue(source *Project) bool {
  1189  	switch fpaivs.Selector() {
  1190  	case Project_FieldPathSelectorMetadata:
  1191  		return fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue).ContainsValue(source.GetMetadata())
  1192  	case Project_FieldPathSelectorMultiRegionPolicy:
  1193  		return fpaivs.subPathItemValue.(multi_region_policy.MultiRegionPolicy_FieldPathArrayItemValue).ContainsValue(source.GetMultiRegionPolicy())
  1194  	case Project_FieldPathSelectorServiceTiers:
  1195  		return false // repeated/map field
  1196  	default:
  1197  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpaivs.Selector()))
  1198  	}
  1199  }
  1200  
  1201  // Project_FieldPathArrayOfValues allows storing slice of values for Project fields according to their type
  1202  type Project_FieldPathArrayOfValues interface {
  1203  	gotenobject.FieldPathArrayOfValues
  1204  	Project_FieldPath
  1205  }
  1206  
  1207  func ParseProject_FieldPathArrayOfValues(pathStr, valuesStr string) (Project_FieldPathArrayOfValues, error) {
  1208  	fp, err := ParseProject_FieldPath(pathStr)
  1209  	if err != nil {
  1210  		return nil, err
  1211  	}
  1212  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  1213  	if err != nil {
  1214  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Project field path array of values from %s: %v", valuesStr, err)
  1215  	}
  1216  	return fpaov.(Project_FieldPathArrayOfValues), nil
  1217  }
  1218  
  1219  func MustParseProject_FieldPathArrayOfValues(pathStr, valuesStr string) Project_FieldPathArrayOfValues {
  1220  	fpaov, err := ParseProject_FieldPathArrayOfValues(pathStr, valuesStr)
  1221  	if err != nil {
  1222  		panic(err)
  1223  	}
  1224  	return fpaov
  1225  }
  1226  
  1227  type Project_FieldTerminalPathArrayOfValues struct {
  1228  	Project_FieldTerminalPath
  1229  	values interface{}
  1230  }
  1231  
  1232  var _ Project_FieldPathArrayOfValues = (*Project_FieldTerminalPathArrayOfValues)(nil)
  1233  
  1234  func (fpaov *Project_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  1235  	switch fpaov.selector {
  1236  	case Project_FieldPathSelectorName:
  1237  		for _, v := range fpaov.values.([]*Name) {
  1238  			values = append(values, v)
  1239  		}
  1240  	case Project_FieldPathSelectorTitle:
  1241  		for _, v := range fpaov.values.([]string) {
  1242  			values = append(values, v)
  1243  		}
  1244  	case Project_FieldPathSelectorParentOrganization:
  1245  		for _, v := range fpaov.values.([]*organization.Reference) {
  1246  			values = append(values, v)
  1247  		}
  1248  	case Project_FieldPathSelectorRootOrganization:
  1249  		for _, v := range fpaov.values.([]*organization.Reference) {
  1250  			values = append(values, v)
  1251  		}
  1252  	case Project_FieldPathSelectorAncestryPath:
  1253  		for _, v := range fpaov.values.([][]*organization.Reference) {
  1254  			values = append(values, v)
  1255  		}
  1256  	case Project_FieldPathSelectorMetadata:
  1257  		for _, v := range fpaov.values.([]*meta.Meta) {
  1258  			values = append(values, v)
  1259  		}
  1260  	case Project_FieldPathSelectorMultiRegionPolicy:
  1261  		for _, v := range fpaov.values.([]*multi_region_policy.MultiRegionPolicy) {
  1262  			values = append(values, v)
  1263  		}
  1264  	case Project_FieldPathSelectorEnabledServices:
  1265  		for _, v := range fpaov.values.([][]*meta_service.Reference) {
  1266  			values = append(values, v)
  1267  		}
  1268  	case Project_FieldPathSelectorBusinessTier:
  1269  		for _, v := range fpaov.values.([]iam_common.BusinessTier) {
  1270  			values = append(values, v)
  1271  		}
  1272  	case Project_FieldPathSelectorServiceTiers:
  1273  		for _, v := range fpaov.values.([][]*iam_common.ServiceBusinessTier) {
  1274  			values = append(values, v)
  1275  		}
  1276  	case Project_FieldPathSelectorServiceErrors:
  1277  		for _, v := range fpaov.values.([]map[string]*iam_common.ServiceErrors) {
  1278  			values = append(values, v)
  1279  		}
  1280  	}
  1281  	return
  1282  }
  1283  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsNameArrayOfValues() ([]*Name, bool) {
  1284  	res, ok := fpaov.values.([]*Name)
  1285  	return res, ok
  1286  }
  1287  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsTitleArrayOfValues() ([]string, bool) {
  1288  	res, ok := fpaov.values.([]string)
  1289  	return res, ok
  1290  }
  1291  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsParentOrganizationArrayOfValues() ([]*organization.Reference, bool) {
  1292  	res, ok := fpaov.values.([]*organization.Reference)
  1293  	return res, ok
  1294  }
  1295  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsRootOrganizationArrayOfValues() ([]*organization.Reference, bool) {
  1296  	res, ok := fpaov.values.([]*organization.Reference)
  1297  	return res, ok
  1298  }
  1299  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsAncestryPathArrayOfValues() ([][]*organization.Reference, bool) {
  1300  	res, ok := fpaov.values.([][]*organization.Reference)
  1301  	return res, ok
  1302  }
  1303  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsMetadataArrayOfValues() ([]*meta.Meta, bool) {
  1304  	res, ok := fpaov.values.([]*meta.Meta)
  1305  	return res, ok
  1306  }
  1307  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsMultiRegionPolicyArrayOfValues() ([]*multi_region_policy.MultiRegionPolicy, bool) {
  1308  	res, ok := fpaov.values.([]*multi_region_policy.MultiRegionPolicy)
  1309  	return res, ok
  1310  }
  1311  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsEnabledServicesArrayOfValues() ([][]*meta_service.Reference, bool) {
  1312  	res, ok := fpaov.values.([][]*meta_service.Reference)
  1313  	return res, ok
  1314  }
  1315  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsBusinessTierArrayOfValues() ([]iam_common.BusinessTier, bool) {
  1316  	res, ok := fpaov.values.([]iam_common.BusinessTier)
  1317  	return res, ok
  1318  }
  1319  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsServiceTiersArrayOfValues() ([][]*iam_common.ServiceBusinessTier, bool) {
  1320  	res, ok := fpaov.values.([][]*iam_common.ServiceBusinessTier)
  1321  	return res, ok
  1322  }
  1323  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsServiceErrorsArrayOfValues() ([]map[string]*iam_common.ServiceErrors, bool) {
  1324  	res, ok := fpaov.values.([]map[string]*iam_common.ServiceErrors)
  1325  	return res, ok
  1326  }
  1327  
  1328  type Project_FieldPathMapArrayOfValues struct {
  1329  	Project_FieldPathMap
  1330  	values interface{}
  1331  }
  1332  
  1333  var _ Project_FieldPathArrayOfValues = (*Project_FieldPathMapArrayOfValues)(nil)
  1334  
  1335  func (fpmaov *Project_FieldPathMapArrayOfValues) GetRawValues() (values []interface{}) {
  1336  	switch fpmaov.selector {
  1337  	case Project_FieldPathSelectorServiceErrors:
  1338  		for _, v := range fpmaov.values.([]*iam_common.ServiceErrors) {
  1339  			values = append(values, v)
  1340  		}
  1341  	}
  1342  	return
  1343  }
  1344  func (fpmaov *Project_FieldPathMapArrayOfValues) AsServiceErrorsArrayOfElementValues() ([]*iam_common.ServiceErrors, bool) {
  1345  	res, ok := fpmaov.values.([]*iam_common.ServiceErrors)
  1346  	return res, ok
  1347  }
  1348  
  1349  type Project_FieldSubPathArrayOfValues struct {
  1350  	Project_FieldPath
  1351  	subPathArrayOfValues gotenobject.FieldPathArrayOfValues
  1352  }
  1353  
  1354  var _ Project_FieldPathArrayOfValues = (*Project_FieldSubPathArrayOfValues)(nil)
  1355  
  1356  func (fpsaov *Project_FieldSubPathArrayOfValues) GetRawValues() []interface{} {
  1357  	return fpsaov.subPathArrayOfValues.GetRawValues()
  1358  }
  1359  func (fpsaov *Project_FieldSubPathArrayOfValues) AsMetadataPathArrayOfValues() (meta.Meta_FieldPathArrayOfValues, bool) {
  1360  	res, ok := fpsaov.subPathArrayOfValues.(meta.Meta_FieldPathArrayOfValues)
  1361  	return res, ok
  1362  }
  1363  func (fpsaov *Project_FieldSubPathArrayOfValues) AsMultiRegionPolicyPathArrayOfValues() (multi_region_policy.MultiRegionPolicy_FieldPathArrayOfValues, bool) {
  1364  	res, ok := fpsaov.subPathArrayOfValues.(multi_region_policy.MultiRegionPolicy_FieldPathArrayOfValues)
  1365  	return res, ok
  1366  }
  1367  func (fpsaov *Project_FieldSubPathArrayOfValues) AsServiceTiersPathArrayOfValues() (iam_common.ServiceBusinessTier_FieldPathArrayOfValues, bool) {
  1368  	res, ok := fpsaov.subPathArrayOfValues.(iam_common.ServiceBusinessTier_FieldPathArrayOfValues)
  1369  	return res, ok
  1370  }