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

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/audit/proto/v1alpha2/common.proto
     3  // DO NOT EDIT!!!
     4  
     5  package common
     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  	anypb "google.golang.org/protobuf/types/known/anypb"
    27  	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
    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  	_ = &anypb.Any{}
    51  	_ = &timestamppb.Timestamp{}
    52  )
    53  
    54  // FieldPath provides implementation to handle
    55  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
    56  type Authentication_FieldPath interface {
    57  	gotenobject.FieldPath
    58  	Selector() Authentication_FieldPathSelector
    59  	Get(source *Authentication) []interface{}
    60  	GetSingle(source *Authentication) (interface{}, bool)
    61  	ClearValue(item *Authentication)
    62  
    63  	// Those methods build corresponding Authentication_FieldPathValue
    64  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
    65  	WithIValue(value interface{}) Authentication_FieldPathValue
    66  	WithIArrayOfValues(values interface{}) Authentication_FieldPathArrayOfValues
    67  	WithIArrayItemValue(value interface{}) Authentication_FieldPathArrayItemValue
    68  }
    69  
    70  type Authentication_FieldPathSelector int32
    71  
    72  const (
    73  	Authentication_FieldPathSelectorPrincipal     Authentication_FieldPathSelector = 0
    74  	Authentication_FieldPathSelectorPrincipalType Authentication_FieldPathSelector = 1
    75  )
    76  
    77  func (s Authentication_FieldPathSelector) String() string {
    78  	switch s {
    79  	case Authentication_FieldPathSelectorPrincipal:
    80  		return "principal"
    81  	case Authentication_FieldPathSelectorPrincipalType:
    82  		return "principal_type"
    83  	default:
    84  		panic(fmt.Sprintf("Invalid selector for Authentication: %d", s))
    85  	}
    86  }
    87  
    88  func BuildAuthentication_FieldPath(fp gotenobject.RawFieldPath) (Authentication_FieldPath, error) {
    89  	if len(fp) == 0 {
    90  		return nil, status.Error(codes.InvalidArgument, "empty field path for object Authentication")
    91  	}
    92  	if len(fp) == 1 {
    93  		switch fp[0] {
    94  		case "principal":
    95  			return &Authentication_FieldTerminalPath{selector: Authentication_FieldPathSelectorPrincipal}, nil
    96  		case "principal_type", "principalType", "principal-type":
    97  			return &Authentication_FieldTerminalPath{selector: Authentication_FieldPathSelectorPrincipalType}, nil
    98  		}
    99  	}
   100  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Authentication", fp)
   101  }
   102  
   103  func ParseAuthentication_FieldPath(rawField string) (Authentication_FieldPath, error) {
   104  	fp, err := gotenobject.ParseRawFieldPath(rawField)
   105  	if err != nil {
   106  		return nil, err
   107  	}
   108  	return BuildAuthentication_FieldPath(fp)
   109  }
   110  
   111  func MustParseAuthentication_FieldPath(rawField string) Authentication_FieldPath {
   112  	fp, err := ParseAuthentication_FieldPath(rawField)
   113  	if err != nil {
   114  		panic(err)
   115  	}
   116  	return fp
   117  }
   118  
   119  type Authentication_FieldTerminalPath struct {
   120  	selector Authentication_FieldPathSelector
   121  }
   122  
   123  var _ Authentication_FieldPath = (*Authentication_FieldTerminalPath)(nil)
   124  
   125  func (fp *Authentication_FieldTerminalPath) Selector() Authentication_FieldPathSelector {
   126  	return fp.selector
   127  }
   128  
   129  // String returns path representation in proto convention
   130  func (fp *Authentication_FieldTerminalPath) String() string {
   131  	return fp.selector.String()
   132  }
   133  
   134  // JSONString returns path representation is JSON convention
   135  func (fp *Authentication_FieldTerminalPath) JSONString() string {
   136  	return strcase.ToLowerCamel(fp.String())
   137  }
   138  
   139  // Get returns all values pointed by specific field from source Authentication
   140  func (fp *Authentication_FieldTerminalPath) Get(source *Authentication) (values []interface{}) {
   141  	if source != nil {
   142  		switch fp.selector {
   143  		case Authentication_FieldPathSelectorPrincipal:
   144  			values = append(values, source.Principal)
   145  		case Authentication_FieldPathSelectorPrincipalType:
   146  			values = append(values, source.PrincipalType)
   147  		default:
   148  			panic(fmt.Sprintf("Invalid selector for Authentication: %d", fp.selector))
   149  		}
   150  	}
   151  	return
   152  }
   153  
   154  func (fp *Authentication_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
   155  	return fp.Get(source.(*Authentication))
   156  }
   157  
   158  // GetSingle returns value pointed by specific field of from source Authentication
   159  func (fp *Authentication_FieldTerminalPath) GetSingle(source *Authentication) (interface{}, bool) {
   160  	switch fp.selector {
   161  	case Authentication_FieldPathSelectorPrincipal:
   162  		return source.GetPrincipal(), source != nil
   163  	case Authentication_FieldPathSelectorPrincipalType:
   164  		return source.GetPrincipalType(), source != nil
   165  	default:
   166  		panic(fmt.Sprintf("Invalid selector for Authentication: %d", fp.selector))
   167  	}
   168  }
   169  
   170  func (fp *Authentication_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   171  	return fp.GetSingle(source.(*Authentication))
   172  }
   173  
   174  // GetDefault returns a default value of the field type
   175  func (fp *Authentication_FieldTerminalPath) GetDefault() interface{} {
   176  	switch fp.selector {
   177  	case Authentication_FieldPathSelectorPrincipal:
   178  		return ""
   179  	case Authentication_FieldPathSelectorPrincipalType:
   180  		return ""
   181  	default:
   182  		panic(fmt.Sprintf("Invalid selector for Authentication: %d", fp.selector))
   183  	}
   184  }
   185  
   186  func (fp *Authentication_FieldTerminalPath) ClearValue(item *Authentication) {
   187  	if item != nil {
   188  		switch fp.selector {
   189  		case Authentication_FieldPathSelectorPrincipal:
   190  			item.Principal = ""
   191  		case Authentication_FieldPathSelectorPrincipalType:
   192  			item.PrincipalType = ""
   193  		default:
   194  			panic(fmt.Sprintf("Invalid selector for Authentication: %d", fp.selector))
   195  		}
   196  	}
   197  }
   198  
   199  func (fp *Authentication_FieldTerminalPath) ClearValueRaw(item proto.Message) {
   200  	fp.ClearValue(item.(*Authentication))
   201  }
   202  
   203  // IsLeaf - whether field path is holds simple value
   204  func (fp *Authentication_FieldTerminalPath) IsLeaf() bool {
   205  	return fp.selector == Authentication_FieldPathSelectorPrincipal ||
   206  		fp.selector == Authentication_FieldPathSelectorPrincipalType
   207  }
   208  
   209  func (fp *Authentication_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   210  	return []gotenobject.FieldPath{fp}
   211  }
   212  
   213  func (fp *Authentication_FieldTerminalPath) WithIValue(value interface{}) Authentication_FieldPathValue {
   214  	switch fp.selector {
   215  	case Authentication_FieldPathSelectorPrincipal:
   216  		return &Authentication_FieldTerminalPathValue{Authentication_FieldTerminalPath: *fp, value: value.(string)}
   217  	case Authentication_FieldPathSelectorPrincipalType:
   218  		return &Authentication_FieldTerminalPathValue{Authentication_FieldTerminalPath: *fp, value: value.(string)}
   219  	default:
   220  		panic(fmt.Sprintf("Invalid selector for Authentication: %d", fp.selector))
   221  	}
   222  }
   223  
   224  func (fp *Authentication_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   225  	return fp.WithIValue(value)
   226  }
   227  
   228  func (fp *Authentication_FieldTerminalPath) WithIArrayOfValues(values interface{}) Authentication_FieldPathArrayOfValues {
   229  	fpaov := &Authentication_FieldTerminalPathArrayOfValues{Authentication_FieldTerminalPath: *fp}
   230  	switch fp.selector {
   231  	case Authentication_FieldPathSelectorPrincipal:
   232  		return &Authentication_FieldTerminalPathArrayOfValues{Authentication_FieldTerminalPath: *fp, values: values.([]string)}
   233  	case Authentication_FieldPathSelectorPrincipalType:
   234  		return &Authentication_FieldTerminalPathArrayOfValues{Authentication_FieldTerminalPath: *fp, values: values.([]string)}
   235  	default:
   236  		panic(fmt.Sprintf("Invalid selector for Authentication: %d", fp.selector))
   237  	}
   238  	return fpaov
   239  }
   240  
   241  func (fp *Authentication_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   242  	return fp.WithIArrayOfValues(values)
   243  }
   244  
   245  func (fp *Authentication_FieldTerminalPath) WithIArrayItemValue(value interface{}) Authentication_FieldPathArrayItemValue {
   246  	switch fp.selector {
   247  	default:
   248  		panic(fmt.Sprintf("Invalid selector for Authentication: %d", fp.selector))
   249  	}
   250  }
   251  
   252  func (fp *Authentication_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   253  	return fp.WithIArrayItemValue(value)
   254  }
   255  
   256  // Authentication_FieldPathValue allows storing values for Authentication fields according to their type
   257  type Authentication_FieldPathValue interface {
   258  	Authentication_FieldPath
   259  	gotenobject.FieldPathValue
   260  	SetTo(target **Authentication)
   261  	CompareWith(*Authentication) (cmp int, comparable bool)
   262  }
   263  
   264  func ParseAuthentication_FieldPathValue(pathStr, valueStr string) (Authentication_FieldPathValue, error) {
   265  	fp, err := ParseAuthentication_FieldPath(pathStr)
   266  	if err != nil {
   267  		return nil, err
   268  	}
   269  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
   270  	if err != nil {
   271  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Authentication field path value from %s: %v", valueStr, err)
   272  	}
   273  	return fpv.(Authentication_FieldPathValue), nil
   274  }
   275  
   276  func MustParseAuthentication_FieldPathValue(pathStr, valueStr string) Authentication_FieldPathValue {
   277  	fpv, err := ParseAuthentication_FieldPathValue(pathStr, valueStr)
   278  	if err != nil {
   279  		panic(err)
   280  	}
   281  	return fpv
   282  }
   283  
   284  type Authentication_FieldTerminalPathValue struct {
   285  	Authentication_FieldTerminalPath
   286  	value interface{}
   287  }
   288  
   289  var _ Authentication_FieldPathValue = (*Authentication_FieldTerminalPathValue)(nil)
   290  
   291  // GetRawValue returns raw value stored under selected path for 'Authentication' as interface{}
   292  func (fpv *Authentication_FieldTerminalPathValue) GetRawValue() interface{} {
   293  	return fpv.value
   294  }
   295  func (fpv *Authentication_FieldTerminalPathValue) AsPrincipalValue() (string, bool) {
   296  	res, ok := fpv.value.(string)
   297  	return res, ok
   298  }
   299  func (fpv *Authentication_FieldTerminalPathValue) AsPrincipalTypeValue() (string, bool) {
   300  	res, ok := fpv.value.(string)
   301  	return res, ok
   302  }
   303  
   304  // SetTo stores value for selected field for object Authentication
   305  func (fpv *Authentication_FieldTerminalPathValue) SetTo(target **Authentication) {
   306  	if *target == nil {
   307  		*target = new(Authentication)
   308  	}
   309  	switch fpv.selector {
   310  	case Authentication_FieldPathSelectorPrincipal:
   311  		(*target).Principal = fpv.value.(string)
   312  	case Authentication_FieldPathSelectorPrincipalType:
   313  		(*target).PrincipalType = fpv.value.(string)
   314  	default:
   315  		panic(fmt.Sprintf("Invalid selector for Authentication: %d", fpv.selector))
   316  	}
   317  }
   318  
   319  func (fpv *Authentication_FieldTerminalPathValue) SetToRaw(target proto.Message) {
   320  	typedObject := target.(*Authentication)
   321  	fpv.SetTo(&typedObject)
   322  }
   323  
   324  // CompareWith compares value in the 'Authentication_FieldTerminalPathValue' with the value under path in 'Authentication'.
   325  func (fpv *Authentication_FieldTerminalPathValue) CompareWith(source *Authentication) (int, bool) {
   326  	switch fpv.selector {
   327  	case Authentication_FieldPathSelectorPrincipal:
   328  		leftValue := fpv.value.(string)
   329  		rightValue := source.GetPrincipal()
   330  		if (leftValue) == (rightValue) {
   331  			return 0, true
   332  		} else if (leftValue) < (rightValue) {
   333  			return -1, true
   334  		} else {
   335  			return 1, true
   336  		}
   337  	case Authentication_FieldPathSelectorPrincipalType:
   338  		leftValue := fpv.value.(string)
   339  		rightValue := source.GetPrincipalType()
   340  		if (leftValue) == (rightValue) {
   341  			return 0, true
   342  		} else if (leftValue) < (rightValue) {
   343  			return -1, true
   344  		} else {
   345  			return 1, true
   346  		}
   347  	default:
   348  		panic(fmt.Sprintf("Invalid selector for Authentication: %d", fpv.selector))
   349  	}
   350  }
   351  
   352  func (fpv *Authentication_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
   353  	return fpv.CompareWith(source.(*Authentication))
   354  }
   355  
   356  // Authentication_FieldPathArrayItemValue allows storing single item in Path-specific values for Authentication according to their type
   357  // Present only for array (repeated) types.
   358  type Authentication_FieldPathArrayItemValue interface {
   359  	gotenobject.FieldPathArrayItemValue
   360  	Authentication_FieldPath
   361  	ContainsValue(*Authentication) bool
   362  }
   363  
   364  // ParseAuthentication_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
   365  func ParseAuthentication_FieldPathArrayItemValue(pathStr, valueStr string) (Authentication_FieldPathArrayItemValue, error) {
   366  	fp, err := ParseAuthentication_FieldPath(pathStr)
   367  	if err != nil {
   368  		return nil, err
   369  	}
   370  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
   371  	if err != nil {
   372  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Authentication field path array item value from %s: %v", valueStr, err)
   373  	}
   374  	return fpaiv.(Authentication_FieldPathArrayItemValue), nil
   375  }
   376  
   377  func MustParseAuthentication_FieldPathArrayItemValue(pathStr, valueStr string) Authentication_FieldPathArrayItemValue {
   378  	fpaiv, err := ParseAuthentication_FieldPathArrayItemValue(pathStr, valueStr)
   379  	if err != nil {
   380  		panic(err)
   381  	}
   382  	return fpaiv
   383  }
   384  
   385  type Authentication_FieldTerminalPathArrayItemValue struct {
   386  	Authentication_FieldTerminalPath
   387  	value interface{}
   388  }
   389  
   390  var _ Authentication_FieldPathArrayItemValue = (*Authentication_FieldTerminalPathArrayItemValue)(nil)
   391  
   392  // GetRawValue returns stored element value for array in object Authentication as interface{}
   393  func (fpaiv *Authentication_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
   394  	return fpaiv.value
   395  }
   396  
   397  func (fpaiv *Authentication_FieldTerminalPathArrayItemValue) GetSingle(source *Authentication) (interface{}, bool) {
   398  	return nil, false
   399  }
   400  
   401  func (fpaiv *Authentication_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
   402  	return fpaiv.GetSingle(source.(*Authentication))
   403  }
   404  
   405  // Contains returns a boolean indicating if value that is being held is present in given 'Authentication'
   406  func (fpaiv *Authentication_FieldTerminalPathArrayItemValue) ContainsValue(source *Authentication) bool {
   407  	slice := fpaiv.Authentication_FieldTerminalPath.Get(source)
   408  	for _, v := range slice {
   409  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
   410  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
   411  				return true
   412  			}
   413  		} else if reflect.DeepEqual(v, fpaiv.value) {
   414  			return true
   415  		}
   416  	}
   417  	return false
   418  }
   419  
   420  // Authentication_FieldPathArrayOfValues allows storing slice of values for Authentication fields according to their type
   421  type Authentication_FieldPathArrayOfValues interface {
   422  	gotenobject.FieldPathArrayOfValues
   423  	Authentication_FieldPath
   424  }
   425  
   426  func ParseAuthentication_FieldPathArrayOfValues(pathStr, valuesStr string) (Authentication_FieldPathArrayOfValues, error) {
   427  	fp, err := ParseAuthentication_FieldPath(pathStr)
   428  	if err != nil {
   429  		return nil, err
   430  	}
   431  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
   432  	if err != nil {
   433  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Authentication field path array of values from %s: %v", valuesStr, err)
   434  	}
   435  	return fpaov.(Authentication_FieldPathArrayOfValues), nil
   436  }
   437  
   438  func MustParseAuthentication_FieldPathArrayOfValues(pathStr, valuesStr string) Authentication_FieldPathArrayOfValues {
   439  	fpaov, err := ParseAuthentication_FieldPathArrayOfValues(pathStr, valuesStr)
   440  	if err != nil {
   441  		panic(err)
   442  	}
   443  	return fpaov
   444  }
   445  
   446  type Authentication_FieldTerminalPathArrayOfValues struct {
   447  	Authentication_FieldTerminalPath
   448  	values interface{}
   449  }
   450  
   451  var _ Authentication_FieldPathArrayOfValues = (*Authentication_FieldTerminalPathArrayOfValues)(nil)
   452  
   453  func (fpaov *Authentication_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
   454  	switch fpaov.selector {
   455  	case Authentication_FieldPathSelectorPrincipal:
   456  		for _, v := range fpaov.values.([]string) {
   457  			values = append(values, v)
   458  		}
   459  	case Authentication_FieldPathSelectorPrincipalType:
   460  		for _, v := range fpaov.values.([]string) {
   461  			values = append(values, v)
   462  		}
   463  	}
   464  	return
   465  }
   466  func (fpaov *Authentication_FieldTerminalPathArrayOfValues) AsPrincipalArrayOfValues() ([]string, bool) {
   467  	res, ok := fpaov.values.([]string)
   468  	return res, ok
   469  }
   470  func (fpaov *Authentication_FieldTerminalPathArrayOfValues) AsPrincipalTypeArrayOfValues() ([]string, bool) {
   471  	res, ok := fpaov.values.([]string)
   472  	return res, ok
   473  }
   474  
   475  // FieldPath provides implementation to handle
   476  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
   477  type Authorization_FieldPath interface {
   478  	gotenobject.FieldPath
   479  	Selector() Authorization_FieldPathSelector
   480  	Get(source *Authorization) []interface{}
   481  	GetSingle(source *Authorization) (interface{}, bool)
   482  	ClearValue(item *Authorization)
   483  
   484  	// Those methods build corresponding Authorization_FieldPathValue
   485  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
   486  	WithIValue(value interface{}) Authorization_FieldPathValue
   487  	WithIArrayOfValues(values interface{}) Authorization_FieldPathArrayOfValues
   488  	WithIArrayItemValue(value interface{}) Authorization_FieldPathArrayItemValue
   489  }
   490  
   491  type Authorization_FieldPathSelector int32
   492  
   493  const (
   494  	Authorization_FieldPathSelectorGrantedPermissions Authorization_FieldPathSelector = 0
   495  	Authorization_FieldPathSelectorDeniedPermissions  Authorization_FieldPathSelector = 1
   496  )
   497  
   498  func (s Authorization_FieldPathSelector) String() string {
   499  	switch s {
   500  	case Authorization_FieldPathSelectorGrantedPermissions:
   501  		return "granted_permissions"
   502  	case Authorization_FieldPathSelectorDeniedPermissions:
   503  		return "denied_permissions"
   504  	default:
   505  		panic(fmt.Sprintf("Invalid selector for Authorization: %d", s))
   506  	}
   507  }
   508  
   509  func BuildAuthorization_FieldPath(fp gotenobject.RawFieldPath) (Authorization_FieldPath, error) {
   510  	if len(fp) == 0 {
   511  		return nil, status.Error(codes.InvalidArgument, "empty field path for object Authorization")
   512  	}
   513  	if len(fp) == 1 {
   514  		switch fp[0] {
   515  		case "granted_permissions", "grantedPermissions", "granted-permissions":
   516  			return &Authorization_FieldTerminalPath{selector: Authorization_FieldPathSelectorGrantedPermissions}, nil
   517  		case "denied_permissions", "deniedPermissions", "denied-permissions":
   518  			return &Authorization_FieldTerminalPath{selector: Authorization_FieldPathSelectorDeniedPermissions}, nil
   519  		}
   520  	}
   521  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Authorization", fp)
   522  }
   523  
   524  func ParseAuthorization_FieldPath(rawField string) (Authorization_FieldPath, error) {
   525  	fp, err := gotenobject.ParseRawFieldPath(rawField)
   526  	if err != nil {
   527  		return nil, err
   528  	}
   529  	return BuildAuthorization_FieldPath(fp)
   530  }
   531  
   532  func MustParseAuthorization_FieldPath(rawField string) Authorization_FieldPath {
   533  	fp, err := ParseAuthorization_FieldPath(rawField)
   534  	if err != nil {
   535  		panic(err)
   536  	}
   537  	return fp
   538  }
   539  
   540  type Authorization_FieldTerminalPath struct {
   541  	selector Authorization_FieldPathSelector
   542  }
   543  
   544  var _ Authorization_FieldPath = (*Authorization_FieldTerminalPath)(nil)
   545  
   546  func (fp *Authorization_FieldTerminalPath) Selector() Authorization_FieldPathSelector {
   547  	return fp.selector
   548  }
   549  
   550  // String returns path representation in proto convention
   551  func (fp *Authorization_FieldTerminalPath) String() string {
   552  	return fp.selector.String()
   553  }
   554  
   555  // JSONString returns path representation is JSON convention
   556  func (fp *Authorization_FieldTerminalPath) JSONString() string {
   557  	return strcase.ToLowerCamel(fp.String())
   558  }
   559  
   560  // Get returns all values pointed by specific field from source Authorization
   561  func (fp *Authorization_FieldTerminalPath) Get(source *Authorization) (values []interface{}) {
   562  	if source != nil {
   563  		switch fp.selector {
   564  		case Authorization_FieldPathSelectorGrantedPermissions:
   565  			for _, value := range source.GetGrantedPermissions() {
   566  				values = append(values, value)
   567  			}
   568  		case Authorization_FieldPathSelectorDeniedPermissions:
   569  			for _, value := range source.GetDeniedPermissions() {
   570  				values = append(values, value)
   571  			}
   572  		default:
   573  			panic(fmt.Sprintf("Invalid selector for Authorization: %d", fp.selector))
   574  		}
   575  	}
   576  	return
   577  }
   578  
   579  func (fp *Authorization_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
   580  	return fp.Get(source.(*Authorization))
   581  }
   582  
   583  // GetSingle returns value pointed by specific field of from source Authorization
   584  func (fp *Authorization_FieldTerminalPath) GetSingle(source *Authorization) (interface{}, bool) {
   585  	switch fp.selector {
   586  	case Authorization_FieldPathSelectorGrantedPermissions:
   587  		res := source.GetGrantedPermissions()
   588  		return res, res != nil
   589  	case Authorization_FieldPathSelectorDeniedPermissions:
   590  		res := source.GetDeniedPermissions()
   591  		return res, res != nil
   592  	default:
   593  		panic(fmt.Sprintf("Invalid selector for Authorization: %d", fp.selector))
   594  	}
   595  }
   596  
   597  func (fp *Authorization_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   598  	return fp.GetSingle(source.(*Authorization))
   599  }
   600  
   601  // GetDefault returns a default value of the field type
   602  func (fp *Authorization_FieldTerminalPath) GetDefault() interface{} {
   603  	switch fp.selector {
   604  	case Authorization_FieldPathSelectorGrantedPermissions:
   605  		return ([]string)(nil)
   606  	case Authorization_FieldPathSelectorDeniedPermissions:
   607  		return ([]string)(nil)
   608  	default:
   609  		panic(fmt.Sprintf("Invalid selector for Authorization: %d", fp.selector))
   610  	}
   611  }
   612  
   613  func (fp *Authorization_FieldTerminalPath) ClearValue(item *Authorization) {
   614  	if item != nil {
   615  		switch fp.selector {
   616  		case Authorization_FieldPathSelectorGrantedPermissions:
   617  			item.GrantedPermissions = nil
   618  		case Authorization_FieldPathSelectorDeniedPermissions:
   619  			item.DeniedPermissions = nil
   620  		default:
   621  			panic(fmt.Sprintf("Invalid selector for Authorization: %d", fp.selector))
   622  		}
   623  	}
   624  }
   625  
   626  func (fp *Authorization_FieldTerminalPath) ClearValueRaw(item proto.Message) {
   627  	fp.ClearValue(item.(*Authorization))
   628  }
   629  
   630  // IsLeaf - whether field path is holds simple value
   631  func (fp *Authorization_FieldTerminalPath) IsLeaf() bool {
   632  	return fp.selector == Authorization_FieldPathSelectorGrantedPermissions ||
   633  		fp.selector == Authorization_FieldPathSelectorDeniedPermissions
   634  }
   635  
   636  func (fp *Authorization_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   637  	return []gotenobject.FieldPath{fp}
   638  }
   639  
   640  func (fp *Authorization_FieldTerminalPath) WithIValue(value interface{}) Authorization_FieldPathValue {
   641  	switch fp.selector {
   642  	case Authorization_FieldPathSelectorGrantedPermissions:
   643  		return &Authorization_FieldTerminalPathValue{Authorization_FieldTerminalPath: *fp, value: value.([]string)}
   644  	case Authorization_FieldPathSelectorDeniedPermissions:
   645  		return &Authorization_FieldTerminalPathValue{Authorization_FieldTerminalPath: *fp, value: value.([]string)}
   646  	default:
   647  		panic(fmt.Sprintf("Invalid selector for Authorization: %d", fp.selector))
   648  	}
   649  }
   650  
   651  func (fp *Authorization_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   652  	return fp.WithIValue(value)
   653  }
   654  
   655  func (fp *Authorization_FieldTerminalPath) WithIArrayOfValues(values interface{}) Authorization_FieldPathArrayOfValues {
   656  	fpaov := &Authorization_FieldTerminalPathArrayOfValues{Authorization_FieldTerminalPath: *fp}
   657  	switch fp.selector {
   658  	case Authorization_FieldPathSelectorGrantedPermissions:
   659  		return &Authorization_FieldTerminalPathArrayOfValues{Authorization_FieldTerminalPath: *fp, values: values.([][]string)}
   660  	case Authorization_FieldPathSelectorDeniedPermissions:
   661  		return &Authorization_FieldTerminalPathArrayOfValues{Authorization_FieldTerminalPath: *fp, values: values.([][]string)}
   662  	default:
   663  		panic(fmt.Sprintf("Invalid selector for Authorization: %d", fp.selector))
   664  	}
   665  	return fpaov
   666  }
   667  
   668  func (fp *Authorization_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   669  	return fp.WithIArrayOfValues(values)
   670  }
   671  
   672  func (fp *Authorization_FieldTerminalPath) WithIArrayItemValue(value interface{}) Authorization_FieldPathArrayItemValue {
   673  	switch fp.selector {
   674  	case Authorization_FieldPathSelectorGrantedPermissions:
   675  		return &Authorization_FieldTerminalPathArrayItemValue{Authorization_FieldTerminalPath: *fp, value: value.(string)}
   676  	case Authorization_FieldPathSelectorDeniedPermissions:
   677  		return &Authorization_FieldTerminalPathArrayItemValue{Authorization_FieldTerminalPath: *fp, value: value.(string)}
   678  	default:
   679  		panic(fmt.Sprintf("Invalid selector for Authorization: %d", fp.selector))
   680  	}
   681  }
   682  
   683  func (fp *Authorization_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   684  	return fp.WithIArrayItemValue(value)
   685  }
   686  
   687  // Authorization_FieldPathValue allows storing values for Authorization fields according to their type
   688  type Authorization_FieldPathValue interface {
   689  	Authorization_FieldPath
   690  	gotenobject.FieldPathValue
   691  	SetTo(target **Authorization)
   692  	CompareWith(*Authorization) (cmp int, comparable bool)
   693  }
   694  
   695  func ParseAuthorization_FieldPathValue(pathStr, valueStr string) (Authorization_FieldPathValue, error) {
   696  	fp, err := ParseAuthorization_FieldPath(pathStr)
   697  	if err != nil {
   698  		return nil, err
   699  	}
   700  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
   701  	if err != nil {
   702  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Authorization field path value from %s: %v", valueStr, err)
   703  	}
   704  	return fpv.(Authorization_FieldPathValue), nil
   705  }
   706  
   707  func MustParseAuthorization_FieldPathValue(pathStr, valueStr string) Authorization_FieldPathValue {
   708  	fpv, err := ParseAuthorization_FieldPathValue(pathStr, valueStr)
   709  	if err != nil {
   710  		panic(err)
   711  	}
   712  	return fpv
   713  }
   714  
   715  type Authorization_FieldTerminalPathValue struct {
   716  	Authorization_FieldTerminalPath
   717  	value interface{}
   718  }
   719  
   720  var _ Authorization_FieldPathValue = (*Authorization_FieldTerminalPathValue)(nil)
   721  
   722  // GetRawValue returns raw value stored under selected path for 'Authorization' as interface{}
   723  func (fpv *Authorization_FieldTerminalPathValue) GetRawValue() interface{} {
   724  	return fpv.value
   725  }
   726  func (fpv *Authorization_FieldTerminalPathValue) AsGrantedPermissionsValue() ([]string, bool) {
   727  	res, ok := fpv.value.([]string)
   728  	return res, ok
   729  }
   730  func (fpv *Authorization_FieldTerminalPathValue) AsDeniedPermissionsValue() ([]string, bool) {
   731  	res, ok := fpv.value.([]string)
   732  	return res, ok
   733  }
   734  
   735  // SetTo stores value for selected field for object Authorization
   736  func (fpv *Authorization_FieldTerminalPathValue) SetTo(target **Authorization) {
   737  	if *target == nil {
   738  		*target = new(Authorization)
   739  	}
   740  	switch fpv.selector {
   741  	case Authorization_FieldPathSelectorGrantedPermissions:
   742  		(*target).GrantedPermissions = fpv.value.([]string)
   743  	case Authorization_FieldPathSelectorDeniedPermissions:
   744  		(*target).DeniedPermissions = fpv.value.([]string)
   745  	default:
   746  		panic(fmt.Sprintf("Invalid selector for Authorization: %d", fpv.selector))
   747  	}
   748  }
   749  
   750  func (fpv *Authorization_FieldTerminalPathValue) SetToRaw(target proto.Message) {
   751  	typedObject := target.(*Authorization)
   752  	fpv.SetTo(&typedObject)
   753  }
   754  
   755  // CompareWith compares value in the 'Authorization_FieldTerminalPathValue' with the value under path in 'Authorization'.
   756  func (fpv *Authorization_FieldTerminalPathValue) CompareWith(source *Authorization) (int, bool) {
   757  	switch fpv.selector {
   758  	case Authorization_FieldPathSelectorGrantedPermissions:
   759  		return 0, false
   760  	case Authorization_FieldPathSelectorDeniedPermissions:
   761  		return 0, false
   762  	default:
   763  		panic(fmt.Sprintf("Invalid selector for Authorization: %d", fpv.selector))
   764  	}
   765  }
   766  
   767  func (fpv *Authorization_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
   768  	return fpv.CompareWith(source.(*Authorization))
   769  }
   770  
   771  // Authorization_FieldPathArrayItemValue allows storing single item in Path-specific values for Authorization according to their type
   772  // Present only for array (repeated) types.
   773  type Authorization_FieldPathArrayItemValue interface {
   774  	gotenobject.FieldPathArrayItemValue
   775  	Authorization_FieldPath
   776  	ContainsValue(*Authorization) bool
   777  }
   778  
   779  // ParseAuthorization_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
   780  func ParseAuthorization_FieldPathArrayItemValue(pathStr, valueStr string) (Authorization_FieldPathArrayItemValue, error) {
   781  	fp, err := ParseAuthorization_FieldPath(pathStr)
   782  	if err != nil {
   783  		return nil, err
   784  	}
   785  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
   786  	if err != nil {
   787  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Authorization field path array item value from %s: %v", valueStr, err)
   788  	}
   789  	return fpaiv.(Authorization_FieldPathArrayItemValue), nil
   790  }
   791  
   792  func MustParseAuthorization_FieldPathArrayItemValue(pathStr, valueStr string) Authorization_FieldPathArrayItemValue {
   793  	fpaiv, err := ParseAuthorization_FieldPathArrayItemValue(pathStr, valueStr)
   794  	if err != nil {
   795  		panic(err)
   796  	}
   797  	return fpaiv
   798  }
   799  
   800  type Authorization_FieldTerminalPathArrayItemValue struct {
   801  	Authorization_FieldTerminalPath
   802  	value interface{}
   803  }
   804  
   805  var _ Authorization_FieldPathArrayItemValue = (*Authorization_FieldTerminalPathArrayItemValue)(nil)
   806  
   807  // GetRawValue returns stored element value for array in object Authorization as interface{}
   808  func (fpaiv *Authorization_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
   809  	return fpaiv.value
   810  }
   811  func (fpaiv *Authorization_FieldTerminalPathArrayItemValue) AsGrantedPermissionsItemValue() (string, bool) {
   812  	res, ok := fpaiv.value.(string)
   813  	return res, ok
   814  }
   815  func (fpaiv *Authorization_FieldTerminalPathArrayItemValue) AsDeniedPermissionsItemValue() (string, bool) {
   816  	res, ok := fpaiv.value.(string)
   817  	return res, ok
   818  }
   819  
   820  func (fpaiv *Authorization_FieldTerminalPathArrayItemValue) GetSingle(source *Authorization) (interface{}, bool) {
   821  	return nil, false
   822  }
   823  
   824  func (fpaiv *Authorization_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
   825  	return fpaiv.GetSingle(source.(*Authorization))
   826  }
   827  
   828  // Contains returns a boolean indicating if value that is being held is present in given 'Authorization'
   829  func (fpaiv *Authorization_FieldTerminalPathArrayItemValue) ContainsValue(source *Authorization) bool {
   830  	slice := fpaiv.Authorization_FieldTerminalPath.Get(source)
   831  	for _, v := range slice {
   832  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
   833  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
   834  				return true
   835  			}
   836  		} else if reflect.DeepEqual(v, fpaiv.value) {
   837  			return true
   838  		}
   839  	}
   840  	return false
   841  }
   842  
   843  // Authorization_FieldPathArrayOfValues allows storing slice of values for Authorization fields according to their type
   844  type Authorization_FieldPathArrayOfValues interface {
   845  	gotenobject.FieldPathArrayOfValues
   846  	Authorization_FieldPath
   847  }
   848  
   849  func ParseAuthorization_FieldPathArrayOfValues(pathStr, valuesStr string) (Authorization_FieldPathArrayOfValues, error) {
   850  	fp, err := ParseAuthorization_FieldPath(pathStr)
   851  	if err != nil {
   852  		return nil, err
   853  	}
   854  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
   855  	if err != nil {
   856  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Authorization field path array of values from %s: %v", valuesStr, err)
   857  	}
   858  	return fpaov.(Authorization_FieldPathArrayOfValues), nil
   859  }
   860  
   861  func MustParseAuthorization_FieldPathArrayOfValues(pathStr, valuesStr string) Authorization_FieldPathArrayOfValues {
   862  	fpaov, err := ParseAuthorization_FieldPathArrayOfValues(pathStr, valuesStr)
   863  	if err != nil {
   864  		panic(err)
   865  	}
   866  	return fpaov
   867  }
   868  
   869  type Authorization_FieldTerminalPathArrayOfValues struct {
   870  	Authorization_FieldTerminalPath
   871  	values interface{}
   872  }
   873  
   874  var _ Authorization_FieldPathArrayOfValues = (*Authorization_FieldTerminalPathArrayOfValues)(nil)
   875  
   876  func (fpaov *Authorization_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
   877  	switch fpaov.selector {
   878  	case Authorization_FieldPathSelectorGrantedPermissions:
   879  		for _, v := range fpaov.values.([][]string) {
   880  			values = append(values, v)
   881  		}
   882  	case Authorization_FieldPathSelectorDeniedPermissions:
   883  		for _, v := range fpaov.values.([][]string) {
   884  			values = append(values, v)
   885  		}
   886  	}
   887  	return
   888  }
   889  func (fpaov *Authorization_FieldTerminalPathArrayOfValues) AsGrantedPermissionsArrayOfValues() ([][]string, bool) {
   890  	res, ok := fpaov.values.([][]string)
   891  	return res, ok
   892  }
   893  func (fpaov *Authorization_FieldTerminalPathArrayOfValues) AsDeniedPermissionsArrayOfValues() ([][]string, bool) {
   894  	res, ok := fpaov.values.([][]string)
   895  	return res, ok
   896  }
   897  
   898  // FieldPath provides implementation to handle
   899  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
   900  type ServiceData_FieldPath interface {
   901  	gotenobject.FieldPath
   902  	Selector() ServiceData_FieldPathSelector
   903  	Get(source *ServiceData) []interface{}
   904  	GetSingle(source *ServiceData) (interface{}, bool)
   905  	ClearValue(item *ServiceData)
   906  
   907  	// Those methods build corresponding ServiceData_FieldPathValue
   908  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
   909  	WithIValue(value interface{}) ServiceData_FieldPathValue
   910  	WithIArrayOfValues(values interface{}) ServiceData_FieldPathArrayOfValues
   911  	WithIArrayItemValue(value interface{}) ServiceData_FieldPathArrayItemValue
   912  }
   913  
   914  type ServiceData_FieldPathSelector int32
   915  
   916  const (
   917  	ServiceData_FieldPathSelectorName     ServiceData_FieldPathSelector = 0
   918  	ServiceData_FieldPathSelectorRegionId ServiceData_FieldPathSelector = 1
   919  )
   920  
   921  func (s ServiceData_FieldPathSelector) String() string {
   922  	switch s {
   923  	case ServiceData_FieldPathSelectorName:
   924  		return "name"
   925  	case ServiceData_FieldPathSelectorRegionId:
   926  		return "region_id"
   927  	default:
   928  		panic(fmt.Sprintf("Invalid selector for ServiceData: %d", s))
   929  	}
   930  }
   931  
   932  func BuildServiceData_FieldPath(fp gotenobject.RawFieldPath) (ServiceData_FieldPath, error) {
   933  	if len(fp) == 0 {
   934  		return nil, status.Error(codes.InvalidArgument, "empty field path for object ServiceData")
   935  	}
   936  	if len(fp) == 1 {
   937  		switch fp[0] {
   938  		case "name":
   939  			return &ServiceData_FieldTerminalPath{selector: ServiceData_FieldPathSelectorName}, nil
   940  		case "region_id", "regionId", "region-id":
   941  			return &ServiceData_FieldTerminalPath{selector: ServiceData_FieldPathSelectorRegionId}, nil
   942  		}
   943  	}
   944  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object ServiceData", fp)
   945  }
   946  
   947  func ParseServiceData_FieldPath(rawField string) (ServiceData_FieldPath, error) {
   948  	fp, err := gotenobject.ParseRawFieldPath(rawField)
   949  	if err != nil {
   950  		return nil, err
   951  	}
   952  	return BuildServiceData_FieldPath(fp)
   953  }
   954  
   955  func MustParseServiceData_FieldPath(rawField string) ServiceData_FieldPath {
   956  	fp, err := ParseServiceData_FieldPath(rawField)
   957  	if err != nil {
   958  		panic(err)
   959  	}
   960  	return fp
   961  }
   962  
   963  type ServiceData_FieldTerminalPath struct {
   964  	selector ServiceData_FieldPathSelector
   965  }
   966  
   967  var _ ServiceData_FieldPath = (*ServiceData_FieldTerminalPath)(nil)
   968  
   969  func (fp *ServiceData_FieldTerminalPath) Selector() ServiceData_FieldPathSelector {
   970  	return fp.selector
   971  }
   972  
   973  // String returns path representation in proto convention
   974  func (fp *ServiceData_FieldTerminalPath) String() string {
   975  	return fp.selector.String()
   976  }
   977  
   978  // JSONString returns path representation is JSON convention
   979  func (fp *ServiceData_FieldTerminalPath) JSONString() string {
   980  	return strcase.ToLowerCamel(fp.String())
   981  }
   982  
   983  // Get returns all values pointed by specific field from source ServiceData
   984  func (fp *ServiceData_FieldTerminalPath) Get(source *ServiceData) (values []interface{}) {
   985  	if source != nil {
   986  		switch fp.selector {
   987  		case ServiceData_FieldPathSelectorName:
   988  			values = append(values, source.Name)
   989  		case ServiceData_FieldPathSelectorRegionId:
   990  			values = append(values, source.RegionId)
   991  		default:
   992  			panic(fmt.Sprintf("Invalid selector for ServiceData: %d", fp.selector))
   993  		}
   994  	}
   995  	return
   996  }
   997  
   998  func (fp *ServiceData_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
   999  	return fp.Get(source.(*ServiceData))
  1000  }
  1001  
  1002  // GetSingle returns value pointed by specific field of from source ServiceData
  1003  func (fp *ServiceData_FieldTerminalPath) GetSingle(source *ServiceData) (interface{}, bool) {
  1004  	switch fp.selector {
  1005  	case ServiceData_FieldPathSelectorName:
  1006  		return source.GetName(), source != nil
  1007  	case ServiceData_FieldPathSelectorRegionId:
  1008  		return source.GetRegionId(), source != nil
  1009  	default:
  1010  		panic(fmt.Sprintf("Invalid selector for ServiceData: %d", fp.selector))
  1011  	}
  1012  }
  1013  
  1014  func (fp *ServiceData_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1015  	return fp.GetSingle(source.(*ServiceData))
  1016  }
  1017  
  1018  // GetDefault returns a default value of the field type
  1019  func (fp *ServiceData_FieldTerminalPath) GetDefault() interface{} {
  1020  	switch fp.selector {
  1021  	case ServiceData_FieldPathSelectorName:
  1022  		return ""
  1023  	case ServiceData_FieldPathSelectorRegionId:
  1024  		return ""
  1025  	default:
  1026  		panic(fmt.Sprintf("Invalid selector for ServiceData: %d", fp.selector))
  1027  	}
  1028  }
  1029  
  1030  func (fp *ServiceData_FieldTerminalPath) ClearValue(item *ServiceData) {
  1031  	if item != nil {
  1032  		switch fp.selector {
  1033  		case ServiceData_FieldPathSelectorName:
  1034  			item.Name = ""
  1035  		case ServiceData_FieldPathSelectorRegionId:
  1036  			item.RegionId = ""
  1037  		default:
  1038  			panic(fmt.Sprintf("Invalid selector for ServiceData: %d", fp.selector))
  1039  		}
  1040  	}
  1041  }
  1042  
  1043  func (fp *ServiceData_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  1044  	fp.ClearValue(item.(*ServiceData))
  1045  }
  1046  
  1047  // IsLeaf - whether field path is holds simple value
  1048  func (fp *ServiceData_FieldTerminalPath) IsLeaf() bool {
  1049  	return fp.selector == ServiceData_FieldPathSelectorName ||
  1050  		fp.selector == ServiceData_FieldPathSelectorRegionId
  1051  }
  1052  
  1053  func (fp *ServiceData_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  1054  	return []gotenobject.FieldPath{fp}
  1055  }
  1056  
  1057  func (fp *ServiceData_FieldTerminalPath) WithIValue(value interface{}) ServiceData_FieldPathValue {
  1058  	switch fp.selector {
  1059  	case ServiceData_FieldPathSelectorName:
  1060  		return &ServiceData_FieldTerminalPathValue{ServiceData_FieldTerminalPath: *fp, value: value.(string)}
  1061  	case ServiceData_FieldPathSelectorRegionId:
  1062  		return &ServiceData_FieldTerminalPathValue{ServiceData_FieldTerminalPath: *fp, value: value.(string)}
  1063  	default:
  1064  		panic(fmt.Sprintf("Invalid selector for ServiceData: %d", fp.selector))
  1065  	}
  1066  }
  1067  
  1068  func (fp *ServiceData_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  1069  	return fp.WithIValue(value)
  1070  }
  1071  
  1072  func (fp *ServiceData_FieldTerminalPath) WithIArrayOfValues(values interface{}) ServiceData_FieldPathArrayOfValues {
  1073  	fpaov := &ServiceData_FieldTerminalPathArrayOfValues{ServiceData_FieldTerminalPath: *fp}
  1074  	switch fp.selector {
  1075  	case ServiceData_FieldPathSelectorName:
  1076  		return &ServiceData_FieldTerminalPathArrayOfValues{ServiceData_FieldTerminalPath: *fp, values: values.([]string)}
  1077  	case ServiceData_FieldPathSelectorRegionId:
  1078  		return &ServiceData_FieldTerminalPathArrayOfValues{ServiceData_FieldTerminalPath: *fp, values: values.([]string)}
  1079  	default:
  1080  		panic(fmt.Sprintf("Invalid selector for ServiceData: %d", fp.selector))
  1081  	}
  1082  	return fpaov
  1083  }
  1084  
  1085  func (fp *ServiceData_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  1086  	return fp.WithIArrayOfValues(values)
  1087  }
  1088  
  1089  func (fp *ServiceData_FieldTerminalPath) WithIArrayItemValue(value interface{}) ServiceData_FieldPathArrayItemValue {
  1090  	switch fp.selector {
  1091  	default:
  1092  		panic(fmt.Sprintf("Invalid selector for ServiceData: %d", fp.selector))
  1093  	}
  1094  }
  1095  
  1096  func (fp *ServiceData_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  1097  	return fp.WithIArrayItemValue(value)
  1098  }
  1099  
  1100  // ServiceData_FieldPathValue allows storing values for ServiceData fields according to their type
  1101  type ServiceData_FieldPathValue interface {
  1102  	ServiceData_FieldPath
  1103  	gotenobject.FieldPathValue
  1104  	SetTo(target **ServiceData)
  1105  	CompareWith(*ServiceData) (cmp int, comparable bool)
  1106  }
  1107  
  1108  func ParseServiceData_FieldPathValue(pathStr, valueStr string) (ServiceData_FieldPathValue, error) {
  1109  	fp, err := ParseServiceData_FieldPath(pathStr)
  1110  	if err != nil {
  1111  		return nil, err
  1112  	}
  1113  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  1114  	if err != nil {
  1115  		return nil, status.Errorf(codes.InvalidArgument, "error parsing ServiceData field path value from %s: %v", valueStr, err)
  1116  	}
  1117  	return fpv.(ServiceData_FieldPathValue), nil
  1118  }
  1119  
  1120  func MustParseServiceData_FieldPathValue(pathStr, valueStr string) ServiceData_FieldPathValue {
  1121  	fpv, err := ParseServiceData_FieldPathValue(pathStr, valueStr)
  1122  	if err != nil {
  1123  		panic(err)
  1124  	}
  1125  	return fpv
  1126  }
  1127  
  1128  type ServiceData_FieldTerminalPathValue struct {
  1129  	ServiceData_FieldTerminalPath
  1130  	value interface{}
  1131  }
  1132  
  1133  var _ ServiceData_FieldPathValue = (*ServiceData_FieldTerminalPathValue)(nil)
  1134  
  1135  // GetRawValue returns raw value stored under selected path for 'ServiceData' as interface{}
  1136  func (fpv *ServiceData_FieldTerminalPathValue) GetRawValue() interface{} {
  1137  	return fpv.value
  1138  }
  1139  func (fpv *ServiceData_FieldTerminalPathValue) AsNameValue() (string, bool) {
  1140  	res, ok := fpv.value.(string)
  1141  	return res, ok
  1142  }
  1143  func (fpv *ServiceData_FieldTerminalPathValue) AsRegionIdValue() (string, bool) {
  1144  	res, ok := fpv.value.(string)
  1145  	return res, ok
  1146  }
  1147  
  1148  // SetTo stores value for selected field for object ServiceData
  1149  func (fpv *ServiceData_FieldTerminalPathValue) SetTo(target **ServiceData) {
  1150  	if *target == nil {
  1151  		*target = new(ServiceData)
  1152  	}
  1153  	switch fpv.selector {
  1154  	case ServiceData_FieldPathSelectorName:
  1155  		(*target).Name = fpv.value.(string)
  1156  	case ServiceData_FieldPathSelectorRegionId:
  1157  		(*target).RegionId = fpv.value.(string)
  1158  	default:
  1159  		panic(fmt.Sprintf("Invalid selector for ServiceData: %d", fpv.selector))
  1160  	}
  1161  }
  1162  
  1163  func (fpv *ServiceData_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  1164  	typedObject := target.(*ServiceData)
  1165  	fpv.SetTo(&typedObject)
  1166  }
  1167  
  1168  // CompareWith compares value in the 'ServiceData_FieldTerminalPathValue' with the value under path in 'ServiceData'.
  1169  func (fpv *ServiceData_FieldTerminalPathValue) CompareWith(source *ServiceData) (int, bool) {
  1170  	switch fpv.selector {
  1171  	case ServiceData_FieldPathSelectorName:
  1172  		leftValue := fpv.value.(string)
  1173  		rightValue := source.GetName()
  1174  		if (leftValue) == (rightValue) {
  1175  			return 0, true
  1176  		} else if (leftValue) < (rightValue) {
  1177  			return -1, true
  1178  		} else {
  1179  			return 1, true
  1180  		}
  1181  	case ServiceData_FieldPathSelectorRegionId:
  1182  		leftValue := fpv.value.(string)
  1183  		rightValue := source.GetRegionId()
  1184  		if (leftValue) == (rightValue) {
  1185  			return 0, true
  1186  		} else if (leftValue) < (rightValue) {
  1187  			return -1, true
  1188  		} else {
  1189  			return 1, true
  1190  		}
  1191  	default:
  1192  		panic(fmt.Sprintf("Invalid selector for ServiceData: %d", fpv.selector))
  1193  	}
  1194  }
  1195  
  1196  func (fpv *ServiceData_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  1197  	return fpv.CompareWith(source.(*ServiceData))
  1198  }
  1199  
  1200  // ServiceData_FieldPathArrayItemValue allows storing single item in Path-specific values for ServiceData according to their type
  1201  // Present only for array (repeated) types.
  1202  type ServiceData_FieldPathArrayItemValue interface {
  1203  	gotenobject.FieldPathArrayItemValue
  1204  	ServiceData_FieldPath
  1205  	ContainsValue(*ServiceData) bool
  1206  }
  1207  
  1208  // ParseServiceData_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  1209  func ParseServiceData_FieldPathArrayItemValue(pathStr, valueStr string) (ServiceData_FieldPathArrayItemValue, error) {
  1210  	fp, err := ParseServiceData_FieldPath(pathStr)
  1211  	if err != nil {
  1212  		return nil, err
  1213  	}
  1214  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  1215  	if err != nil {
  1216  		return nil, status.Errorf(codes.InvalidArgument, "error parsing ServiceData field path array item value from %s: %v", valueStr, err)
  1217  	}
  1218  	return fpaiv.(ServiceData_FieldPathArrayItemValue), nil
  1219  }
  1220  
  1221  func MustParseServiceData_FieldPathArrayItemValue(pathStr, valueStr string) ServiceData_FieldPathArrayItemValue {
  1222  	fpaiv, err := ParseServiceData_FieldPathArrayItemValue(pathStr, valueStr)
  1223  	if err != nil {
  1224  		panic(err)
  1225  	}
  1226  	return fpaiv
  1227  }
  1228  
  1229  type ServiceData_FieldTerminalPathArrayItemValue struct {
  1230  	ServiceData_FieldTerminalPath
  1231  	value interface{}
  1232  }
  1233  
  1234  var _ ServiceData_FieldPathArrayItemValue = (*ServiceData_FieldTerminalPathArrayItemValue)(nil)
  1235  
  1236  // GetRawValue returns stored element value for array in object ServiceData as interface{}
  1237  func (fpaiv *ServiceData_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  1238  	return fpaiv.value
  1239  }
  1240  
  1241  func (fpaiv *ServiceData_FieldTerminalPathArrayItemValue) GetSingle(source *ServiceData) (interface{}, bool) {
  1242  	return nil, false
  1243  }
  1244  
  1245  func (fpaiv *ServiceData_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1246  	return fpaiv.GetSingle(source.(*ServiceData))
  1247  }
  1248  
  1249  // Contains returns a boolean indicating if value that is being held is present in given 'ServiceData'
  1250  func (fpaiv *ServiceData_FieldTerminalPathArrayItemValue) ContainsValue(source *ServiceData) bool {
  1251  	slice := fpaiv.ServiceData_FieldTerminalPath.Get(source)
  1252  	for _, v := range slice {
  1253  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  1254  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  1255  				return true
  1256  			}
  1257  		} else if reflect.DeepEqual(v, fpaiv.value) {
  1258  			return true
  1259  		}
  1260  	}
  1261  	return false
  1262  }
  1263  
  1264  // ServiceData_FieldPathArrayOfValues allows storing slice of values for ServiceData fields according to their type
  1265  type ServiceData_FieldPathArrayOfValues interface {
  1266  	gotenobject.FieldPathArrayOfValues
  1267  	ServiceData_FieldPath
  1268  }
  1269  
  1270  func ParseServiceData_FieldPathArrayOfValues(pathStr, valuesStr string) (ServiceData_FieldPathArrayOfValues, error) {
  1271  	fp, err := ParseServiceData_FieldPath(pathStr)
  1272  	if err != nil {
  1273  		return nil, err
  1274  	}
  1275  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  1276  	if err != nil {
  1277  		return nil, status.Errorf(codes.InvalidArgument, "error parsing ServiceData field path array of values from %s: %v", valuesStr, err)
  1278  	}
  1279  	return fpaov.(ServiceData_FieldPathArrayOfValues), nil
  1280  }
  1281  
  1282  func MustParseServiceData_FieldPathArrayOfValues(pathStr, valuesStr string) ServiceData_FieldPathArrayOfValues {
  1283  	fpaov, err := ParseServiceData_FieldPathArrayOfValues(pathStr, valuesStr)
  1284  	if err != nil {
  1285  		panic(err)
  1286  	}
  1287  	return fpaov
  1288  }
  1289  
  1290  type ServiceData_FieldTerminalPathArrayOfValues struct {
  1291  	ServiceData_FieldTerminalPath
  1292  	values interface{}
  1293  }
  1294  
  1295  var _ ServiceData_FieldPathArrayOfValues = (*ServiceData_FieldTerminalPathArrayOfValues)(nil)
  1296  
  1297  func (fpaov *ServiceData_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  1298  	switch fpaov.selector {
  1299  	case ServiceData_FieldPathSelectorName:
  1300  		for _, v := range fpaov.values.([]string) {
  1301  			values = append(values, v)
  1302  		}
  1303  	case ServiceData_FieldPathSelectorRegionId:
  1304  		for _, v := range fpaov.values.([]string) {
  1305  			values = append(values, v)
  1306  		}
  1307  	}
  1308  	return
  1309  }
  1310  func (fpaov *ServiceData_FieldTerminalPathArrayOfValues) AsNameArrayOfValues() ([]string, bool) {
  1311  	res, ok := fpaov.values.([]string)
  1312  	return res, ok
  1313  }
  1314  func (fpaov *ServiceData_FieldTerminalPathArrayOfValues) AsRegionIdArrayOfValues() ([]string, bool) {
  1315  	res, ok := fpaov.values.([]string)
  1316  	return res, ok
  1317  }
  1318  
  1319  // FieldPath provides implementation to handle
  1320  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  1321  type ObjectState_FieldPath interface {
  1322  	gotenobject.FieldPath
  1323  	Selector() ObjectState_FieldPathSelector
  1324  	Get(source *ObjectState) []interface{}
  1325  	GetSingle(source *ObjectState) (interface{}, bool)
  1326  	ClearValue(item *ObjectState)
  1327  
  1328  	// Those methods build corresponding ObjectState_FieldPathValue
  1329  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  1330  	WithIValue(value interface{}) ObjectState_FieldPathValue
  1331  	WithIArrayOfValues(values interface{}) ObjectState_FieldPathArrayOfValues
  1332  	WithIArrayItemValue(value interface{}) ObjectState_FieldPathArrayItemValue
  1333  }
  1334  
  1335  type ObjectState_FieldPathSelector int32
  1336  
  1337  const (
  1338  	ObjectState_FieldPathSelectorData   ObjectState_FieldPathSelector = 0
  1339  	ObjectState_FieldPathSelectorLabels ObjectState_FieldPathSelector = 1
  1340  )
  1341  
  1342  func (s ObjectState_FieldPathSelector) String() string {
  1343  	switch s {
  1344  	case ObjectState_FieldPathSelectorData:
  1345  		return "data"
  1346  	case ObjectState_FieldPathSelectorLabels:
  1347  		return "labels"
  1348  	default:
  1349  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", s))
  1350  	}
  1351  }
  1352  
  1353  func BuildObjectState_FieldPath(fp gotenobject.RawFieldPath) (ObjectState_FieldPath, error) {
  1354  	if len(fp) == 0 {
  1355  		return nil, status.Error(codes.InvalidArgument, "empty field path for object ObjectState")
  1356  	}
  1357  	if len(fp) == 1 {
  1358  		switch fp[0] {
  1359  		case "data":
  1360  			return &ObjectState_FieldTerminalPath{selector: ObjectState_FieldPathSelectorData}, nil
  1361  		case "labels":
  1362  			return &ObjectState_FieldTerminalPath{selector: ObjectState_FieldPathSelectorLabels}, nil
  1363  		}
  1364  	} else {
  1365  		switch fp[0] {
  1366  		case "labels":
  1367  			if len(fp) > 2 {
  1368  				return nil, status.Errorf(codes.InvalidArgument, "sub path for maps ('%s') are not supported (object ObjectState)", fp)
  1369  			}
  1370  			return &ObjectState_FieldPathMap{selector: ObjectState_FieldPathSelectorLabels, key: fp[1]}, nil
  1371  		}
  1372  	}
  1373  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object ObjectState", fp)
  1374  }
  1375  
  1376  func ParseObjectState_FieldPath(rawField string) (ObjectState_FieldPath, error) {
  1377  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  1378  	if err != nil {
  1379  		return nil, err
  1380  	}
  1381  	return BuildObjectState_FieldPath(fp)
  1382  }
  1383  
  1384  func MustParseObjectState_FieldPath(rawField string) ObjectState_FieldPath {
  1385  	fp, err := ParseObjectState_FieldPath(rawField)
  1386  	if err != nil {
  1387  		panic(err)
  1388  	}
  1389  	return fp
  1390  }
  1391  
  1392  type ObjectState_FieldTerminalPath struct {
  1393  	selector ObjectState_FieldPathSelector
  1394  }
  1395  
  1396  var _ ObjectState_FieldPath = (*ObjectState_FieldTerminalPath)(nil)
  1397  
  1398  func (fp *ObjectState_FieldTerminalPath) Selector() ObjectState_FieldPathSelector {
  1399  	return fp.selector
  1400  }
  1401  
  1402  // String returns path representation in proto convention
  1403  func (fp *ObjectState_FieldTerminalPath) String() string {
  1404  	return fp.selector.String()
  1405  }
  1406  
  1407  // JSONString returns path representation is JSON convention
  1408  func (fp *ObjectState_FieldTerminalPath) JSONString() string {
  1409  	return strcase.ToLowerCamel(fp.String())
  1410  }
  1411  
  1412  // Get returns all values pointed by specific field from source ObjectState
  1413  func (fp *ObjectState_FieldTerminalPath) Get(source *ObjectState) (values []interface{}) {
  1414  	if source != nil {
  1415  		switch fp.selector {
  1416  		case ObjectState_FieldPathSelectorData:
  1417  			if source.Data != nil {
  1418  				values = append(values, source.Data)
  1419  			}
  1420  		case ObjectState_FieldPathSelectorLabels:
  1421  			values = append(values, source.Labels)
  1422  		default:
  1423  			panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fp.selector))
  1424  		}
  1425  	}
  1426  	return
  1427  }
  1428  
  1429  func (fp *ObjectState_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  1430  	return fp.Get(source.(*ObjectState))
  1431  }
  1432  
  1433  // GetSingle returns value pointed by specific field of from source ObjectState
  1434  func (fp *ObjectState_FieldTerminalPath) GetSingle(source *ObjectState) (interface{}, bool) {
  1435  	switch fp.selector {
  1436  	case ObjectState_FieldPathSelectorData:
  1437  		res := source.GetData()
  1438  		return res, res != nil
  1439  	case ObjectState_FieldPathSelectorLabels:
  1440  		res := source.GetLabels()
  1441  		return res, res != nil
  1442  	default:
  1443  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fp.selector))
  1444  	}
  1445  }
  1446  
  1447  func (fp *ObjectState_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1448  	return fp.GetSingle(source.(*ObjectState))
  1449  }
  1450  
  1451  // GetDefault returns a default value of the field type
  1452  func (fp *ObjectState_FieldTerminalPath) GetDefault() interface{} {
  1453  	switch fp.selector {
  1454  	case ObjectState_FieldPathSelectorData:
  1455  		return (*anypb.Any)(nil)
  1456  	case ObjectState_FieldPathSelectorLabels:
  1457  		return (map[string]string)(nil)
  1458  	default:
  1459  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fp.selector))
  1460  	}
  1461  }
  1462  
  1463  func (fp *ObjectState_FieldTerminalPath) ClearValue(item *ObjectState) {
  1464  	if item != nil {
  1465  		switch fp.selector {
  1466  		case ObjectState_FieldPathSelectorData:
  1467  			item.Data = nil
  1468  		case ObjectState_FieldPathSelectorLabels:
  1469  			item.Labels = nil
  1470  		default:
  1471  			panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fp.selector))
  1472  		}
  1473  	}
  1474  }
  1475  
  1476  func (fp *ObjectState_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  1477  	fp.ClearValue(item.(*ObjectState))
  1478  }
  1479  
  1480  // IsLeaf - whether field path is holds simple value
  1481  func (fp *ObjectState_FieldTerminalPath) IsLeaf() bool {
  1482  	return fp.selector == ObjectState_FieldPathSelectorData ||
  1483  		fp.selector == ObjectState_FieldPathSelectorLabels
  1484  }
  1485  
  1486  func (fp *ObjectState_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  1487  	return []gotenobject.FieldPath{fp}
  1488  }
  1489  
  1490  func (fp *ObjectState_FieldTerminalPath) WithIValue(value interface{}) ObjectState_FieldPathValue {
  1491  	switch fp.selector {
  1492  	case ObjectState_FieldPathSelectorData:
  1493  		return &ObjectState_FieldTerminalPathValue{ObjectState_FieldTerminalPath: *fp, value: value.(*anypb.Any)}
  1494  	case ObjectState_FieldPathSelectorLabels:
  1495  		return &ObjectState_FieldTerminalPathValue{ObjectState_FieldTerminalPath: *fp, value: value.(map[string]string)}
  1496  	default:
  1497  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fp.selector))
  1498  	}
  1499  }
  1500  
  1501  func (fp *ObjectState_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  1502  	return fp.WithIValue(value)
  1503  }
  1504  
  1505  func (fp *ObjectState_FieldTerminalPath) WithIArrayOfValues(values interface{}) ObjectState_FieldPathArrayOfValues {
  1506  	fpaov := &ObjectState_FieldTerminalPathArrayOfValues{ObjectState_FieldTerminalPath: *fp}
  1507  	switch fp.selector {
  1508  	case ObjectState_FieldPathSelectorData:
  1509  		return &ObjectState_FieldTerminalPathArrayOfValues{ObjectState_FieldTerminalPath: *fp, values: values.([]*anypb.Any)}
  1510  	case ObjectState_FieldPathSelectorLabels:
  1511  		return &ObjectState_FieldTerminalPathArrayOfValues{ObjectState_FieldTerminalPath: *fp, values: values.([]map[string]string)}
  1512  	default:
  1513  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fp.selector))
  1514  	}
  1515  	return fpaov
  1516  }
  1517  
  1518  func (fp *ObjectState_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  1519  	return fp.WithIArrayOfValues(values)
  1520  }
  1521  
  1522  func (fp *ObjectState_FieldTerminalPath) WithIArrayItemValue(value interface{}) ObjectState_FieldPathArrayItemValue {
  1523  	switch fp.selector {
  1524  	default:
  1525  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fp.selector))
  1526  	}
  1527  }
  1528  
  1529  func (fp *ObjectState_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  1530  	return fp.WithIArrayItemValue(value)
  1531  }
  1532  
  1533  // FieldPath for map type with additional Key information
  1534  type ObjectState_FieldPathMap struct {
  1535  	key      string
  1536  	selector ObjectState_FieldPathSelector
  1537  }
  1538  
  1539  var _ ObjectState_FieldPath = (*ObjectState_FieldPathMap)(nil)
  1540  
  1541  func (fpm *ObjectState_FieldPathMap) Selector() ObjectState_FieldPathSelector {
  1542  	return fpm.selector
  1543  }
  1544  
  1545  func (fpm *ObjectState_FieldPathMap) Key() string {
  1546  	return fpm.key
  1547  }
  1548  
  1549  // String returns path representation in proto convention
  1550  func (fpm *ObjectState_FieldPathMap) String() string {
  1551  	return fpm.selector.String() + "." + fpm.key
  1552  }
  1553  
  1554  // JSONString returns path representation is JSON convention. Note that map keys are not transformed
  1555  func (fpm *ObjectState_FieldPathMap) JSONString() string {
  1556  	return strcase.ToLowerCamel(fpm.selector.String()) + "." + fpm.key
  1557  }
  1558  
  1559  // Get returns all values pointed by selected field map key from source ObjectState
  1560  func (fpm *ObjectState_FieldPathMap) Get(source *ObjectState) (values []interface{}) {
  1561  	switch fpm.selector {
  1562  	case ObjectState_FieldPathSelectorLabels:
  1563  		if value, ok := source.GetLabels()[fpm.key]; ok {
  1564  			values = append(values, value)
  1565  		}
  1566  	default:
  1567  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpm.selector))
  1568  	}
  1569  	return
  1570  }
  1571  
  1572  func (fpm *ObjectState_FieldPathMap) GetRaw(source proto.Message) []interface{} {
  1573  	return fpm.Get(source.(*ObjectState))
  1574  }
  1575  
  1576  // GetSingle returns value by selected field map key from source ObjectState
  1577  func (fpm *ObjectState_FieldPathMap) GetSingle(source *ObjectState) (interface{}, bool) {
  1578  	switch fpm.selector {
  1579  	case ObjectState_FieldPathSelectorLabels:
  1580  		res, ok := source.GetLabels()[fpm.key]
  1581  		return res, ok
  1582  	default:
  1583  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpm.selector))
  1584  	}
  1585  }
  1586  
  1587  func (fpm *ObjectState_FieldPathMap) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1588  	return fpm.GetSingle(source.(*ObjectState))
  1589  }
  1590  
  1591  // GetDefault returns a default value of the field type
  1592  func (fpm *ObjectState_FieldPathMap) GetDefault() interface{} {
  1593  	switch fpm.selector {
  1594  	case ObjectState_FieldPathSelectorLabels:
  1595  		var v string
  1596  		return v
  1597  	default:
  1598  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpm.selector))
  1599  	}
  1600  }
  1601  
  1602  func (fpm *ObjectState_FieldPathMap) ClearValue(item *ObjectState) {
  1603  	if item != nil {
  1604  		switch fpm.selector {
  1605  		case ObjectState_FieldPathSelectorLabels:
  1606  			delete(item.Labels, fpm.key)
  1607  		default:
  1608  			panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpm.selector))
  1609  		}
  1610  	}
  1611  }
  1612  
  1613  func (fpm *ObjectState_FieldPathMap) ClearValueRaw(item proto.Message) {
  1614  	fpm.ClearValue(item.(*ObjectState))
  1615  }
  1616  
  1617  // IsLeaf - whether field path is holds simple value
  1618  func (fpm *ObjectState_FieldPathMap) IsLeaf() bool {
  1619  	switch fpm.selector {
  1620  	case ObjectState_FieldPathSelectorLabels:
  1621  		return true
  1622  	default:
  1623  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpm.selector))
  1624  	}
  1625  }
  1626  
  1627  func (fpm *ObjectState_FieldPathMap) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  1628  	return []gotenobject.FieldPath{fpm}
  1629  }
  1630  
  1631  func (fpm *ObjectState_FieldPathMap) WithIValue(value interface{}) ObjectState_FieldPathValue {
  1632  	switch fpm.selector {
  1633  	case ObjectState_FieldPathSelectorLabels:
  1634  		return &ObjectState_FieldPathMapValue{ObjectState_FieldPathMap: *fpm, value: value.(string)}
  1635  	default:
  1636  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpm.selector))
  1637  	}
  1638  }
  1639  
  1640  func (fpm *ObjectState_FieldPathMap) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  1641  	return fpm.WithIValue(value)
  1642  }
  1643  
  1644  func (fpm *ObjectState_FieldPathMap) WithIArrayOfValues(values interface{}) ObjectState_FieldPathArrayOfValues {
  1645  	switch fpm.selector {
  1646  	case ObjectState_FieldPathSelectorLabels:
  1647  		return &ObjectState_FieldPathMapArrayOfValues{ObjectState_FieldPathMap: *fpm, values: values.([]string)}
  1648  	default:
  1649  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpm.selector))
  1650  	}
  1651  }
  1652  
  1653  func (fpm *ObjectState_FieldPathMap) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  1654  	return fpm.WithIArrayOfValues(values)
  1655  }
  1656  
  1657  func (fpm *ObjectState_FieldPathMap) WithIArrayItemValue(value interface{}) ObjectState_FieldPathArrayItemValue {
  1658  	panic("Cannot create array item value from map fieldpath")
  1659  }
  1660  
  1661  func (fpm *ObjectState_FieldPathMap) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  1662  	return fpm.WithIArrayItemValue(value)
  1663  }
  1664  
  1665  // ObjectState_FieldPathValue allows storing values for ObjectState fields according to their type
  1666  type ObjectState_FieldPathValue interface {
  1667  	ObjectState_FieldPath
  1668  	gotenobject.FieldPathValue
  1669  	SetTo(target **ObjectState)
  1670  	CompareWith(*ObjectState) (cmp int, comparable bool)
  1671  }
  1672  
  1673  func ParseObjectState_FieldPathValue(pathStr, valueStr string) (ObjectState_FieldPathValue, error) {
  1674  	fp, err := ParseObjectState_FieldPath(pathStr)
  1675  	if err != nil {
  1676  		return nil, err
  1677  	}
  1678  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  1679  	if err != nil {
  1680  		return nil, status.Errorf(codes.InvalidArgument, "error parsing ObjectState field path value from %s: %v", valueStr, err)
  1681  	}
  1682  	return fpv.(ObjectState_FieldPathValue), nil
  1683  }
  1684  
  1685  func MustParseObjectState_FieldPathValue(pathStr, valueStr string) ObjectState_FieldPathValue {
  1686  	fpv, err := ParseObjectState_FieldPathValue(pathStr, valueStr)
  1687  	if err != nil {
  1688  		panic(err)
  1689  	}
  1690  	return fpv
  1691  }
  1692  
  1693  type ObjectState_FieldTerminalPathValue struct {
  1694  	ObjectState_FieldTerminalPath
  1695  	value interface{}
  1696  }
  1697  
  1698  var _ ObjectState_FieldPathValue = (*ObjectState_FieldTerminalPathValue)(nil)
  1699  
  1700  // GetRawValue returns raw value stored under selected path for 'ObjectState' as interface{}
  1701  func (fpv *ObjectState_FieldTerminalPathValue) GetRawValue() interface{} {
  1702  	return fpv.value
  1703  }
  1704  func (fpv *ObjectState_FieldTerminalPathValue) AsDataValue() (*anypb.Any, bool) {
  1705  	res, ok := fpv.value.(*anypb.Any)
  1706  	return res, ok
  1707  }
  1708  func (fpv *ObjectState_FieldTerminalPathValue) AsLabelsValue() (map[string]string, bool) {
  1709  	res, ok := fpv.value.(map[string]string)
  1710  	return res, ok
  1711  }
  1712  
  1713  // SetTo stores value for selected field for object ObjectState
  1714  func (fpv *ObjectState_FieldTerminalPathValue) SetTo(target **ObjectState) {
  1715  	if *target == nil {
  1716  		*target = new(ObjectState)
  1717  	}
  1718  	switch fpv.selector {
  1719  	case ObjectState_FieldPathSelectorData:
  1720  		(*target).Data = fpv.value.(*anypb.Any)
  1721  	case ObjectState_FieldPathSelectorLabels:
  1722  		(*target).Labels = fpv.value.(map[string]string)
  1723  	default:
  1724  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpv.selector))
  1725  	}
  1726  }
  1727  
  1728  func (fpv *ObjectState_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  1729  	typedObject := target.(*ObjectState)
  1730  	fpv.SetTo(&typedObject)
  1731  }
  1732  
  1733  // CompareWith compares value in the 'ObjectState_FieldTerminalPathValue' with the value under path in 'ObjectState'.
  1734  func (fpv *ObjectState_FieldTerminalPathValue) CompareWith(source *ObjectState) (int, bool) {
  1735  	switch fpv.selector {
  1736  	case ObjectState_FieldPathSelectorData:
  1737  		return 0, false
  1738  	case ObjectState_FieldPathSelectorLabels:
  1739  		return 0, false
  1740  	default:
  1741  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpv.selector))
  1742  	}
  1743  }
  1744  
  1745  func (fpv *ObjectState_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  1746  	return fpv.CompareWith(source.(*ObjectState))
  1747  }
  1748  
  1749  type ObjectState_FieldPathMapValue struct {
  1750  	ObjectState_FieldPathMap
  1751  	value interface{}
  1752  }
  1753  
  1754  var _ ObjectState_FieldPathValue = (*ObjectState_FieldPathMapValue)(nil)
  1755  
  1756  // GetValue returns value stored under selected field in ObjectState as interface{}
  1757  func (fpmv *ObjectState_FieldPathMapValue) GetRawValue() interface{} {
  1758  	return fpmv.value
  1759  }
  1760  func (fpmv *ObjectState_FieldPathMapValue) AsLabelsElementValue() (string, bool) {
  1761  	res, ok := fpmv.value.(string)
  1762  	return res, ok
  1763  }
  1764  
  1765  // SetTo stores value for selected field in ObjectState
  1766  func (fpmv *ObjectState_FieldPathMapValue) SetTo(target **ObjectState) {
  1767  	if *target == nil {
  1768  		*target = new(ObjectState)
  1769  	}
  1770  	switch fpmv.selector {
  1771  	case ObjectState_FieldPathSelectorLabels:
  1772  		if (*target).Labels == nil {
  1773  			(*target).Labels = make(map[string]string)
  1774  		}
  1775  		(*target).Labels[fpmv.key] = fpmv.value.(string)
  1776  	default:
  1777  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpmv.selector))
  1778  	}
  1779  }
  1780  
  1781  func (fpmv *ObjectState_FieldPathMapValue) SetToRaw(target proto.Message) {
  1782  	typedObject := target.(*ObjectState)
  1783  	fpmv.SetTo(&typedObject)
  1784  }
  1785  
  1786  // CompareWith compares value in the 'ObjectState_FieldPathMapValue' with the value under path in 'ObjectState'.
  1787  func (fpmv *ObjectState_FieldPathMapValue) CompareWith(source *ObjectState) (int, bool) {
  1788  	switch fpmv.selector {
  1789  	case ObjectState_FieldPathSelectorLabels:
  1790  		leftValue := fpmv.value.(string)
  1791  		rightValue := source.GetLabels()[fpmv.key]
  1792  		if (leftValue) == (rightValue) {
  1793  			return 0, true
  1794  		} else if (leftValue) < (rightValue) {
  1795  			return -1, true
  1796  		} else {
  1797  			return 1, true
  1798  		}
  1799  	default:
  1800  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpmv.selector))
  1801  	}
  1802  }
  1803  
  1804  func (fpmv *ObjectState_FieldPathMapValue) CompareWithRaw(source proto.Message) (int, bool) {
  1805  	return fpmv.CompareWith(source.(*ObjectState))
  1806  }
  1807  
  1808  // ObjectState_FieldPathArrayItemValue allows storing single item in Path-specific values for ObjectState according to their type
  1809  // Present only for array (repeated) types.
  1810  type ObjectState_FieldPathArrayItemValue interface {
  1811  	gotenobject.FieldPathArrayItemValue
  1812  	ObjectState_FieldPath
  1813  	ContainsValue(*ObjectState) bool
  1814  }
  1815  
  1816  // ParseObjectState_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  1817  func ParseObjectState_FieldPathArrayItemValue(pathStr, valueStr string) (ObjectState_FieldPathArrayItemValue, error) {
  1818  	fp, err := ParseObjectState_FieldPath(pathStr)
  1819  	if err != nil {
  1820  		return nil, err
  1821  	}
  1822  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  1823  	if err != nil {
  1824  		return nil, status.Errorf(codes.InvalidArgument, "error parsing ObjectState field path array item value from %s: %v", valueStr, err)
  1825  	}
  1826  	return fpaiv.(ObjectState_FieldPathArrayItemValue), nil
  1827  }
  1828  
  1829  func MustParseObjectState_FieldPathArrayItemValue(pathStr, valueStr string) ObjectState_FieldPathArrayItemValue {
  1830  	fpaiv, err := ParseObjectState_FieldPathArrayItemValue(pathStr, valueStr)
  1831  	if err != nil {
  1832  		panic(err)
  1833  	}
  1834  	return fpaiv
  1835  }
  1836  
  1837  type ObjectState_FieldTerminalPathArrayItemValue struct {
  1838  	ObjectState_FieldTerminalPath
  1839  	value interface{}
  1840  }
  1841  
  1842  var _ ObjectState_FieldPathArrayItemValue = (*ObjectState_FieldTerminalPathArrayItemValue)(nil)
  1843  
  1844  // GetRawValue returns stored element value for array in object ObjectState as interface{}
  1845  func (fpaiv *ObjectState_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  1846  	return fpaiv.value
  1847  }
  1848  
  1849  func (fpaiv *ObjectState_FieldTerminalPathArrayItemValue) GetSingle(source *ObjectState) (interface{}, bool) {
  1850  	return nil, false
  1851  }
  1852  
  1853  func (fpaiv *ObjectState_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1854  	return fpaiv.GetSingle(source.(*ObjectState))
  1855  }
  1856  
  1857  // Contains returns a boolean indicating if value that is being held is present in given 'ObjectState'
  1858  func (fpaiv *ObjectState_FieldTerminalPathArrayItemValue) ContainsValue(source *ObjectState) bool {
  1859  	slice := fpaiv.ObjectState_FieldTerminalPath.Get(source)
  1860  	for _, v := range slice {
  1861  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  1862  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  1863  				return true
  1864  			}
  1865  		} else if reflect.DeepEqual(v, fpaiv.value) {
  1866  			return true
  1867  		}
  1868  	}
  1869  	return false
  1870  }
  1871  
  1872  // ObjectState_FieldPathArrayOfValues allows storing slice of values for ObjectState fields according to their type
  1873  type ObjectState_FieldPathArrayOfValues interface {
  1874  	gotenobject.FieldPathArrayOfValues
  1875  	ObjectState_FieldPath
  1876  }
  1877  
  1878  func ParseObjectState_FieldPathArrayOfValues(pathStr, valuesStr string) (ObjectState_FieldPathArrayOfValues, error) {
  1879  	fp, err := ParseObjectState_FieldPath(pathStr)
  1880  	if err != nil {
  1881  		return nil, err
  1882  	}
  1883  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  1884  	if err != nil {
  1885  		return nil, status.Errorf(codes.InvalidArgument, "error parsing ObjectState field path array of values from %s: %v", valuesStr, err)
  1886  	}
  1887  	return fpaov.(ObjectState_FieldPathArrayOfValues), nil
  1888  }
  1889  
  1890  func MustParseObjectState_FieldPathArrayOfValues(pathStr, valuesStr string) ObjectState_FieldPathArrayOfValues {
  1891  	fpaov, err := ParseObjectState_FieldPathArrayOfValues(pathStr, valuesStr)
  1892  	if err != nil {
  1893  		panic(err)
  1894  	}
  1895  	return fpaov
  1896  }
  1897  
  1898  type ObjectState_FieldTerminalPathArrayOfValues struct {
  1899  	ObjectState_FieldTerminalPath
  1900  	values interface{}
  1901  }
  1902  
  1903  var _ ObjectState_FieldPathArrayOfValues = (*ObjectState_FieldTerminalPathArrayOfValues)(nil)
  1904  
  1905  func (fpaov *ObjectState_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  1906  	switch fpaov.selector {
  1907  	case ObjectState_FieldPathSelectorData:
  1908  		for _, v := range fpaov.values.([]*anypb.Any) {
  1909  			values = append(values, v)
  1910  		}
  1911  	case ObjectState_FieldPathSelectorLabels:
  1912  		for _, v := range fpaov.values.([]map[string]string) {
  1913  			values = append(values, v)
  1914  		}
  1915  	}
  1916  	return
  1917  }
  1918  func (fpaov *ObjectState_FieldTerminalPathArrayOfValues) AsDataArrayOfValues() ([]*anypb.Any, bool) {
  1919  	res, ok := fpaov.values.([]*anypb.Any)
  1920  	return res, ok
  1921  }
  1922  func (fpaov *ObjectState_FieldTerminalPathArrayOfValues) AsLabelsArrayOfValues() ([]map[string]string, bool) {
  1923  	res, ok := fpaov.values.([]map[string]string)
  1924  	return res, ok
  1925  }
  1926  
  1927  type ObjectState_FieldPathMapArrayOfValues struct {
  1928  	ObjectState_FieldPathMap
  1929  	values interface{}
  1930  }
  1931  
  1932  var _ ObjectState_FieldPathArrayOfValues = (*ObjectState_FieldPathMapArrayOfValues)(nil)
  1933  
  1934  func (fpmaov *ObjectState_FieldPathMapArrayOfValues) GetRawValues() (values []interface{}) {
  1935  	switch fpmaov.selector {
  1936  	case ObjectState_FieldPathSelectorLabels:
  1937  		for _, v := range fpmaov.values.([]string) {
  1938  			values = append(values, v)
  1939  		}
  1940  	}
  1941  	return
  1942  }
  1943  func (fpmaov *ObjectState_FieldPathMapArrayOfValues) AsLabelsArrayOfElementValues() ([]string, bool) {
  1944  	res, ok := fpmaov.values.([]string)
  1945  	return res, ok
  1946  }
  1947  
  1948  // FieldPath provides implementation to handle
  1949  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  1950  type LabelDescriptor_FieldPath interface {
  1951  	gotenobject.FieldPath
  1952  	Selector() LabelDescriptor_FieldPathSelector
  1953  	Get(source *LabelDescriptor) []interface{}
  1954  	GetSingle(source *LabelDescriptor) (interface{}, bool)
  1955  	ClearValue(item *LabelDescriptor)
  1956  
  1957  	// Those methods build corresponding LabelDescriptor_FieldPathValue
  1958  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  1959  	WithIValue(value interface{}) LabelDescriptor_FieldPathValue
  1960  	WithIArrayOfValues(values interface{}) LabelDescriptor_FieldPathArrayOfValues
  1961  	WithIArrayItemValue(value interface{}) LabelDescriptor_FieldPathArrayItemValue
  1962  }
  1963  
  1964  type LabelDescriptor_FieldPathSelector int32
  1965  
  1966  const (
  1967  	LabelDescriptor_FieldPathSelectorKey      LabelDescriptor_FieldPathSelector = 0
  1968  	LabelDescriptor_FieldPathSelectorVersions LabelDescriptor_FieldPathSelector = 1
  1969  )
  1970  
  1971  func (s LabelDescriptor_FieldPathSelector) String() string {
  1972  	switch s {
  1973  	case LabelDescriptor_FieldPathSelectorKey:
  1974  		return "key"
  1975  	case LabelDescriptor_FieldPathSelectorVersions:
  1976  		return "versions"
  1977  	default:
  1978  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", s))
  1979  	}
  1980  }
  1981  
  1982  func BuildLabelDescriptor_FieldPath(fp gotenobject.RawFieldPath) (LabelDescriptor_FieldPath, error) {
  1983  	if len(fp) == 0 {
  1984  		return nil, status.Error(codes.InvalidArgument, "empty field path for object LabelDescriptor")
  1985  	}
  1986  	if len(fp) == 1 {
  1987  		switch fp[0] {
  1988  		case "key":
  1989  			return &LabelDescriptor_FieldTerminalPath{selector: LabelDescriptor_FieldPathSelectorKey}, nil
  1990  		case "versions":
  1991  			return &LabelDescriptor_FieldTerminalPath{selector: LabelDescriptor_FieldPathSelectorVersions}, nil
  1992  		}
  1993  	}
  1994  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object LabelDescriptor", fp)
  1995  }
  1996  
  1997  func ParseLabelDescriptor_FieldPath(rawField string) (LabelDescriptor_FieldPath, error) {
  1998  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  1999  	if err != nil {
  2000  		return nil, err
  2001  	}
  2002  	return BuildLabelDescriptor_FieldPath(fp)
  2003  }
  2004  
  2005  func MustParseLabelDescriptor_FieldPath(rawField string) LabelDescriptor_FieldPath {
  2006  	fp, err := ParseLabelDescriptor_FieldPath(rawField)
  2007  	if err != nil {
  2008  		panic(err)
  2009  	}
  2010  	return fp
  2011  }
  2012  
  2013  type LabelDescriptor_FieldTerminalPath struct {
  2014  	selector LabelDescriptor_FieldPathSelector
  2015  }
  2016  
  2017  var _ LabelDescriptor_FieldPath = (*LabelDescriptor_FieldTerminalPath)(nil)
  2018  
  2019  func (fp *LabelDescriptor_FieldTerminalPath) Selector() LabelDescriptor_FieldPathSelector {
  2020  	return fp.selector
  2021  }
  2022  
  2023  // String returns path representation in proto convention
  2024  func (fp *LabelDescriptor_FieldTerminalPath) String() string {
  2025  	return fp.selector.String()
  2026  }
  2027  
  2028  // JSONString returns path representation is JSON convention
  2029  func (fp *LabelDescriptor_FieldTerminalPath) JSONString() string {
  2030  	return strcase.ToLowerCamel(fp.String())
  2031  }
  2032  
  2033  // Get returns all values pointed by specific field from source LabelDescriptor
  2034  func (fp *LabelDescriptor_FieldTerminalPath) Get(source *LabelDescriptor) (values []interface{}) {
  2035  	if source != nil {
  2036  		switch fp.selector {
  2037  		case LabelDescriptor_FieldPathSelectorKey:
  2038  			values = append(values, source.Key)
  2039  		case LabelDescriptor_FieldPathSelectorVersions:
  2040  			for _, value := range source.GetVersions() {
  2041  				values = append(values, value)
  2042  			}
  2043  		default:
  2044  			panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fp.selector))
  2045  		}
  2046  	}
  2047  	return
  2048  }
  2049  
  2050  func (fp *LabelDescriptor_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  2051  	return fp.Get(source.(*LabelDescriptor))
  2052  }
  2053  
  2054  // GetSingle returns value pointed by specific field of from source LabelDescriptor
  2055  func (fp *LabelDescriptor_FieldTerminalPath) GetSingle(source *LabelDescriptor) (interface{}, bool) {
  2056  	switch fp.selector {
  2057  	case LabelDescriptor_FieldPathSelectorKey:
  2058  		return source.GetKey(), source != nil
  2059  	case LabelDescriptor_FieldPathSelectorVersions:
  2060  		res := source.GetVersions()
  2061  		return res, res != nil
  2062  	default:
  2063  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fp.selector))
  2064  	}
  2065  }
  2066  
  2067  func (fp *LabelDescriptor_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  2068  	return fp.GetSingle(source.(*LabelDescriptor))
  2069  }
  2070  
  2071  // GetDefault returns a default value of the field type
  2072  func (fp *LabelDescriptor_FieldTerminalPath) GetDefault() interface{} {
  2073  	switch fp.selector {
  2074  	case LabelDescriptor_FieldPathSelectorKey:
  2075  		return ""
  2076  	case LabelDescriptor_FieldPathSelectorVersions:
  2077  		return ([]string)(nil)
  2078  	default:
  2079  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fp.selector))
  2080  	}
  2081  }
  2082  
  2083  func (fp *LabelDescriptor_FieldTerminalPath) ClearValue(item *LabelDescriptor) {
  2084  	if item != nil {
  2085  		switch fp.selector {
  2086  		case LabelDescriptor_FieldPathSelectorKey:
  2087  			item.Key = ""
  2088  		case LabelDescriptor_FieldPathSelectorVersions:
  2089  			item.Versions = nil
  2090  		default:
  2091  			panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fp.selector))
  2092  		}
  2093  	}
  2094  }
  2095  
  2096  func (fp *LabelDescriptor_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  2097  	fp.ClearValue(item.(*LabelDescriptor))
  2098  }
  2099  
  2100  // IsLeaf - whether field path is holds simple value
  2101  func (fp *LabelDescriptor_FieldTerminalPath) IsLeaf() bool {
  2102  	return fp.selector == LabelDescriptor_FieldPathSelectorKey ||
  2103  		fp.selector == LabelDescriptor_FieldPathSelectorVersions
  2104  }
  2105  
  2106  func (fp *LabelDescriptor_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  2107  	return []gotenobject.FieldPath{fp}
  2108  }
  2109  
  2110  func (fp *LabelDescriptor_FieldTerminalPath) WithIValue(value interface{}) LabelDescriptor_FieldPathValue {
  2111  	switch fp.selector {
  2112  	case LabelDescriptor_FieldPathSelectorKey:
  2113  		return &LabelDescriptor_FieldTerminalPathValue{LabelDescriptor_FieldTerminalPath: *fp, value: value.(string)}
  2114  	case LabelDescriptor_FieldPathSelectorVersions:
  2115  		return &LabelDescriptor_FieldTerminalPathValue{LabelDescriptor_FieldTerminalPath: *fp, value: value.([]string)}
  2116  	default:
  2117  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fp.selector))
  2118  	}
  2119  }
  2120  
  2121  func (fp *LabelDescriptor_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  2122  	return fp.WithIValue(value)
  2123  }
  2124  
  2125  func (fp *LabelDescriptor_FieldTerminalPath) WithIArrayOfValues(values interface{}) LabelDescriptor_FieldPathArrayOfValues {
  2126  	fpaov := &LabelDescriptor_FieldTerminalPathArrayOfValues{LabelDescriptor_FieldTerminalPath: *fp}
  2127  	switch fp.selector {
  2128  	case LabelDescriptor_FieldPathSelectorKey:
  2129  		return &LabelDescriptor_FieldTerminalPathArrayOfValues{LabelDescriptor_FieldTerminalPath: *fp, values: values.([]string)}
  2130  	case LabelDescriptor_FieldPathSelectorVersions:
  2131  		return &LabelDescriptor_FieldTerminalPathArrayOfValues{LabelDescriptor_FieldTerminalPath: *fp, values: values.([][]string)}
  2132  	default:
  2133  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fp.selector))
  2134  	}
  2135  	return fpaov
  2136  }
  2137  
  2138  func (fp *LabelDescriptor_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  2139  	return fp.WithIArrayOfValues(values)
  2140  }
  2141  
  2142  func (fp *LabelDescriptor_FieldTerminalPath) WithIArrayItemValue(value interface{}) LabelDescriptor_FieldPathArrayItemValue {
  2143  	switch fp.selector {
  2144  	case LabelDescriptor_FieldPathSelectorVersions:
  2145  		return &LabelDescriptor_FieldTerminalPathArrayItemValue{LabelDescriptor_FieldTerminalPath: *fp, value: value.(string)}
  2146  	default:
  2147  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fp.selector))
  2148  	}
  2149  }
  2150  
  2151  func (fp *LabelDescriptor_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  2152  	return fp.WithIArrayItemValue(value)
  2153  }
  2154  
  2155  // LabelDescriptor_FieldPathValue allows storing values for LabelDescriptor fields according to their type
  2156  type LabelDescriptor_FieldPathValue interface {
  2157  	LabelDescriptor_FieldPath
  2158  	gotenobject.FieldPathValue
  2159  	SetTo(target **LabelDescriptor)
  2160  	CompareWith(*LabelDescriptor) (cmp int, comparable bool)
  2161  }
  2162  
  2163  func ParseLabelDescriptor_FieldPathValue(pathStr, valueStr string) (LabelDescriptor_FieldPathValue, error) {
  2164  	fp, err := ParseLabelDescriptor_FieldPath(pathStr)
  2165  	if err != nil {
  2166  		return nil, err
  2167  	}
  2168  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  2169  	if err != nil {
  2170  		return nil, status.Errorf(codes.InvalidArgument, "error parsing LabelDescriptor field path value from %s: %v", valueStr, err)
  2171  	}
  2172  	return fpv.(LabelDescriptor_FieldPathValue), nil
  2173  }
  2174  
  2175  func MustParseLabelDescriptor_FieldPathValue(pathStr, valueStr string) LabelDescriptor_FieldPathValue {
  2176  	fpv, err := ParseLabelDescriptor_FieldPathValue(pathStr, valueStr)
  2177  	if err != nil {
  2178  		panic(err)
  2179  	}
  2180  	return fpv
  2181  }
  2182  
  2183  type LabelDescriptor_FieldTerminalPathValue struct {
  2184  	LabelDescriptor_FieldTerminalPath
  2185  	value interface{}
  2186  }
  2187  
  2188  var _ LabelDescriptor_FieldPathValue = (*LabelDescriptor_FieldTerminalPathValue)(nil)
  2189  
  2190  // GetRawValue returns raw value stored under selected path for 'LabelDescriptor' as interface{}
  2191  func (fpv *LabelDescriptor_FieldTerminalPathValue) GetRawValue() interface{} {
  2192  	return fpv.value
  2193  }
  2194  func (fpv *LabelDescriptor_FieldTerminalPathValue) AsKeyValue() (string, bool) {
  2195  	res, ok := fpv.value.(string)
  2196  	return res, ok
  2197  }
  2198  func (fpv *LabelDescriptor_FieldTerminalPathValue) AsVersionsValue() ([]string, bool) {
  2199  	res, ok := fpv.value.([]string)
  2200  	return res, ok
  2201  }
  2202  
  2203  // SetTo stores value for selected field for object LabelDescriptor
  2204  func (fpv *LabelDescriptor_FieldTerminalPathValue) SetTo(target **LabelDescriptor) {
  2205  	if *target == nil {
  2206  		*target = new(LabelDescriptor)
  2207  	}
  2208  	switch fpv.selector {
  2209  	case LabelDescriptor_FieldPathSelectorKey:
  2210  		(*target).Key = fpv.value.(string)
  2211  	case LabelDescriptor_FieldPathSelectorVersions:
  2212  		(*target).Versions = fpv.value.([]string)
  2213  	default:
  2214  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fpv.selector))
  2215  	}
  2216  }
  2217  
  2218  func (fpv *LabelDescriptor_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  2219  	typedObject := target.(*LabelDescriptor)
  2220  	fpv.SetTo(&typedObject)
  2221  }
  2222  
  2223  // CompareWith compares value in the 'LabelDescriptor_FieldTerminalPathValue' with the value under path in 'LabelDescriptor'.
  2224  func (fpv *LabelDescriptor_FieldTerminalPathValue) CompareWith(source *LabelDescriptor) (int, bool) {
  2225  	switch fpv.selector {
  2226  	case LabelDescriptor_FieldPathSelectorKey:
  2227  		leftValue := fpv.value.(string)
  2228  		rightValue := source.GetKey()
  2229  		if (leftValue) == (rightValue) {
  2230  			return 0, true
  2231  		} else if (leftValue) < (rightValue) {
  2232  			return -1, true
  2233  		} else {
  2234  			return 1, true
  2235  		}
  2236  	case LabelDescriptor_FieldPathSelectorVersions:
  2237  		return 0, false
  2238  	default:
  2239  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fpv.selector))
  2240  	}
  2241  }
  2242  
  2243  func (fpv *LabelDescriptor_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  2244  	return fpv.CompareWith(source.(*LabelDescriptor))
  2245  }
  2246  
  2247  // LabelDescriptor_FieldPathArrayItemValue allows storing single item in Path-specific values for LabelDescriptor according to their type
  2248  // Present only for array (repeated) types.
  2249  type LabelDescriptor_FieldPathArrayItemValue interface {
  2250  	gotenobject.FieldPathArrayItemValue
  2251  	LabelDescriptor_FieldPath
  2252  	ContainsValue(*LabelDescriptor) bool
  2253  }
  2254  
  2255  // ParseLabelDescriptor_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  2256  func ParseLabelDescriptor_FieldPathArrayItemValue(pathStr, valueStr string) (LabelDescriptor_FieldPathArrayItemValue, error) {
  2257  	fp, err := ParseLabelDescriptor_FieldPath(pathStr)
  2258  	if err != nil {
  2259  		return nil, err
  2260  	}
  2261  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  2262  	if err != nil {
  2263  		return nil, status.Errorf(codes.InvalidArgument, "error parsing LabelDescriptor field path array item value from %s: %v", valueStr, err)
  2264  	}
  2265  	return fpaiv.(LabelDescriptor_FieldPathArrayItemValue), nil
  2266  }
  2267  
  2268  func MustParseLabelDescriptor_FieldPathArrayItemValue(pathStr, valueStr string) LabelDescriptor_FieldPathArrayItemValue {
  2269  	fpaiv, err := ParseLabelDescriptor_FieldPathArrayItemValue(pathStr, valueStr)
  2270  	if err != nil {
  2271  		panic(err)
  2272  	}
  2273  	return fpaiv
  2274  }
  2275  
  2276  type LabelDescriptor_FieldTerminalPathArrayItemValue struct {
  2277  	LabelDescriptor_FieldTerminalPath
  2278  	value interface{}
  2279  }
  2280  
  2281  var _ LabelDescriptor_FieldPathArrayItemValue = (*LabelDescriptor_FieldTerminalPathArrayItemValue)(nil)
  2282  
  2283  // GetRawValue returns stored element value for array in object LabelDescriptor as interface{}
  2284  func (fpaiv *LabelDescriptor_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  2285  	return fpaiv.value
  2286  }
  2287  func (fpaiv *LabelDescriptor_FieldTerminalPathArrayItemValue) AsVersionsItemValue() (string, bool) {
  2288  	res, ok := fpaiv.value.(string)
  2289  	return res, ok
  2290  }
  2291  
  2292  func (fpaiv *LabelDescriptor_FieldTerminalPathArrayItemValue) GetSingle(source *LabelDescriptor) (interface{}, bool) {
  2293  	return nil, false
  2294  }
  2295  
  2296  func (fpaiv *LabelDescriptor_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  2297  	return fpaiv.GetSingle(source.(*LabelDescriptor))
  2298  }
  2299  
  2300  // Contains returns a boolean indicating if value that is being held is present in given 'LabelDescriptor'
  2301  func (fpaiv *LabelDescriptor_FieldTerminalPathArrayItemValue) ContainsValue(source *LabelDescriptor) bool {
  2302  	slice := fpaiv.LabelDescriptor_FieldTerminalPath.Get(source)
  2303  	for _, v := range slice {
  2304  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  2305  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  2306  				return true
  2307  			}
  2308  		} else if reflect.DeepEqual(v, fpaiv.value) {
  2309  			return true
  2310  		}
  2311  	}
  2312  	return false
  2313  }
  2314  
  2315  // LabelDescriptor_FieldPathArrayOfValues allows storing slice of values for LabelDescriptor fields according to their type
  2316  type LabelDescriptor_FieldPathArrayOfValues interface {
  2317  	gotenobject.FieldPathArrayOfValues
  2318  	LabelDescriptor_FieldPath
  2319  }
  2320  
  2321  func ParseLabelDescriptor_FieldPathArrayOfValues(pathStr, valuesStr string) (LabelDescriptor_FieldPathArrayOfValues, error) {
  2322  	fp, err := ParseLabelDescriptor_FieldPath(pathStr)
  2323  	if err != nil {
  2324  		return nil, err
  2325  	}
  2326  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  2327  	if err != nil {
  2328  		return nil, status.Errorf(codes.InvalidArgument, "error parsing LabelDescriptor field path array of values from %s: %v", valuesStr, err)
  2329  	}
  2330  	return fpaov.(LabelDescriptor_FieldPathArrayOfValues), nil
  2331  }
  2332  
  2333  func MustParseLabelDescriptor_FieldPathArrayOfValues(pathStr, valuesStr string) LabelDescriptor_FieldPathArrayOfValues {
  2334  	fpaov, err := ParseLabelDescriptor_FieldPathArrayOfValues(pathStr, valuesStr)
  2335  	if err != nil {
  2336  		panic(err)
  2337  	}
  2338  	return fpaov
  2339  }
  2340  
  2341  type LabelDescriptor_FieldTerminalPathArrayOfValues struct {
  2342  	LabelDescriptor_FieldTerminalPath
  2343  	values interface{}
  2344  }
  2345  
  2346  var _ LabelDescriptor_FieldPathArrayOfValues = (*LabelDescriptor_FieldTerminalPathArrayOfValues)(nil)
  2347  
  2348  func (fpaov *LabelDescriptor_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  2349  	switch fpaov.selector {
  2350  	case LabelDescriptor_FieldPathSelectorKey:
  2351  		for _, v := range fpaov.values.([]string) {
  2352  			values = append(values, v)
  2353  		}
  2354  	case LabelDescriptor_FieldPathSelectorVersions:
  2355  		for _, v := range fpaov.values.([][]string) {
  2356  			values = append(values, v)
  2357  		}
  2358  	}
  2359  	return
  2360  }
  2361  func (fpaov *LabelDescriptor_FieldTerminalPathArrayOfValues) AsKeyArrayOfValues() ([]string, bool) {
  2362  	res, ok := fpaov.values.([]string)
  2363  	return res, ok
  2364  }
  2365  func (fpaov *LabelDescriptor_FieldTerminalPathArrayOfValues) AsVersionsArrayOfValues() ([][]string, bool) {
  2366  	res, ok := fpaov.values.([][]string)
  2367  	return res, ok
  2368  }
  2369  
  2370  // FieldPath provides implementation to handle
  2371  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  2372  type LabelKeySet_FieldPath interface {
  2373  	gotenobject.FieldPath
  2374  	Selector() LabelKeySet_FieldPathSelector
  2375  	Get(source *LabelKeySet) []interface{}
  2376  	GetSingle(source *LabelKeySet) (interface{}, bool)
  2377  	ClearValue(item *LabelKeySet)
  2378  
  2379  	// Those methods build corresponding LabelKeySet_FieldPathValue
  2380  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  2381  	WithIValue(value interface{}) LabelKeySet_FieldPathValue
  2382  	WithIArrayOfValues(values interface{}) LabelKeySet_FieldPathArrayOfValues
  2383  	WithIArrayItemValue(value interface{}) LabelKeySet_FieldPathArrayItemValue
  2384  }
  2385  
  2386  type LabelKeySet_FieldPathSelector int32
  2387  
  2388  const (
  2389  	LabelKeySet_FieldPathSelectorLabelKeys LabelKeySet_FieldPathSelector = 0
  2390  	LabelKeySet_FieldPathSelectorVersions  LabelKeySet_FieldPathSelector = 1
  2391  )
  2392  
  2393  func (s LabelKeySet_FieldPathSelector) String() string {
  2394  	switch s {
  2395  	case LabelKeySet_FieldPathSelectorLabelKeys:
  2396  		return "label_keys"
  2397  	case LabelKeySet_FieldPathSelectorVersions:
  2398  		return "versions"
  2399  	default:
  2400  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", s))
  2401  	}
  2402  }
  2403  
  2404  func BuildLabelKeySet_FieldPath(fp gotenobject.RawFieldPath) (LabelKeySet_FieldPath, error) {
  2405  	if len(fp) == 0 {
  2406  		return nil, status.Error(codes.InvalidArgument, "empty field path for object LabelKeySet")
  2407  	}
  2408  	if len(fp) == 1 {
  2409  		switch fp[0] {
  2410  		case "label_keys", "labelKeys", "label-keys":
  2411  			return &LabelKeySet_FieldTerminalPath{selector: LabelKeySet_FieldPathSelectorLabelKeys}, nil
  2412  		case "versions":
  2413  			return &LabelKeySet_FieldTerminalPath{selector: LabelKeySet_FieldPathSelectorVersions}, nil
  2414  		}
  2415  	}
  2416  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object LabelKeySet", fp)
  2417  }
  2418  
  2419  func ParseLabelKeySet_FieldPath(rawField string) (LabelKeySet_FieldPath, error) {
  2420  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  2421  	if err != nil {
  2422  		return nil, err
  2423  	}
  2424  	return BuildLabelKeySet_FieldPath(fp)
  2425  }
  2426  
  2427  func MustParseLabelKeySet_FieldPath(rawField string) LabelKeySet_FieldPath {
  2428  	fp, err := ParseLabelKeySet_FieldPath(rawField)
  2429  	if err != nil {
  2430  		panic(err)
  2431  	}
  2432  	return fp
  2433  }
  2434  
  2435  type LabelKeySet_FieldTerminalPath struct {
  2436  	selector LabelKeySet_FieldPathSelector
  2437  }
  2438  
  2439  var _ LabelKeySet_FieldPath = (*LabelKeySet_FieldTerminalPath)(nil)
  2440  
  2441  func (fp *LabelKeySet_FieldTerminalPath) Selector() LabelKeySet_FieldPathSelector {
  2442  	return fp.selector
  2443  }
  2444  
  2445  // String returns path representation in proto convention
  2446  func (fp *LabelKeySet_FieldTerminalPath) String() string {
  2447  	return fp.selector.String()
  2448  }
  2449  
  2450  // JSONString returns path representation is JSON convention
  2451  func (fp *LabelKeySet_FieldTerminalPath) JSONString() string {
  2452  	return strcase.ToLowerCamel(fp.String())
  2453  }
  2454  
  2455  // Get returns all values pointed by specific field from source LabelKeySet
  2456  func (fp *LabelKeySet_FieldTerminalPath) Get(source *LabelKeySet) (values []interface{}) {
  2457  	if source != nil {
  2458  		switch fp.selector {
  2459  		case LabelKeySet_FieldPathSelectorLabelKeys:
  2460  			for _, value := range source.GetLabelKeys() {
  2461  				values = append(values, value)
  2462  			}
  2463  		case LabelKeySet_FieldPathSelectorVersions:
  2464  			for _, value := range source.GetVersions() {
  2465  				values = append(values, value)
  2466  			}
  2467  		default:
  2468  			panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fp.selector))
  2469  		}
  2470  	}
  2471  	return
  2472  }
  2473  
  2474  func (fp *LabelKeySet_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  2475  	return fp.Get(source.(*LabelKeySet))
  2476  }
  2477  
  2478  // GetSingle returns value pointed by specific field of from source LabelKeySet
  2479  func (fp *LabelKeySet_FieldTerminalPath) GetSingle(source *LabelKeySet) (interface{}, bool) {
  2480  	switch fp.selector {
  2481  	case LabelKeySet_FieldPathSelectorLabelKeys:
  2482  		res := source.GetLabelKeys()
  2483  		return res, res != nil
  2484  	case LabelKeySet_FieldPathSelectorVersions:
  2485  		res := source.GetVersions()
  2486  		return res, res != nil
  2487  	default:
  2488  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fp.selector))
  2489  	}
  2490  }
  2491  
  2492  func (fp *LabelKeySet_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  2493  	return fp.GetSingle(source.(*LabelKeySet))
  2494  }
  2495  
  2496  // GetDefault returns a default value of the field type
  2497  func (fp *LabelKeySet_FieldTerminalPath) GetDefault() interface{} {
  2498  	switch fp.selector {
  2499  	case LabelKeySet_FieldPathSelectorLabelKeys:
  2500  		return ([]string)(nil)
  2501  	case LabelKeySet_FieldPathSelectorVersions:
  2502  		return ([]string)(nil)
  2503  	default:
  2504  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fp.selector))
  2505  	}
  2506  }
  2507  
  2508  func (fp *LabelKeySet_FieldTerminalPath) ClearValue(item *LabelKeySet) {
  2509  	if item != nil {
  2510  		switch fp.selector {
  2511  		case LabelKeySet_FieldPathSelectorLabelKeys:
  2512  			item.LabelKeys = nil
  2513  		case LabelKeySet_FieldPathSelectorVersions:
  2514  			item.Versions = nil
  2515  		default:
  2516  			panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fp.selector))
  2517  		}
  2518  	}
  2519  }
  2520  
  2521  func (fp *LabelKeySet_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  2522  	fp.ClearValue(item.(*LabelKeySet))
  2523  }
  2524  
  2525  // IsLeaf - whether field path is holds simple value
  2526  func (fp *LabelKeySet_FieldTerminalPath) IsLeaf() bool {
  2527  	return fp.selector == LabelKeySet_FieldPathSelectorLabelKeys ||
  2528  		fp.selector == LabelKeySet_FieldPathSelectorVersions
  2529  }
  2530  
  2531  func (fp *LabelKeySet_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  2532  	return []gotenobject.FieldPath{fp}
  2533  }
  2534  
  2535  func (fp *LabelKeySet_FieldTerminalPath) WithIValue(value interface{}) LabelKeySet_FieldPathValue {
  2536  	switch fp.selector {
  2537  	case LabelKeySet_FieldPathSelectorLabelKeys:
  2538  		return &LabelKeySet_FieldTerminalPathValue{LabelKeySet_FieldTerminalPath: *fp, value: value.([]string)}
  2539  	case LabelKeySet_FieldPathSelectorVersions:
  2540  		return &LabelKeySet_FieldTerminalPathValue{LabelKeySet_FieldTerminalPath: *fp, value: value.([]string)}
  2541  	default:
  2542  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fp.selector))
  2543  	}
  2544  }
  2545  
  2546  func (fp *LabelKeySet_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  2547  	return fp.WithIValue(value)
  2548  }
  2549  
  2550  func (fp *LabelKeySet_FieldTerminalPath) WithIArrayOfValues(values interface{}) LabelKeySet_FieldPathArrayOfValues {
  2551  	fpaov := &LabelKeySet_FieldTerminalPathArrayOfValues{LabelKeySet_FieldTerminalPath: *fp}
  2552  	switch fp.selector {
  2553  	case LabelKeySet_FieldPathSelectorLabelKeys:
  2554  		return &LabelKeySet_FieldTerminalPathArrayOfValues{LabelKeySet_FieldTerminalPath: *fp, values: values.([][]string)}
  2555  	case LabelKeySet_FieldPathSelectorVersions:
  2556  		return &LabelKeySet_FieldTerminalPathArrayOfValues{LabelKeySet_FieldTerminalPath: *fp, values: values.([][]string)}
  2557  	default:
  2558  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fp.selector))
  2559  	}
  2560  	return fpaov
  2561  }
  2562  
  2563  func (fp *LabelKeySet_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  2564  	return fp.WithIArrayOfValues(values)
  2565  }
  2566  
  2567  func (fp *LabelKeySet_FieldTerminalPath) WithIArrayItemValue(value interface{}) LabelKeySet_FieldPathArrayItemValue {
  2568  	switch fp.selector {
  2569  	case LabelKeySet_FieldPathSelectorLabelKeys:
  2570  		return &LabelKeySet_FieldTerminalPathArrayItemValue{LabelKeySet_FieldTerminalPath: *fp, value: value.(string)}
  2571  	case LabelKeySet_FieldPathSelectorVersions:
  2572  		return &LabelKeySet_FieldTerminalPathArrayItemValue{LabelKeySet_FieldTerminalPath: *fp, value: value.(string)}
  2573  	default:
  2574  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fp.selector))
  2575  	}
  2576  }
  2577  
  2578  func (fp *LabelKeySet_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  2579  	return fp.WithIArrayItemValue(value)
  2580  }
  2581  
  2582  // LabelKeySet_FieldPathValue allows storing values for LabelKeySet fields according to their type
  2583  type LabelKeySet_FieldPathValue interface {
  2584  	LabelKeySet_FieldPath
  2585  	gotenobject.FieldPathValue
  2586  	SetTo(target **LabelKeySet)
  2587  	CompareWith(*LabelKeySet) (cmp int, comparable bool)
  2588  }
  2589  
  2590  func ParseLabelKeySet_FieldPathValue(pathStr, valueStr string) (LabelKeySet_FieldPathValue, error) {
  2591  	fp, err := ParseLabelKeySet_FieldPath(pathStr)
  2592  	if err != nil {
  2593  		return nil, err
  2594  	}
  2595  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  2596  	if err != nil {
  2597  		return nil, status.Errorf(codes.InvalidArgument, "error parsing LabelKeySet field path value from %s: %v", valueStr, err)
  2598  	}
  2599  	return fpv.(LabelKeySet_FieldPathValue), nil
  2600  }
  2601  
  2602  func MustParseLabelKeySet_FieldPathValue(pathStr, valueStr string) LabelKeySet_FieldPathValue {
  2603  	fpv, err := ParseLabelKeySet_FieldPathValue(pathStr, valueStr)
  2604  	if err != nil {
  2605  		panic(err)
  2606  	}
  2607  	return fpv
  2608  }
  2609  
  2610  type LabelKeySet_FieldTerminalPathValue struct {
  2611  	LabelKeySet_FieldTerminalPath
  2612  	value interface{}
  2613  }
  2614  
  2615  var _ LabelKeySet_FieldPathValue = (*LabelKeySet_FieldTerminalPathValue)(nil)
  2616  
  2617  // GetRawValue returns raw value stored under selected path for 'LabelKeySet' as interface{}
  2618  func (fpv *LabelKeySet_FieldTerminalPathValue) GetRawValue() interface{} {
  2619  	return fpv.value
  2620  }
  2621  func (fpv *LabelKeySet_FieldTerminalPathValue) AsLabelKeysValue() ([]string, bool) {
  2622  	res, ok := fpv.value.([]string)
  2623  	return res, ok
  2624  }
  2625  func (fpv *LabelKeySet_FieldTerminalPathValue) AsVersionsValue() ([]string, bool) {
  2626  	res, ok := fpv.value.([]string)
  2627  	return res, ok
  2628  }
  2629  
  2630  // SetTo stores value for selected field for object LabelKeySet
  2631  func (fpv *LabelKeySet_FieldTerminalPathValue) SetTo(target **LabelKeySet) {
  2632  	if *target == nil {
  2633  		*target = new(LabelKeySet)
  2634  	}
  2635  	switch fpv.selector {
  2636  	case LabelKeySet_FieldPathSelectorLabelKeys:
  2637  		(*target).LabelKeys = fpv.value.([]string)
  2638  	case LabelKeySet_FieldPathSelectorVersions:
  2639  		(*target).Versions = fpv.value.([]string)
  2640  	default:
  2641  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fpv.selector))
  2642  	}
  2643  }
  2644  
  2645  func (fpv *LabelKeySet_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  2646  	typedObject := target.(*LabelKeySet)
  2647  	fpv.SetTo(&typedObject)
  2648  }
  2649  
  2650  // CompareWith compares value in the 'LabelKeySet_FieldTerminalPathValue' with the value under path in 'LabelKeySet'.
  2651  func (fpv *LabelKeySet_FieldTerminalPathValue) CompareWith(source *LabelKeySet) (int, bool) {
  2652  	switch fpv.selector {
  2653  	case LabelKeySet_FieldPathSelectorLabelKeys:
  2654  		return 0, false
  2655  	case LabelKeySet_FieldPathSelectorVersions:
  2656  		return 0, false
  2657  	default:
  2658  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fpv.selector))
  2659  	}
  2660  }
  2661  
  2662  func (fpv *LabelKeySet_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  2663  	return fpv.CompareWith(source.(*LabelKeySet))
  2664  }
  2665  
  2666  // LabelKeySet_FieldPathArrayItemValue allows storing single item in Path-specific values for LabelKeySet according to their type
  2667  // Present only for array (repeated) types.
  2668  type LabelKeySet_FieldPathArrayItemValue interface {
  2669  	gotenobject.FieldPathArrayItemValue
  2670  	LabelKeySet_FieldPath
  2671  	ContainsValue(*LabelKeySet) bool
  2672  }
  2673  
  2674  // ParseLabelKeySet_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  2675  func ParseLabelKeySet_FieldPathArrayItemValue(pathStr, valueStr string) (LabelKeySet_FieldPathArrayItemValue, error) {
  2676  	fp, err := ParseLabelKeySet_FieldPath(pathStr)
  2677  	if err != nil {
  2678  		return nil, err
  2679  	}
  2680  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  2681  	if err != nil {
  2682  		return nil, status.Errorf(codes.InvalidArgument, "error parsing LabelKeySet field path array item value from %s: %v", valueStr, err)
  2683  	}
  2684  	return fpaiv.(LabelKeySet_FieldPathArrayItemValue), nil
  2685  }
  2686  
  2687  func MustParseLabelKeySet_FieldPathArrayItemValue(pathStr, valueStr string) LabelKeySet_FieldPathArrayItemValue {
  2688  	fpaiv, err := ParseLabelKeySet_FieldPathArrayItemValue(pathStr, valueStr)
  2689  	if err != nil {
  2690  		panic(err)
  2691  	}
  2692  	return fpaiv
  2693  }
  2694  
  2695  type LabelKeySet_FieldTerminalPathArrayItemValue struct {
  2696  	LabelKeySet_FieldTerminalPath
  2697  	value interface{}
  2698  }
  2699  
  2700  var _ LabelKeySet_FieldPathArrayItemValue = (*LabelKeySet_FieldTerminalPathArrayItemValue)(nil)
  2701  
  2702  // GetRawValue returns stored element value for array in object LabelKeySet as interface{}
  2703  func (fpaiv *LabelKeySet_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  2704  	return fpaiv.value
  2705  }
  2706  func (fpaiv *LabelKeySet_FieldTerminalPathArrayItemValue) AsLabelKeysItemValue() (string, bool) {
  2707  	res, ok := fpaiv.value.(string)
  2708  	return res, ok
  2709  }
  2710  func (fpaiv *LabelKeySet_FieldTerminalPathArrayItemValue) AsVersionsItemValue() (string, bool) {
  2711  	res, ok := fpaiv.value.(string)
  2712  	return res, ok
  2713  }
  2714  
  2715  func (fpaiv *LabelKeySet_FieldTerminalPathArrayItemValue) GetSingle(source *LabelKeySet) (interface{}, bool) {
  2716  	return nil, false
  2717  }
  2718  
  2719  func (fpaiv *LabelKeySet_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  2720  	return fpaiv.GetSingle(source.(*LabelKeySet))
  2721  }
  2722  
  2723  // Contains returns a boolean indicating if value that is being held is present in given 'LabelKeySet'
  2724  func (fpaiv *LabelKeySet_FieldTerminalPathArrayItemValue) ContainsValue(source *LabelKeySet) bool {
  2725  	slice := fpaiv.LabelKeySet_FieldTerminalPath.Get(source)
  2726  	for _, v := range slice {
  2727  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  2728  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  2729  				return true
  2730  			}
  2731  		} else if reflect.DeepEqual(v, fpaiv.value) {
  2732  			return true
  2733  		}
  2734  	}
  2735  	return false
  2736  }
  2737  
  2738  // LabelKeySet_FieldPathArrayOfValues allows storing slice of values for LabelKeySet fields according to their type
  2739  type LabelKeySet_FieldPathArrayOfValues interface {
  2740  	gotenobject.FieldPathArrayOfValues
  2741  	LabelKeySet_FieldPath
  2742  }
  2743  
  2744  func ParseLabelKeySet_FieldPathArrayOfValues(pathStr, valuesStr string) (LabelKeySet_FieldPathArrayOfValues, error) {
  2745  	fp, err := ParseLabelKeySet_FieldPath(pathStr)
  2746  	if err != nil {
  2747  		return nil, err
  2748  	}
  2749  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  2750  	if err != nil {
  2751  		return nil, status.Errorf(codes.InvalidArgument, "error parsing LabelKeySet field path array of values from %s: %v", valuesStr, err)
  2752  	}
  2753  	return fpaov.(LabelKeySet_FieldPathArrayOfValues), nil
  2754  }
  2755  
  2756  func MustParseLabelKeySet_FieldPathArrayOfValues(pathStr, valuesStr string) LabelKeySet_FieldPathArrayOfValues {
  2757  	fpaov, err := ParseLabelKeySet_FieldPathArrayOfValues(pathStr, valuesStr)
  2758  	if err != nil {
  2759  		panic(err)
  2760  	}
  2761  	return fpaov
  2762  }
  2763  
  2764  type LabelKeySet_FieldTerminalPathArrayOfValues struct {
  2765  	LabelKeySet_FieldTerminalPath
  2766  	values interface{}
  2767  }
  2768  
  2769  var _ LabelKeySet_FieldPathArrayOfValues = (*LabelKeySet_FieldTerminalPathArrayOfValues)(nil)
  2770  
  2771  func (fpaov *LabelKeySet_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  2772  	switch fpaov.selector {
  2773  	case LabelKeySet_FieldPathSelectorLabelKeys:
  2774  		for _, v := range fpaov.values.([][]string) {
  2775  			values = append(values, v)
  2776  		}
  2777  	case LabelKeySet_FieldPathSelectorVersions:
  2778  		for _, v := range fpaov.values.([][]string) {
  2779  			values = append(values, v)
  2780  		}
  2781  	}
  2782  	return
  2783  }
  2784  func (fpaov *LabelKeySet_FieldTerminalPathArrayOfValues) AsLabelKeysArrayOfValues() ([][]string, bool) {
  2785  	res, ok := fpaov.values.([][]string)
  2786  	return res, ok
  2787  }
  2788  func (fpaov *LabelKeySet_FieldTerminalPathArrayOfValues) AsVersionsArrayOfValues() ([][]string, bool) {
  2789  	res, ok := fpaov.values.([][]string)
  2790  	return res, ok
  2791  }
  2792  
  2793  // FieldPath provides implementation to handle
  2794  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  2795  type TimeInterval_FieldPath interface {
  2796  	gotenobject.FieldPath
  2797  	Selector() TimeInterval_FieldPathSelector
  2798  	Get(source *TimeInterval) []interface{}
  2799  	GetSingle(source *TimeInterval) (interface{}, bool)
  2800  	ClearValue(item *TimeInterval)
  2801  
  2802  	// Those methods build corresponding TimeInterval_FieldPathValue
  2803  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  2804  	WithIValue(value interface{}) TimeInterval_FieldPathValue
  2805  	WithIArrayOfValues(values interface{}) TimeInterval_FieldPathArrayOfValues
  2806  	WithIArrayItemValue(value interface{}) TimeInterval_FieldPathArrayItemValue
  2807  }
  2808  
  2809  type TimeInterval_FieldPathSelector int32
  2810  
  2811  const (
  2812  	TimeInterval_FieldPathSelectorEndTime   TimeInterval_FieldPathSelector = 0
  2813  	TimeInterval_FieldPathSelectorStartTime TimeInterval_FieldPathSelector = 1
  2814  )
  2815  
  2816  func (s TimeInterval_FieldPathSelector) String() string {
  2817  	switch s {
  2818  	case TimeInterval_FieldPathSelectorEndTime:
  2819  		return "end_time"
  2820  	case TimeInterval_FieldPathSelectorStartTime:
  2821  		return "start_time"
  2822  	default:
  2823  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", s))
  2824  	}
  2825  }
  2826  
  2827  func BuildTimeInterval_FieldPath(fp gotenobject.RawFieldPath) (TimeInterval_FieldPath, error) {
  2828  	if len(fp) == 0 {
  2829  		return nil, status.Error(codes.InvalidArgument, "empty field path for object TimeInterval")
  2830  	}
  2831  	if len(fp) == 1 {
  2832  		switch fp[0] {
  2833  		case "end_time", "endTime", "end-time":
  2834  			return &TimeInterval_FieldTerminalPath{selector: TimeInterval_FieldPathSelectorEndTime}, nil
  2835  		case "start_time", "startTime", "start-time":
  2836  			return &TimeInterval_FieldTerminalPath{selector: TimeInterval_FieldPathSelectorStartTime}, nil
  2837  		}
  2838  	}
  2839  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object TimeInterval", fp)
  2840  }
  2841  
  2842  func ParseTimeInterval_FieldPath(rawField string) (TimeInterval_FieldPath, error) {
  2843  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  2844  	if err != nil {
  2845  		return nil, err
  2846  	}
  2847  	return BuildTimeInterval_FieldPath(fp)
  2848  }
  2849  
  2850  func MustParseTimeInterval_FieldPath(rawField string) TimeInterval_FieldPath {
  2851  	fp, err := ParseTimeInterval_FieldPath(rawField)
  2852  	if err != nil {
  2853  		panic(err)
  2854  	}
  2855  	return fp
  2856  }
  2857  
  2858  type TimeInterval_FieldTerminalPath struct {
  2859  	selector TimeInterval_FieldPathSelector
  2860  }
  2861  
  2862  var _ TimeInterval_FieldPath = (*TimeInterval_FieldTerminalPath)(nil)
  2863  
  2864  func (fp *TimeInterval_FieldTerminalPath) Selector() TimeInterval_FieldPathSelector {
  2865  	return fp.selector
  2866  }
  2867  
  2868  // String returns path representation in proto convention
  2869  func (fp *TimeInterval_FieldTerminalPath) String() string {
  2870  	return fp.selector.String()
  2871  }
  2872  
  2873  // JSONString returns path representation is JSON convention
  2874  func (fp *TimeInterval_FieldTerminalPath) JSONString() string {
  2875  	return strcase.ToLowerCamel(fp.String())
  2876  }
  2877  
  2878  // Get returns all values pointed by specific field from source TimeInterval
  2879  func (fp *TimeInterval_FieldTerminalPath) Get(source *TimeInterval) (values []interface{}) {
  2880  	if source != nil {
  2881  		switch fp.selector {
  2882  		case TimeInterval_FieldPathSelectorEndTime:
  2883  			if source.EndTime != nil {
  2884  				values = append(values, source.EndTime)
  2885  			}
  2886  		case TimeInterval_FieldPathSelectorStartTime:
  2887  			if source.StartTime != nil {
  2888  				values = append(values, source.StartTime)
  2889  			}
  2890  		default:
  2891  			panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fp.selector))
  2892  		}
  2893  	}
  2894  	return
  2895  }
  2896  
  2897  func (fp *TimeInterval_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  2898  	return fp.Get(source.(*TimeInterval))
  2899  }
  2900  
  2901  // GetSingle returns value pointed by specific field of from source TimeInterval
  2902  func (fp *TimeInterval_FieldTerminalPath) GetSingle(source *TimeInterval) (interface{}, bool) {
  2903  	switch fp.selector {
  2904  	case TimeInterval_FieldPathSelectorEndTime:
  2905  		res := source.GetEndTime()
  2906  		return res, res != nil
  2907  	case TimeInterval_FieldPathSelectorStartTime:
  2908  		res := source.GetStartTime()
  2909  		return res, res != nil
  2910  	default:
  2911  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fp.selector))
  2912  	}
  2913  }
  2914  
  2915  func (fp *TimeInterval_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  2916  	return fp.GetSingle(source.(*TimeInterval))
  2917  }
  2918  
  2919  // GetDefault returns a default value of the field type
  2920  func (fp *TimeInterval_FieldTerminalPath) GetDefault() interface{} {
  2921  	switch fp.selector {
  2922  	case TimeInterval_FieldPathSelectorEndTime:
  2923  		return (*timestamppb.Timestamp)(nil)
  2924  	case TimeInterval_FieldPathSelectorStartTime:
  2925  		return (*timestamppb.Timestamp)(nil)
  2926  	default:
  2927  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fp.selector))
  2928  	}
  2929  }
  2930  
  2931  func (fp *TimeInterval_FieldTerminalPath) ClearValue(item *TimeInterval) {
  2932  	if item != nil {
  2933  		switch fp.selector {
  2934  		case TimeInterval_FieldPathSelectorEndTime:
  2935  			item.EndTime = nil
  2936  		case TimeInterval_FieldPathSelectorStartTime:
  2937  			item.StartTime = nil
  2938  		default:
  2939  			panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fp.selector))
  2940  		}
  2941  	}
  2942  }
  2943  
  2944  func (fp *TimeInterval_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  2945  	fp.ClearValue(item.(*TimeInterval))
  2946  }
  2947  
  2948  // IsLeaf - whether field path is holds simple value
  2949  func (fp *TimeInterval_FieldTerminalPath) IsLeaf() bool {
  2950  	return fp.selector == TimeInterval_FieldPathSelectorEndTime ||
  2951  		fp.selector == TimeInterval_FieldPathSelectorStartTime
  2952  }
  2953  
  2954  func (fp *TimeInterval_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  2955  	return []gotenobject.FieldPath{fp}
  2956  }
  2957  
  2958  func (fp *TimeInterval_FieldTerminalPath) WithIValue(value interface{}) TimeInterval_FieldPathValue {
  2959  	switch fp.selector {
  2960  	case TimeInterval_FieldPathSelectorEndTime:
  2961  		return &TimeInterval_FieldTerminalPathValue{TimeInterval_FieldTerminalPath: *fp, value: value.(*timestamppb.Timestamp)}
  2962  	case TimeInterval_FieldPathSelectorStartTime:
  2963  		return &TimeInterval_FieldTerminalPathValue{TimeInterval_FieldTerminalPath: *fp, value: value.(*timestamppb.Timestamp)}
  2964  	default:
  2965  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fp.selector))
  2966  	}
  2967  }
  2968  
  2969  func (fp *TimeInterval_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  2970  	return fp.WithIValue(value)
  2971  }
  2972  
  2973  func (fp *TimeInterval_FieldTerminalPath) WithIArrayOfValues(values interface{}) TimeInterval_FieldPathArrayOfValues {
  2974  	fpaov := &TimeInterval_FieldTerminalPathArrayOfValues{TimeInterval_FieldTerminalPath: *fp}
  2975  	switch fp.selector {
  2976  	case TimeInterval_FieldPathSelectorEndTime:
  2977  		return &TimeInterval_FieldTerminalPathArrayOfValues{TimeInterval_FieldTerminalPath: *fp, values: values.([]*timestamppb.Timestamp)}
  2978  	case TimeInterval_FieldPathSelectorStartTime:
  2979  		return &TimeInterval_FieldTerminalPathArrayOfValues{TimeInterval_FieldTerminalPath: *fp, values: values.([]*timestamppb.Timestamp)}
  2980  	default:
  2981  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fp.selector))
  2982  	}
  2983  	return fpaov
  2984  }
  2985  
  2986  func (fp *TimeInterval_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  2987  	return fp.WithIArrayOfValues(values)
  2988  }
  2989  
  2990  func (fp *TimeInterval_FieldTerminalPath) WithIArrayItemValue(value interface{}) TimeInterval_FieldPathArrayItemValue {
  2991  	switch fp.selector {
  2992  	default:
  2993  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fp.selector))
  2994  	}
  2995  }
  2996  
  2997  func (fp *TimeInterval_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  2998  	return fp.WithIArrayItemValue(value)
  2999  }
  3000  
  3001  // TimeInterval_FieldPathValue allows storing values for TimeInterval fields according to their type
  3002  type TimeInterval_FieldPathValue interface {
  3003  	TimeInterval_FieldPath
  3004  	gotenobject.FieldPathValue
  3005  	SetTo(target **TimeInterval)
  3006  	CompareWith(*TimeInterval) (cmp int, comparable bool)
  3007  }
  3008  
  3009  func ParseTimeInterval_FieldPathValue(pathStr, valueStr string) (TimeInterval_FieldPathValue, error) {
  3010  	fp, err := ParseTimeInterval_FieldPath(pathStr)
  3011  	if err != nil {
  3012  		return nil, err
  3013  	}
  3014  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  3015  	if err != nil {
  3016  		return nil, status.Errorf(codes.InvalidArgument, "error parsing TimeInterval field path value from %s: %v", valueStr, err)
  3017  	}
  3018  	return fpv.(TimeInterval_FieldPathValue), nil
  3019  }
  3020  
  3021  func MustParseTimeInterval_FieldPathValue(pathStr, valueStr string) TimeInterval_FieldPathValue {
  3022  	fpv, err := ParseTimeInterval_FieldPathValue(pathStr, valueStr)
  3023  	if err != nil {
  3024  		panic(err)
  3025  	}
  3026  	return fpv
  3027  }
  3028  
  3029  type TimeInterval_FieldTerminalPathValue struct {
  3030  	TimeInterval_FieldTerminalPath
  3031  	value interface{}
  3032  }
  3033  
  3034  var _ TimeInterval_FieldPathValue = (*TimeInterval_FieldTerminalPathValue)(nil)
  3035  
  3036  // GetRawValue returns raw value stored under selected path for 'TimeInterval' as interface{}
  3037  func (fpv *TimeInterval_FieldTerminalPathValue) GetRawValue() interface{} {
  3038  	return fpv.value
  3039  }
  3040  func (fpv *TimeInterval_FieldTerminalPathValue) AsEndTimeValue() (*timestamppb.Timestamp, bool) {
  3041  	res, ok := fpv.value.(*timestamppb.Timestamp)
  3042  	return res, ok
  3043  }
  3044  func (fpv *TimeInterval_FieldTerminalPathValue) AsStartTimeValue() (*timestamppb.Timestamp, bool) {
  3045  	res, ok := fpv.value.(*timestamppb.Timestamp)
  3046  	return res, ok
  3047  }
  3048  
  3049  // SetTo stores value for selected field for object TimeInterval
  3050  func (fpv *TimeInterval_FieldTerminalPathValue) SetTo(target **TimeInterval) {
  3051  	if *target == nil {
  3052  		*target = new(TimeInterval)
  3053  	}
  3054  	switch fpv.selector {
  3055  	case TimeInterval_FieldPathSelectorEndTime:
  3056  		(*target).EndTime = fpv.value.(*timestamppb.Timestamp)
  3057  	case TimeInterval_FieldPathSelectorStartTime:
  3058  		(*target).StartTime = fpv.value.(*timestamppb.Timestamp)
  3059  	default:
  3060  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fpv.selector))
  3061  	}
  3062  }
  3063  
  3064  func (fpv *TimeInterval_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  3065  	typedObject := target.(*TimeInterval)
  3066  	fpv.SetTo(&typedObject)
  3067  }
  3068  
  3069  // CompareWith compares value in the 'TimeInterval_FieldTerminalPathValue' with the value under path in 'TimeInterval'.
  3070  func (fpv *TimeInterval_FieldTerminalPathValue) CompareWith(source *TimeInterval) (int, bool) {
  3071  	switch fpv.selector {
  3072  	case TimeInterval_FieldPathSelectorEndTime:
  3073  		leftValue := fpv.value.(*timestamppb.Timestamp)
  3074  		rightValue := source.GetEndTime()
  3075  		if leftValue == nil {
  3076  			if rightValue != nil {
  3077  				return -1, true
  3078  			}
  3079  			return 0, true
  3080  		}
  3081  		if rightValue == nil {
  3082  			return 1, true
  3083  		}
  3084  		if leftValue.AsTime().Equal(rightValue.AsTime()) {
  3085  			return 0, true
  3086  		} else if leftValue.AsTime().Before(rightValue.AsTime()) {
  3087  			return -1, true
  3088  		} else {
  3089  			return 1, true
  3090  		}
  3091  	case TimeInterval_FieldPathSelectorStartTime:
  3092  		leftValue := fpv.value.(*timestamppb.Timestamp)
  3093  		rightValue := source.GetStartTime()
  3094  		if leftValue == nil {
  3095  			if rightValue != nil {
  3096  				return -1, true
  3097  			}
  3098  			return 0, true
  3099  		}
  3100  		if rightValue == nil {
  3101  			return 1, true
  3102  		}
  3103  		if leftValue.AsTime().Equal(rightValue.AsTime()) {
  3104  			return 0, true
  3105  		} else if leftValue.AsTime().Before(rightValue.AsTime()) {
  3106  			return -1, true
  3107  		} else {
  3108  			return 1, true
  3109  		}
  3110  	default:
  3111  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fpv.selector))
  3112  	}
  3113  }
  3114  
  3115  func (fpv *TimeInterval_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  3116  	return fpv.CompareWith(source.(*TimeInterval))
  3117  }
  3118  
  3119  // TimeInterval_FieldPathArrayItemValue allows storing single item in Path-specific values for TimeInterval according to their type
  3120  // Present only for array (repeated) types.
  3121  type TimeInterval_FieldPathArrayItemValue interface {
  3122  	gotenobject.FieldPathArrayItemValue
  3123  	TimeInterval_FieldPath
  3124  	ContainsValue(*TimeInterval) bool
  3125  }
  3126  
  3127  // ParseTimeInterval_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  3128  func ParseTimeInterval_FieldPathArrayItemValue(pathStr, valueStr string) (TimeInterval_FieldPathArrayItemValue, error) {
  3129  	fp, err := ParseTimeInterval_FieldPath(pathStr)
  3130  	if err != nil {
  3131  		return nil, err
  3132  	}
  3133  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  3134  	if err != nil {
  3135  		return nil, status.Errorf(codes.InvalidArgument, "error parsing TimeInterval field path array item value from %s: %v", valueStr, err)
  3136  	}
  3137  	return fpaiv.(TimeInterval_FieldPathArrayItemValue), nil
  3138  }
  3139  
  3140  func MustParseTimeInterval_FieldPathArrayItemValue(pathStr, valueStr string) TimeInterval_FieldPathArrayItemValue {
  3141  	fpaiv, err := ParseTimeInterval_FieldPathArrayItemValue(pathStr, valueStr)
  3142  	if err != nil {
  3143  		panic(err)
  3144  	}
  3145  	return fpaiv
  3146  }
  3147  
  3148  type TimeInterval_FieldTerminalPathArrayItemValue struct {
  3149  	TimeInterval_FieldTerminalPath
  3150  	value interface{}
  3151  }
  3152  
  3153  var _ TimeInterval_FieldPathArrayItemValue = (*TimeInterval_FieldTerminalPathArrayItemValue)(nil)
  3154  
  3155  // GetRawValue returns stored element value for array in object TimeInterval as interface{}
  3156  func (fpaiv *TimeInterval_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  3157  	return fpaiv.value
  3158  }
  3159  
  3160  func (fpaiv *TimeInterval_FieldTerminalPathArrayItemValue) GetSingle(source *TimeInterval) (interface{}, bool) {
  3161  	return nil, false
  3162  }
  3163  
  3164  func (fpaiv *TimeInterval_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  3165  	return fpaiv.GetSingle(source.(*TimeInterval))
  3166  }
  3167  
  3168  // Contains returns a boolean indicating if value that is being held is present in given 'TimeInterval'
  3169  func (fpaiv *TimeInterval_FieldTerminalPathArrayItemValue) ContainsValue(source *TimeInterval) bool {
  3170  	slice := fpaiv.TimeInterval_FieldTerminalPath.Get(source)
  3171  	for _, v := range slice {
  3172  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  3173  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  3174  				return true
  3175  			}
  3176  		} else if reflect.DeepEqual(v, fpaiv.value) {
  3177  			return true
  3178  		}
  3179  	}
  3180  	return false
  3181  }
  3182  
  3183  // TimeInterval_FieldPathArrayOfValues allows storing slice of values for TimeInterval fields according to their type
  3184  type TimeInterval_FieldPathArrayOfValues interface {
  3185  	gotenobject.FieldPathArrayOfValues
  3186  	TimeInterval_FieldPath
  3187  }
  3188  
  3189  func ParseTimeInterval_FieldPathArrayOfValues(pathStr, valuesStr string) (TimeInterval_FieldPathArrayOfValues, error) {
  3190  	fp, err := ParseTimeInterval_FieldPath(pathStr)
  3191  	if err != nil {
  3192  		return nil, err
  3193  	}
  3194  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  3195  	if err != nil {
  3196  		return nil, status.Errorf(codes.InvalidArgument, "error parsing TimeInterval field path array of values from %s: %v", valuesStr, err)
  3197  	}
  3198  	return fpaov.(TimeInterval_FieldPathArrayOfValues), nil
  3199  }
  3200  
  3201  func MustParseTimeInterval_FieldPathArrayOfValues(pathStr, valuesStr string) TimeInterval_FieldPathArrayOfValues {
  3202  	fpaov, err := ParseTimeInterval_FieldPathArrayOfValues(pathStr, valuesStr)
  3203  	if err != nil {
  3204  		panic(err)
  3205  	}
  3206  	return fpaov
  3207  }
  3208  
  3209  type TimeInterval_FieldTerminalPathArrayOfValues struct {
  3210  	TimeInterval_FieldTerminalPath
  3211  	values interface{}
  3212  }
  3213  
  3214  var _ TimeInterval_FieldPathArrayOfValues = (*TimeInterval_FieldTerminalPathArrayOfValues)(nil)
  3215  
  3216  func (fpaov *TimeInterval_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  3217  	switch fpaov.selector {
  3218  	case TimeInterval_FieldPathSelectorEndTime:
  3219  		for _, v := range fpaov.values.([]*timestamppb.Timestamp) {
  3220  			values = append(values, v)
  3221  		}
  3222  	case TimeInterval_FieldPathSelectorStartTime:
  3223  		for _, v := range fpaov.values.([]*timestamppb.Timestamp) {
  3224  			values = append(values, v)
  3225  		}
  3226  	}
  3227  	return
  3228  }
  3229  func (fpaov *TimeInterval_FieldTerminalPathArrayOfValues) AsEndTimeArrayOfValues() ([]*timestamppb.Timestamp, bool) {
  3230  	res, ok := fpaov.values.([]*timestamppb.Timestamp)
  3231  	return res, ok
  3232  }
  3233  func (fpaov *TimeInterval_FieldTerminalPathArrayOfValues) AsStartTimeArrayOfValues() ([]*timestamppb.Timestamp, bool) {
  3234  	res, ok := fpaov.values.([]*timestamppb.Timestamp)
  3235  	return res, ok
  3236  }