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

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/iam/proto/v1alpha2/service_account.proto
     3  // DO NOT EDIT!!!
     4  
     5  package service_account
     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  	project "github.com/cloudwan/edgelq-sdk/iam/resources/v1alpha2/project"
    27  	meta "github.com/cloudwan/goten-sdk/types/meta"
    28  )
    29  
    30  // ensure the imports are used
    31  var (
    32  	_ = new(json.Marshaler)
    33  	_ = new(fmt.Stringer)
    34  	_ = reflect.DeepEqual
    35  	_ = strings.Builder{}
    36  	_ = time.Second
    37  
    38  	_ = strcase.ToLowerCamel
    39  	_ = codes.NotFound
    40  	_ = status.Status{}
    41  	_ = protojson.UnmarshalOptions{}
    42  	_ = new(proto.Message)
    43  	_ = protoregistry.GlobalTypes
    44  
    45  	_ = new(gotenobject.FieldPath)
    46  )
    47  
    48  // make sure we're using proto imports
    49  var (
    50  	_ = &project.Project{}
    51  	_ = &meta.Meta{}
    52  )
    53  
    54  // FieldPath provides implementation to handle
    55  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
    56  type ServiceAccount_FieldPath interface {
    57  	gotenobject.FieldPath
    58  	Selector() ServiceAccount_FieldPathSelector
    59  	Get(source *ServiceAccount) []interface{}
    60  	GetSingle(source *ServiceAccount) (interface{}, bool)
    61  	ClearValue(item *ServiceAccount)
    62  
    63  	// Those methods build corresponding ServiceAccount_FieldPathValue
    64  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
    65  	WithIValue(value interface{}) ServiceAccount_FieldPathValue
    66  	WithIArrayOfValues(values interface{}) ServiceAccount_FieldPathArrayOfValues
    67  	WithIArrayItemValue(value interface{}) ServiceAccount_FieldPathArrayItemValue
    68  }
    69  
    70  type ServiceAccount_FieldPathSelector int32
    71  
    72  const (
    73  	ServiceAccount_FieldPathSelectorName        ServiceAccount_FieldPathSelector = 0
    74  	ServiceAccount_FieldPathSelectorDisplayName ServiceAccount_FieldPathSelector = 1
    75  	ServiceAccount_FieldPathSelectorEmail       ServiceAccount_FieldPathSelector = 2
    76  	ServiceAccount_FieldPathSelectorMetadata    ServiceAccount_FieldPathSelector = 3
    77  )
    78  
    79  func (s ServiceAccount_FieldPathSelector) String() string {
    80  	switch s {
    81  	case ServiceAccount_FieldPathSelectorName:
    82  		return "name"
    83  	case ServiceAccount_FieldPathSelectorDisplayName:
    84  		return "display_name"
    85  	case ServiceAccount_FieldPathSelectorEmail:
    86  		return "email"
    87  	case ServiceAccount_FieldPathSelectorMetadata:
    88  		return "metadata"
    89  	default:
    90  		panic(fmt.Sprintf("Invalid selector for ServiceAccount: %d", s))
    91  	}
    92  }
    93  
    94  func BuildServiceAccount_FieldPath(fp gotenobject.RawFieldPath) (ServiceAccount_FieldPath, error) {
    95  	if len(fp) == 0 {
    96  		return nil, status.Error(codes.InvalidArgument, "empty field path for object ServiceAccount")
    97  	}
    98  	if len(fp) == 1 {
    99  		switch fp[0] {
   100  		case "name":
   101  			return &ServiceAccount_FieldTerminalPath{selector: ServiceAccount_FieldPathSelectorName}, nil
   102  		case "display_name", "displayName", "display-name":
   103  			return &ServiceAccount_FieldTerminalPath{selector: ServiceAccount_FieldPathSelectorDisplayName}, nil
   104  		case "email":
   105  			return &ServiceAccount_FieldTerminalPath{selector: ServiceAccount_FieldPathSelectorEmail}, nil
   106  		case "metadata":
   107  			return &ServiceAccount_FieldTerminalPath{selector: ServiceAccount_FieldPathSelectorMetadata}, nil
   108  		}
   109  	} else {
   110  		switch fp[0] {
   111  		case "metadata":
   112  			if subpath, err := meta.BuildMeta_FieldPath(fp[1:]); err != nil {
   113  				return nil, err
   114  			} else {
   115  				return &ServiceAccount_FieldSubPath{selector: ServiceAccount_FieldPathSelectorMetadata, subPath: subpath}, nil
   116  			}
   117  		}
   118  	}
   119  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object ServiceAccount", fp)
   120  }
   121  
   122  func ParseServiceAccount_FieldPath(rawField string) (ServiceAccount_FieldPath, error) {
   123  	fp, err := gotenobject.ParseRawFieldPath(rawField)
   124  	if err != nil {
   125  		return nil, err
   126  	}
   127  	return BuildServiceAccount_FieldPath(fp)
   128  }
   129  
   130  func MustParseServiceAccount_FieldPath(rawField string) ServiceAccount_FieldPath {
   131  	fp, err := ParseServiceAccount_FieldPath(rawField)
   132  	if err != nil {
   133  		panic(err)
   134  	}
   135  	return fp
   136  }
   137  
   138  type ServiceAccount_FieldTerminalPath struct {
   139  	selector ServiceAccount_FieldPathSelector
   140  }
   141  
   142  var _ ServiceAccount_FieldPath = (*ServiceAccount_FieldTerminalPath)(nil)
   143  
   144  func (fp *ServiceAccount_FieldTerminalPath) Selector() ServiceAccount_FieldPathSelector {
   145  	return fp.selector
   146  }
   147  
   148  // String returns path representation in proto convention
   149  func (fp *ServiceAccount_FieldTerminalPath) String() string {
   150  	return fp.selector.String()
   151  }
   152  
   153  // JSONString returns path representation is JSON convention
   154  func (fp *ServiceAccount_FieldTerminalPath) JSONString() string {
   155  	return strcase.ToLowerCamel(fp.String())
   156  }
   157  
   158  // Get returns all values pointed by specific field from source ServiceAccount
   159  func (fp *ServiceAccount_FieldTerminalPath) Get(source *ServiceAccount) (values []interface{}) {
   160  	if source != nil {
   161  		switch fp.selector {
   162  		case ServiceAccount_FieldPathSelectorName:
   163  			if source.Name != nil {
   164  				values = append(values, source.Name)
   165  			}
   166  		case ServiceAccount_FieldPathSelectorDisplayName:
   167  			values = append(values, source.DisplayName)
   168  		case ServiceAccount_FieldPathSelectorEmail:
   169  			values = append(values, source.Email)
   170  		case ServiceAccount_FieldPathSelectorMetadata:
   171  			if source.Metadata != nil {
   172  				values = append(values, source.Metadata)
   173  			}
   174  		default:
   175  			panic(fmt.Sprintf("Invalid selector for ServiceAccount: %d", fp.selector))
   176  		}
   177  	}
   178  	return
   179  }
   180  
   181  func (fp *ServiceAccount_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
   182  	return fp.Get(source.(*ServiceAccount))
   183  }
   184  
   185  // GetSingle returns value pointed by specific field of from source ServiceAccount
   186  func (fp *ServiceAccount_FieldTerminalPath) GetSingle(source *ServiceAccount) (interface{}, bool) {
   187  	switch fp.selector {
   188  	case ServiceAccount_FieldPathSelectorName:
   189  		res := source.GetName()
   190  		return res, res != nil
   191  	case ServiceAccount_FieldPathSelectorDisplayName:
   192  		return source.GetDisplayName(), source != nil
   193  	case ServiceAccount_FieldPathSelectorEmail:
   194  		return source.GetEmail(), source != nil
   195  	case ServiceAccount_FieldPathSelectorMetadata:
   196  		res := source.GetMetadata()
   197  		return res, res != nil
   198  	default:
   199  		panic(fmt.Sprintf("Invalid selector for ServiceAccount: %d", fp.selector))
   200  	}
   201  }
   202  
   203  func (fp *ServiceAccount_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   204  	return fp.GetSingle(source.(*ServiceAccount))
   205  }
   206  
   207  // GetDefault returns a default value of the field type
   208  func (fp *ServiceAccount_FieldTerminalPath) GetDefault() interface{} {
   209  	switch fp.selector {
   210  	case ServiceAccount_FieldPathSelectorName:
   211  		return (*Name)(nil)
   212  	case ServiceAccount_FieldPathSelectorDisplayName:
   213  		return ""
   214  	case ServiceAccount_FieldPathSelectorEmail:
   215  		return ""
   216  	case ServiceAccount_FieldPathSelectorMetadata:
   217  		return (*meta.Meta)(nil)
   218  	default:
   219  		panic(fmt.Sprintf("Invalid selector for ServiceAccount: %d", fp.selector))
   220  	}
   221  }
   222  
   223  func (fp *ServiceAccount_FieldTerminalPath) ClearValue(item *ServiceAccount) {
   224  	if item != nil {
   225  		switch fp.selector {
   226  		case ServiceAccount_FieldPathSelectorName:
   227  			item.Name = nil
   228  		case ServiceAccount_FieldPathSelectorDisplayName:
   229  			item.DisplayName = ""
   230  		case ServiceAccount_FieldPathSelectorEmail:
   231  			item.Email = ""
   232  		case ServiceAccount_FieldPathSelectorMetadata:
   233  			item.Metadata = nil
   234  		default:
   235  			panic(fmt.Sprintf("Invalid selector for ServiceAccount: %d", fp.selector))
   236  		}
   237  	}
   238  }
   239  
   240  func (fp *ServiceAccount_FieldTerminalPath) ClearValueRaw(item proto.Message) {
   241  	fp.ClearValue(item.(*ServiceAccount))
   242  }
   243  
   244  // IsLeaf - whether field path is holds simple value
   245  func (fp *ServiceAccount_FieldTerminalPath) IsLeaf() bool {
   246  	return fp.selector == ServiceAccount_FieldPathSelectorName ||
   247  		fp.selector == ServiceAccount_FieldPathSelectorDisplayName ||
   248  		fp.selector == ServiceAccount_FieldPathSelectorEmail
   249  }
   250  
   251  func (fp *ServiceAccount_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   252  	return []gotenobject.FieldPath{fp}
   253  }
   254  
   255  func (fp *ServiceAccount_FieldTerminalPath) WithIValue(value interface{}) ServiceAccount_FieldPathValue {
   256  	switch fp.selector {
   257  	case ServiceAccount_FieldPathSelectorName:
   258  		return &ServiceAccount_FieldTerminalPathValue{ServiceAccount_FieldTerminalPath: *fp, value: value.(*Name)}
   259  	case ServiceAccount_FieldPathSelectorDisplayName:
   260  		return &ServiceAccount_FieldTerminalPathValue{ServiceAccount_FieldTerminalPath: *fp, value: value.(string)}
   261  	case ServiceAccount_FieldPathSelectorEmail:
   262  		return &ServiceAccount_FieldTerminalPathValue{ServiceAccount_FieldTerminalPath: *fp, value: value.(string)}
   263  	case ServiceAccount_FieldPathSelectorMetadata:
   264  		return &ServiceAccount_FieldTerminalPathValue{ServiceAccount_FieldTerminalPath: *fp, value: value.(*meta.Meta)}
   265  	default:
   266  		panic(fmt.Sprintf("Invalid selector for ServiceAccount: %d", fp.selector))
   267  	}
   268  }
   269  
   270  func (fp *ServiceAccount_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   271  	return fp.WithIValue(value)
   272  }
   273  
   274  func (fp *ServiceAccount_FieldTerminalPath) WithIArrayOfValues(values interface{}) ServiceAccount_FieldPathArrayOfValues {
   275  	fpaov := &ServiceAccount_FieldTerminalPathArrayOfValues{ServiceAccount_FieldTerminalPath: *fp}
   276  	switch fp.selector {
   277  	case ServiceAccount_FieldPathSelectorName:
   278  		return &ServiceAccount_FieldTerminalPathArrayOfValues{ServiceAccount_FieldTerminalPath: *fp, values: values.([]*Name)}
   279  	case ServiceAccount_FieldPathSelectorDisplayName:
   280  		return &ServiceAccount_FieldTerminalPathArrayOfValues{ServiceAccount_FieldTerminalPath: *fp, values: values.([]string)}
   281  	case ServiceAccount_FieldPathSelectorEmail:
   282  		return &ServiceAccount_FieldTerminalPathArrayOfValues{ServiceAccount_FieldTerminalPath: *fp, values: values.([]string)}
   283  	case ServiceAccount_FieldPathSelectorMetadata:
   284  		return &ServiceAccount_FieldTerminalPathArrayOfValues{ServiceAccount_FieldTerminalPath: *fp, values: values.([]*meta.Meta)}
   285  	default:
   286  		panic(fmt.Sprintf("Invalid selector for ServiceAccount: %d", fp.selector))
   287  	}
   288  	return fpaov
   289  }
   290  
   291  func (fp *ServiceAccount_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   292  	return fp.WithIArrayOfValues(values)
   293  }
   294  
   295  func (fp *ServiceAccount_FieldTerminalPath) WithIArrayItemValue(value interface{}) ServiceAccount_FieldPathArrayItemValue {
   296  	switch fp.selector {
   297  	default:
   298  		panic(fmt.Sprintf("Invalid selector for ServiceAccount: %d", fp.selector))
   299  	}
   300  }
   301  
   302  func (fp *ServiceAccount_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   303  	return fp.WithIArrayItemValue(value)
   304  }
   305  
   306  type ServiceAccount_FieldSubPath struct {
   307  	selector ServiceAccount_FieldPathSelector
   308  	subPath  gotenobject.FieldPath
   309  }
   310  
   311  var _ ServiceAccount_FieldPath = (*ServiceAccount_FieldSubPath)(nil)
   312  
   313  func (fps *ServiceAccount_FieldSubPath) Selector() ServiceAccount_FieldPathSelector {
   314  	return fps.selector
   315  }
   316  func (fps *ServiceAccount_FieldSubPath) AsMetadataSubPath() (meta.Meta_FieldPath, bool) {
   317  	res, ok := fps.subPath.(meta.Meta_FieldPath)
   318  	return res, ok
   319  }
   320  
   321  // String returns path representation in proto convention
   322  func (fps *ServiceAccount_FieldSubPath) String() string {
   323  	return fps.selector.String() + "." + fps.subPath.String()
   324  }
   325  
   326  // JSONString returns path representation is JSON convention
   327  func (fps *ServiceAccount_FieldSubPath) JSONString() string {
   328  	return strcase.ToLowerCamel(fps.selector.String()) + "." + fps.subPath.JSONString()
   329  }
   330  
   331  // Get returns all values pointed by selected field from source ServiceAccount
   332  func (fps *ServiceAccount_FieldSubPath) Get(source *ServiceAccount) (values []interface{}) {
   333  	switch fps.selector {
   334  	case ServiceAccount_FieldPathSelectorMetadata:
   335  		values = append(values, fps.subPath.GetRaw(source.GetMetadata())...)
   336  	default:
   337  		panic(fmt.Sprintf("Invalid selector for ServiceAccount: %d", fps.selector))
   338  	}
   339  	return
   340  }
   341  
   342  func (fps *ServiceAccount_FieldSubPath) GetRaw(source proto.Message) []interface{} {
   343  	return fps.Get(source.(*ServiceAccount))
   344  }
   345  
   346  // GetSingle returns value of selected field from source ServiceAccount
   347  func (fps *ServiceAccount_FieldSubPath) GetSingle(source *ServiceAccount) (interface{}, bool) {
   348  	switch fps.selector {
   349  	case ServiceAccount_FieldPathSelectorMetadata:
   350  		if source.GetMetadata() == nil {
   351  			return nil, false
   352  		}
   353  		return fps.subPath.GetSingleRaw(source.GetMetadata())
   354  	default:
   355  		panic(fmt.Sprintf("Invalid selector for ServiceAccount: %d", fps.selector))
   356  	}
   357  }
   358  
   359  func (fps *ServiceAccount_FieldSubPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   360  	return fps.GetSingle(source.(*ServiceAccount))
   361  }
   362  
   363  // GetDefault returns a default value of the field type
   364  func (fps *ServiceAccount_FieldSubPath) GetDefault() interface{} {
   365  	return fps.subPath.GetDefault()
   366  }
   367  
   368  func (fps *ServiceAccount_FieldSubPath) ClearValue(item *ServiceAccount) {
   369  	if item != nil {
   370  		switch fps.selector {
   371  		case ServiceAccount_FieldPathSelectorMetadata:
   372  			fps.subPath.ClearValueRaw(item.Metadata)
   373  		default:
   374  			panic(fmt.Sprintf("Invalid selector for ServiceAccount: %d", fps.selector))
   375  		}
   376  	}
   377  }
   378  
   379  func (fps *ServiceAccount_FieldSubPath) ClearValueRaw(item proto.Message) {
   380  	fps.ClearValue(item.(*ServiceAccount))
   381  }
   382  
   383  // IsLeaf - whether field path is holds simple value
   384  func (fps *ServiceAccount_FieldSubPath) IsLeaf() bool {
   385  	return fps.subPath.IsLeaf()
   386  }
   387  
   388  func (fps *ServiceAccount_FieldSubPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   389  	iPaths := []gotenobject.FieldPath{&ServiceAccount_FieldTerminalPath{selector: fps.selector}}
   390  	iPaths = append(iPaths, fps.subPath.SplitIntoTerminalIPaths()...)
   391  	return iPaths
   392  }
   393  
   394  func (fps *ServiceAccount_FieldSubPath) WithIValue(value interface{}) ServiceAccount_FieldPathValue {
   395  	return &ServiceAccount_FieldSubPathValue{fps, fps.subPath.WithRawIValue(value)}
   396  }
   397  
   398  func (fps *ServiceAccount_FieldSubPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   399  	return fps.WithIValue(value)
   400  }
   401  
   402  func (fps *ServiceAccount_FieldSubPath) WithIArrayOfValues(values interface{}) ServiceAccount_FieldPathArrayOfValues {
   403  	return &ServiceAccount_FieldSubPathArrayOfValues{fps, fps.subPath.WithRawIArrayOfValues(values)}
   404  }
   405  
   406  func (fps *ServiceAccount_FieldSubPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   407  	return fps.WithIArrayOfValues(values)
   408  }
   409  
   410  func (fps *ServiceAccount_FieldSubPath) WithIArrayItemValue(value interface{}) ServiceAccount_FieldPathArrayItemValue {
   411  	return &ServiceAccount_FieldSubPathArrayItemValue{fps, fps.subPath.WithRawIArrayItemValue(value)}
   412  }
   413  
   414  func (fps *ServiceAccount_FieldSubPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   415  	return fps.WithIArrayItemValue(value)
   416  }
   417  
   418  // ServiceAccount_FieldPathValue allows storing values for ServiceAccount fields according to their type
   419  type ServiceAccount_FieldPathValue interface {
   420  	ServiceAccount_FieldPath
   421  	gotenobject.FieldPathValue
   422  	SetTo(target **ServiceAccount)
   423  	CompareWith(*ServiceAccount) (cmp int, comparable bool)
   424  }
   425  
   426  func ParseServiceAccount_FieldPathValue(pathStr, valueStr string) (ServiceAccount_FieldPathValue, error) {
   427  	fp, err := ParseServiceAccount_FieldPath(pathStr)
   428  	if err != nil {
   429  		return nil, err
   430  	}
   431  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
   432  	if err != nil {
   433  		return nil, status.Errorf(codes.InvalidArgument, "error parsing ServiceAccount field path value from %s: %v", valueStr, err)
   434  	}
   435  	return fpv.(ServiceAccount_FieldPathValue), nil
   436  }
   437  
   438  func MustParseServiceAccount_FieldPathValue(pathStr, valueStr string) ServiceAccount_FieldPathValue {
   439  	fpv, err := ParseServiceAccount_FieldPathValue(pathStr, valueStr)
   440  	if err != nil {
   441  		panic(err)
   442  	}
   443  	return fpv
   444  }
   445  
   446  type ServiceAccount_FieldTerminalPathValue struct {
   447  	ServiceAccount_FieldTerminalPath
   448  	value interface{}
   449  }
   450  
   451  var _ ServiceAccount_FieldPathValue = (*ServiceAccount_FieldTerminalPathValue)(nil)
   452  
   453  // GetRawValue returns raw value stored under selected path for 'ServiceAccount' as interface{}
   454  func (fpv *ServiceAccount_FieldTerminalPathValue) GetRawValue() interface{} {
   455  	return fpv.value
   456  }
   457  func (fpv *ServiceAccount_FieldTerminalPathValue) AsNameValue() (*Name, bool) {
   458  	res, ok := fpv.value.(*Name)
   459  	return res, ok
   460  }
   461  func (fpv *ServiceAccount_FieldTerminalPathValue) AsDisplayNameValue() (string, bool) {
   462  	res, ok := fpv.value.(string)
   463  	return res, ok
   464  }
   465  func (fpv *ServiceAccount_FieldTerminalPathValue) AsEmailValue() (string, bool) {
   466  	res, ok := fpv.value.(string)
   467  	return res, ok
   468  }
   469  func (fpv *ServiceAccount_FieldTerminalPathValue) AsMetadataValue() (*meta.Meta, bool) {
   470  	res, ok := fpv.value.(*meta.Meta)
   471  	return res, ok
   472  }
   473  
   474  // SetTo stores value for selected field for object ServiceAccount
   475  func (fpv *ServiceAccount_FieldTerminalPathValue) SetTo(target **ServiceAccount) {
   476  	if *target == nil {
   477  		*target = new(ServiceAccount)
   478  	}
   479  	switch fpv.selector {
   480  	case ServiceAccount_FieldPathSelectorName:
   481  		(*target).Name = fpv.value.(*Name)
   482  	case ServiceAccount_FieldPathSelectorDisplayName:
   483  		(*target).DisplayName = fpv.value.(string)
   484  	case ServiceAccount_FieldPathSelectorEmail:
   485  		(*target).Email = fpv.value.(string)
   486  	case ServiceAccount_FieldPathSelectorMetadata:
   487  		(*target).Metadata = fpv.value.(*meta.Meta)
   488  	default:
   489  		panic(fmt.Sprintf("Invalid selector for ServiceAccount: %d", fpv.selector))
   490  	}
   491  }
   492  
   493  func (fpv *ServiceAccount_FieldTerminalPathValue) SetToRaw(target proto.Message) {
   494  	typedObject := target.(*ServiceAccount)
   495  	fpv.SetTo(&typedObject)
   496  }
   497  
   498  // CompareWith compares value in the 'ServiceAccount_FieldTerminalPathValue' with the value under path in 'ServiceAccount'.
   499  func (fpv *ServiceAccount_FieldTerminalPathValue) CompareWith(source *ServiceAccount) (int, bool) {
   500  	switch fpv.selector {
   501  	case ServiceAccount_FieldPathSelectorName:
   502  		leftValue := fpv.value.(*Name)
   503  		rightValue := source.GetName()
   504  		if leftValue == nil {
   505  			if rightValue != nil {
   506  				return -1, true
   507  			}
   508  			return 0, true
   509  		}
   510  		if rightValue == nil {
   511  			return 1, true
   512  		}
   513  		if leftValue.String() == rightValue.String() {
   514  			return 0, true
   515  		} else if leftValue.String() < rightValue.String() {
   516  			return -1, true
   517  		} else {
   518  			return 1, true
   519  		}
   520  	case ServiceAccount_FieldPathSelectorDisplayName:
   521  		leftValue := fpv.value.(string)
   522  		rightValue := source.GetDisplayName()
   523  		if (leftValue) == (rightValue) {
   524  			return 0, true
   525  		} else if (leftValue) < (rightValue) {
   526  			return -1, true
   527  		} else {
   528  			return 1, true
   529  		}
   530  	case ServiceAccount_FieldPathSelectorEmail:
   531  		leftValue := fpv.value.(string)
   532  		rightValue := source.GetEmail()
   533  		if (leftValue) == (rightValue) {
   534  			return 0, true
   535  		} else if (leftValue) < (rightValue) {
   536  			return -1, true
   537  		} else {
   538  			return 1, true
   539  		}
   540  	case ServiceAccount_FieldPathSelectorMetadata:
   541  		return 0, false
   542  	default:
   543  		panic(fmt.Sprintf("Invalid selector for ServiceAccount: %d", fpv.selector))
   544  	}
   545  }
   546  
   547  func (fpv *ServiceAccount_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
   548  	return fpv.CompareWith(source.(*ServiceAccount))
   549  }
   550  
   551  type ServiceAccount_FieldSubPathValue struct {
   552  	ServiceAccount_FieldPath
   553  	subPathValue gotenobject.FieldPathValue
   554  }
   555  
   556  var _ ServiceAccount_FieldPathValue = (*ServiceAccount_FieldSubPathValue)(nil)
   557  
   558  func (fpvs *ServiceAccount_FieldSubPathValue) AsMetadataPathValue() (meta.Meta_FieldPathValue, bool) {
   559  	res, ok := fpvs.subPathValue.(meta.Meta_FieldPathValue)
   560  	return res, ok
   561  }
   562  
   563  func (fpvs *ServiceAccount_FieldSubPathValue) SetTo(target **ServiceAccount) {
   564  	if *target == nil {
   565  		*target = new(ServiceAccount)
   566  	}
   567  	switch fpvs.Selector() {
   568  	case ServiceAccount_FieldPathSelectorMetadata:
   569  		fpvs.subPathValue.(meta.Meta_FieldPathValue).SetTo(&(*target).Metadata)
   570  	default:
   571  		panic(fmt.Sprintf("Invalid selector for ServiceAccount: %d", fpvs.Selector()))
   572  	}
   573  }
   574  
   575  func (fpvs *ServiceAccount_FieldSubPathValue) SetToRaw(target proto.Message) {
   576  	typedObject := target.(*ServiceAccount)
   577  	fpvs.SetTo(&typedObject)
   578  }
   579  
   580  func (fpvs *ServiceAccount_FieldSubPathValue) GetRawValue() interface{} {
   581  	return fpvs.subPathValue.GetRawValue()
   582  }
   583  
   584  func (fpvs *ServiceAccount_FieldSubPathValue) CompareWith(source *ServiceAccount) (int, bool) {
   585  	switch fpvs.Selector() {
   586  	case ServiceAccount_FieldPathSelectorMetadata:
   587  		return fpvs.subPathValue.(meta.Meta_FieldPathValue).CompareWith(source.GetMetadata())
   588  	default:
   589  		panic(fmt.Sprintf("Invalid selector for ServiceAccount: %d", fpvs.Selector()))
   590  	}
   591  }
   592  
   593  func (fpvs *ServiceAccount_FieldSubPathValue) CompareWithRaw(source proto.Message) (int, bool) {
   594  	return fpvs.CompareWith(source.(*ServiceAccount))
   595  }
   596  
   597  // ServiceAccount_FieldPathArrayItemValue allows storing single item in Path-specific values for ServiceAccount according to their type
   598  // Present only for array (repeated) types.
   599  type ServiceAccount_FieldPathArrayItemValue interface {
   600  	gotenobject.FieldPathArrayItemValue
   601  	ServiceAccount_FieldPath
   602  	ContainsValue(*ServiceAccount) bool
   603  }
   604  
   605  // ParseServiceAccount_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
   606  func ParseServiceAccount_FieldPathArrayItemValue(pathStr, valueStr string) (ServiceAccount_FieldPathArrayItemValue, error) {
   607  	fp, err := ParseServiceAccount_FieldPath(pathStr)
   608  	if err != nil {
   609  		return nil, err
   610  	}
   611  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
   612  	if err != nil {
   613  		return nil, status.Errorf(codes.InvalidArgument, "error parsing ServiceAccount field path array item value from %s: %v", valueStr, err)
   614  	}
   615  	return fpaiv.(ServiceAccount_FieldPathArrayItemValue), nil
   616  }
   617  
   618  func MustParseServiceAccount_FieldPathArrayItemValue(pathStr, valueStr string) ServiceAccount_FieldPathArrayItemValue {
   619  	fpaiv, err := ParseServiceAccount_FieldPathArrayItemValue(pathStr, valueStr)
   620  	if err != nil {
   621  		panic(err)
   622  	}
   623  	return fpaiv
   624  }
   625  
   626  type ServiceAccount_FieldTerminalPathArrayItemValue struct {
   627  	ServiceAccount_FieldTerminalPath
   628  	value interface{}
   629  }
   630  
   631  var _ ServiceAccount_FieldPathArrayItemValue = (*ServiceAccount_FieldTerminalPathArrayItemValue)(nil)
   632  
   633  // GetRawValue returns stored element value for array in object ServiceAccount as interface{}
   634  func (fpaiv *ServiceAccount_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
   635  	return fpaiv.value
   636  }
   637  
   638  func (fpaiv *ServiceAccount_FieldTerminalPathArrayItemValue) GetSingle(source *ServiceAccount) (interface{}, bool) {
   639  	return nil, false
   640  }
   641  
   642  func (fpaiv *ServiceAccount_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
   643  	return fpaiv.GetSingle(source.(*ServiceAccount))
   644  }
   645  
   646  // Contains returns a boolean indicating if value that is being held is present in given 'ServiceAccount'
   647  func (fpaiv *ServiceAccount_FieldTerminalPathArrayItemValue) ContainsValue(source *ServiceAccount) bool {
   648  	slice := fpaiv.ServiceAccount_FieldTerminalPath.Get(source)
   649  	for _, v := range slice {
   650  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
   651  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
   652  				return true
   653  			}
   654  		} else if reflect.DeepEqual(v, fpaiv.value) {
   655  			return true
   656  		}
   657  	}
   658  	return false
   659  }
   660  
   661  type ServiceAccount_FieldSubPathArrayItemValue struct {
   662  	ServiceAccount_FieldPath
   663  	subPathItemValue gotenobject.FieldPathArrayItemValue
   664  }
   665  
   666  // GetRawValue returns stored array item value
   667  func (fpaivs *ServiceAccount_FieldSubPathArrayItemValue) GetRawItemValue() interface{} {
   668  	return fpaivs.subPathItemValue.GetRawItemValue()
   669  }
   670  func (fpaivs *ServiceAccount_FieldSubPathArrayItemValue) AsMetadataPathItemValue() (meta.Meta_FieldPathArrayItemValue, bool) {
   671  	res, ok := fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue)
   672  	return res, ok
   673  }
   674  
   675  // Contains returns a boolean indicating if value that is being held is present in given 'ServiceAccount'
   676  func (fpaivs *ServiceAccount_FieldSubPathArrayItemValue) ContainsValue(source *ServiceAccount) bool {
   677  	switch fpaivs.Selector() {
   678  	case ServiceAccount_FieldPathSelectorMetadata:
   679  		return fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue).ContainsValue(source.GetMetadata())
   680  	default:
   681  		panic(fmt.Sprintf("Invalid selector for ServiceAccount: %d", fpaivs.Selector()))
   682  	}
   683  }
   684  
   685  // ServiceAccount_FieldPathArrayOfValues allows storing slice of values for ServiceAccount fields according to their type
   686  type ServiceAccount_FieldPathArrayOfValues interface {
   687  	gotenobject.FieldPathArrayOfValues
   688  	ServiceAccount_FieldPath
   689  }
   690  
   691  func ParseServiceAccount_FieldPathArrayOfValues(pathStr, valuesStr string) (ServiceAccount_FieldPathArrayOfValues, error) {
   692  	fp, err := ParseServiceAccount_FieldPath(pathStr)
   693  	if err != nil {
   694  		return nil, err
   695  	}
   696  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
   697  	if err != nil {
   698  		return nil, status.Errorf(codes.InvalidArgument, "error parsing ServiceAccount field path array of values from %s: %v", valuesStr, err)
   699  	}
   700  	return fpaov.(ServiceAccount_FieldPathArrayOfValues), nil
   701  }
   702  
   703  func MustParseServiceAccount_FieldPathArrayOfValues(pathStr, valuesStr string) ServiceAccount_FieldPathArrayOfValues {
   704  	fpaov, err := ParseServiceAccount_FieldPathArrayOfValues(pathStr, valuesStr)
   705  	if err != nil {
   706  		panic(err)
   707  	}
   708  	return fpaov
   709  }
   710  
   711  type ServiceAccount_FieldTerminalPathArrayOfValues struct {
   712  	ServiceAccount_FieldTerminalPath
   713  	values interface{}
   714  }
   715  
   716  var _ ServiceAccount_FieldPathArrayOfValues = (*ServiceAccount_FieldTerminalPathArrayOfValues)(nil)
   717  
   718  func (fpaov *ServiceAccount_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
   719  	switch fpaov.selector {
   720  	case ServiceAccount_FieldPathSelectorName:
   721  		for _, v := range fpaov.values.([]*Name) {
   722  			values = append(values, v)
   723  		}
   724  	case ServiceAccount_FieldPathSelectorDisplayName:
   725  		for _, v := range fpaov.values.([]string) {
   726  			values = append(values, v)
   727  		}
   728  	case ServiceAccount_FieldPathSelectorEmail:
   729  		for _, v := range fpaov.values.([]string) {
   730  			values = append(values, v)
   731  		}
   732  	case ServiceAccount_FieldPathSelectorMetadata:
   733  		for _, v := range fpaov.values.([]*meta.Meta) {
   734  			values = append(values, v)
   735  		}
   736  	}
   737  	return
   738  }
   739  func (fpaov *ServiceAccount_FieldTerminalPathArrayOfValues) AsNameArrayOfValues() ([]*Name, bool) {
   740  	res, ok := fpaov.values.([]*Name)
   741  	return res, ok
   742  }
   743  func (fpaov *ServiceAccount_FieldTerminalPathArrayOfValues) AsDisplayNameArrayOfValues() ([]string, bool) {
   744  	res, ok := fpaov.values.([]string)
   745  	return res, ok
   746  }
   747  func (fpaov *ServiceAccount_FieldTerminalPathArrayOfValues) AsEmailArrayOfValues() ([]string, bool) {
   748  	res, ok := fpaov.values.([]string)
   749  	return res, ok
   750  }
   751  func (fpaov *ServiceAccount_FieldTerminalPathArrayOfValues) AsMetadataArrayOfValues() ([]*meta.Meta, bool) {
   752  	res, ok := fpaov.values.([]*meta.Meta)
   753  	return res, ok
   754  }
   755  
   756  type ServiceAccount_FieldSubPathArrayOfValues struct {
   757  	ServiceAccount_FieldPath
   758  	subPathArrayOfValues gotenobject.FieldPathArrayOfValues
   759  }
   760  
   761  var _ ServiceAccount_FieldPathArrayOfValues = (*ServiceAccount_FieldSubPathArrayOfValues)(nil)
   762  
   763  func (fpsaov *ServiceAccount_FieldSubPathArrayOfValues) GetRawValues() []interface{} {
   764  	return fpsaov.subPathArrayOfValues.GetRawValues()
   765  }
   766  func (fpsaov *ServiceAccount_FieldSubPathArrayOfValues) AsMetadataPathArrayOfValues() (meta.Meta_FieldPathArrayOfValues, bool) {
   767  	res, ok := fpsaov.subPathArrayOfValues.(meta.Meta_FieldPathArrayOfValues)
   768  	return res, ok
   769  }