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

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/audit/proto/v1/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  	ServiceData_FieldPathSelectorHostname ServiceData_FieldPathSelector = 2
   920  )
   921  
   922  func (s ServiceData_FieldPathSelector) String() string {
   923  	switch s {
   924  	case ServiceData_FieldPathSelectorName:
   925  		return "name"
   926  	case ServiceData_FieldPathSelectorRegionId:
   927  		return "region_id"
   928  	case ServiceData_FieldPathSelectorHostname:
   929  		return "hostname"
   930  	default:
   931  		panic(fmt.Sprintf("Invalid selector for ServiceData: %d", s))
   932  	}
   933  }
   934  
   935  func BuildServiceData_FieldPath(fp gotenobject.RawFieldPath) (ServiceData_FieldPath, error) {
   936  	if len(fp) == 0 {
   937  		return nil, status.Error(codes.InvalidArgument, "empty field path for object ServiceData")
   938  	}
   939  	if len(fp) == 1 {
   940  		switch fp[0] {
   941  		case "name":
   942  			return &ServiceData_FieldTerminalPath{selector: ServiceData_FieldPathSelectorName}, nil
   943  		case "region_id", "regionId", "region-id":
   944  			return &ServiceData_FieldTerminalPath{selector: ServiceData_FieldPathSelectorRegionId}, nil
   945  		case "hostname":
   946  			return &ServiceData_FieldTerminalPath{selector: ServiceData_FieldPathSelectorHostname}, nil
   947  		}
   948  	}
   949  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object ServiceData", fp)
   950  }
   951  
   952  func ParseServiceData_FieldPath(rawField string) (ServiceData_FieldPath, error) {
   953  	fp, err := gotenobject.ParseRawFieldPath(rawField)
   954  	if err != nil {
   955  		return nil, err
   956  	}
   957  	return BuildServiceData_FieldPath(fp)
   958  }
   959  
   960  func MustParseServiceData_FieldPath(rawField string) ServiceData_FieldPath {
   961  	fp, err := ParseServiceData_FieldPath(rawField)
   962  	if err != nil {
   963  		panic(err)
   964  	}
   965  	return fp
   966  }
   967  
   968  type ServiceData_FieldTerminalPath struct {
   969  	selector ServiceData_FieldPathSelector
   970  }
   971  
   972  var _ ServiceData_FieldPath = (*ServiceData_FieldTerminalPath)(nil)
   973  
   974  func (fp *ServiceData_FieldTerminalPath) Selector() ServiceData_FieldPathSelector {
   975  	return fp.selector
   976  }
   977  
   978  // String returns path representation in proto convention
   979  func (fp *ServiceData_FieldTerminalPath) String() string {
   980  	return fp.selector.String()
   981  }
   982  
   983  // JSONString returns path representation is JSON convention
   984  func (fp *ServiceData_FieldTerminalPath) JSONString() string {
   985  	return strcase.ToLowerCamel(fp.String())
   986  }
   987  
   988  // Get returns all values pointed by specific field from source ServiceData
   989  func (fp *ServiceData_FieldTerminalPath) Get(source *ServiceData) (values []interface{}) {
   990  	if source != nil {
   991  		switch fp.selector {
   992  		case ServiceData_FieldPathSelectorName:
   993  			values = append(values, source.Name)
   994  		case ServiceData_FieldPathSelectorRegionId:
   995  			values = append(values, source.RegionId)
   996  		case ServiceData_FieldPathSelectorHostname:
   997  			values = append(values, source.Hostname)
   998  		default:
   999  			panic(fmt.Sprintf("Invalid selector for ServiceData: %d", fp.selector))
  1000  		}
  1001  	}
  1002  	return
  1003  }
  1004  
  1005  func (fp *ServiceData_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  1006  	return fp.Get(source.(*ServiceData))
  1007  }
  1008  
  1009  // GetSingle returns value pointed by specific field of from source ServiceData
  1010  func (fp *ServiceData_FieldTerminalPath) GetSingle(source *ServiceData) (interface{}, bool) {
  1011  	switch fp.selector {
  1012  	case ServiceData_FieldPathSelectorName:
  1013  		return source.GetName(), source != nil
  1014  	case ServiceData_FieldPathSelectorRegionId:
  1015  		return source.GetRegionId(), source != nil
  1016  	case ServiceData_FieldPathSelectorHostname:
  1017  		return source.GetHostname(), source != nil
  1018  	default:
  1019  		panic(fmt.Sprintf("Invalid selector for ServiceData: %d", fp.selector))
  1020  	}
  1021  }
  1022  
  1023  func (fp *ServiceData_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1024  	return fp.GetSingle(source.(*ServiceData))
  1025  }
  1026  
  1027  // GetDefault returns a default value of the field type
  1028  func (fp *ServiceData_FieldTerminalPath) GetDefault() interface{} {
  1029  	switch fp.selector {
  1030  	case ServiceData_FieldPathSelectorName:
  1031  		return ""
  1032  	case ServiceData_FieldPathSelectorRegionId:
  1033  		return ""
  1034  	case ServiceData_FieldPathSelectorHostname:
  1035  		return ""
  1036  	default:
  1037  		panic(fmt.Sprintf("Invalid selector for ServiceData: %d", fp.selector))
  1038  	}
  1039  }
  1040  
  1041  func (fp *ServiceData_FieldTerminalPath) ClearValue(item *ServiceData) {
  1042  	if item != nil {
  1043  		switch fp.selector {
  1044  		case ServiceData_FieldPathSelectorName:
  1045  			item.Name = ""
  1046  		case ServiceData_FieldPathSelectorRegionId:
  1047  			item.RegionId = ""
  1048  		case ServiceData_FieldPathSelectorHostname:
  1049  			item.Hostname = ""
  1050  		default:
  1051  			panic(fmt.Sprintf("Invalid selector for ServiceData: %d", fp.selector))
  1052  		}
  1053  	}
  1054  }
  1055  
  1056  func (fp *ServiceData_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  1057  	fp.ClearValue(item.(*ServiceData))
  1058  }
  1059  
  1060  // IsLeaf - whether field path is holds simple value
  1061  func (fp *ServiceData_FieldTerminalPath) IsLeaf() bool {
  1062  	return fp.selector == ServiceData_FieldPathSelectorName ||
  1063  		fp.selector == ServiceData_FieldPathSelectorRegionId ||
  1064  		fp.selector == ServiceData_FieldPathSelectorHostname
  1065  }
  1066  
  1067  func (fp *ServiceData_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  1068  	return []gotenobject.FieldPath{fp}
  1069  }
  1070  
  1071  func (fp *ServiceData_FieldTerminalPath) WithIValue(value interface{}) ServiceData_FieldPathValue {
  1072  	switch fp.selector {
  1073  	case ServiceData_FieldPathSelectorName:
  1074  		return &ServiceData_FieldTerminalPathValue{ServiceData_FieldTerminalPath: *fp, value: value.(string)}
  1075  	case ServiceData_FieldPathSelectorRegionId:
  1076  		return &ServiceData_FieldTerminalPathValue{ServiceData_FieldTerminalPath: *fp, value: value.(string)}
  1077  	case ServiceData_FieldPathSelectorHostname:
  1078  		return &ServiceData_FieldTerminalPathValue{ServiceData_FieldTerminalPath: *fp, value: value.(string)}
  1079  	default:
  1080  		panic(fmt.Sprintf("Invalid selector for ServiceData: %d", fp.selector))
  1081  	}
  1082  }
  1083  
  1084  func (fp *ServiceData_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  1085  	return fp.WithIValue(value)
  1086  }
  1087  
  1088  func (fp *ServiceData_FieldTerminalPath) WithIArrayOfValues(values interface{}) ServiceData_FieldPathArrayOfValues {
  1089  	fpaov := &ServiceData_FieldTerminalPathArrayOfValues{ServiceData_FieldTerminalPath: *fp}
  1090  	switch fp.selector {
  1091  	case ServiceData_FieldPathSelectorName:
  1092  		return &ServiceData_FieldTerminalPathArrayOfValues{ServiceData_FieldTerminalPath: *fp, values: values.([]string)}
  1093  	case ServiceData_FieldPathSelectorRegionId:
  1094  		return &ServiceData_FieldTerminalPathArrayOfValues{ServiceData_FieldTerminalPath: *fp, values: values.([]string)}
  1095  	case ServiceData_FieldPathSelectorHostname:
  1096  		return &ServiceData_FieldTerminalPathArrayOfValues{ServiceData_FieldTerminalPath: *fp, values: values.([]string)}
  1097  	default:
  1098  		panic(fmt.Sprintf("Invalid selector for ServiceData: %d", fp.selector))
  1099  	}
  1100  	return fpaov
  1101  }
  1102  
  1103  func (fp *ServiceData_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  1104  	return fp.WithIArrayOfValues(values)
  1105  }
  1106  
  1107  func (fp *ServiceData_FieldTerminalPath) WithIArrayItemValue(value interface{}) ServiceData_FieldPathArrayItemValue {
  1108  	switch fp.selector {
  1109  	default:
  1110  		panic(fmt.Sprintf("Invalid selector for ServiceData: %d", fp.selector))
  1111  	}
  1112  }
  1113  
  1114  func (fp *ServiceData_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  1115  	return fp.WithIArrayItemValue(value)
  1116  }
  1117  
  1118  // ServiceData_FieldPathValue allows storing values for ServiceData fields according to their type
  1119  type ServiceData_FieldPathValue interface {
  1120  	ServiceData_FieldPath
  1121  	gotenobject.FieldPathValue
  1122  	SetTo(target **ServiceData)
  1123  	CompareWith(*ServiceData) (cmp int, comparable bool)
  1124  }
  1125  
  1126  func ParseServiceData_FieldPathValue(pathStr, valueStr string) (ServiceData_FieldPathValue, error) {
  1127  	fp, err := ParseServiceData_FieldPath(pathStr)
  1128  	if err != nil {
  1129  		return nil, err
  1130  	}
  1131  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  1132  	if err != nil {
  1133  		return nil, status.Errorf(codes.InvalidArgument, "error parsing ServiceData field path value from %s: %v", valueStr, err)
  1134  	}
  1135  	return fpv.(ServiceData_FieldPathValue), nil
  1136  }
  1137  
  1138  func MustParseServiceData_FieldPathValue(pathStr, valueStr string) ServiceData_FieldPathValue {
  1139  	fpv, err := ParseServiceData_FieldPathValue(pathStr, valueStr)
  1140  	if err != nil {
  1141  		panic(err)
  1142  	}
  1143  	return fpv
  1144  }
  1145  
  1146  type ServiceData_FieldTerminalPathValue struct {
  1147  	ServiceData_FieldTerminalPath
  1148  	value interface{}
  1149  }
  1150  
  1151  var _ ServiceData_FieldPathValue = (*ServiceData_FieldTerminalPathValue)(nil)
  1152  
  1153  // GetRawValue returns raw value stored under selected path for 'ServiceData' as interface{}
  1154  func (fpv *ServiceData_FieldTerminalPathValue) GetRawValue() interface{} {
  1155  	return fpv.value
  1156  }
  1157  func (fpv *ServiceData_FieldTerminalPathValue) AsNameValue() (string, bool) {
  1158  	res, ok := fpv.value.(string)
  1159  	return res, ok
  1160  }
  1161  func (fpv *ServiceData_FieldTerminalPathValue) AsRegionIdValue() (string, bool) {
  1162  	res, ok := fpv.value.(string)
  1163  	return res, ok
  1164  }
  1165  func (fpv *ServiceData_FieldTerminalPathValue) AsHostnameValue() (string, bool) {
  1166  	res, ok := fpv.value.(string)
  1167  	return res, ok
  1168  }
  1169  
  1170  // SetTo stores value for selected field for object ServiceData
  1171  func (fpv *ServiceData_FieldTerminalPathValue) SetTo(target **ServiceData) {
  1172  	if *target == nil {
  1173  		*target = new(ServiceData)
  1174  	}
  1175  	switch fpv.selector {
  1176  	case ServiceData_FieldPathSelectorName:
  1177  		(*target).Name = fpv.value.(string)
  1178  	case ServiceData_FieldPathSelectorRegionId:
  1179  		(*target).RegionId = fpv.value.(string)
  1180  	case ServiceData_FieldPathSelectorHostname:
  1181  		(*target).Hostname = fpv.value.(string)
  1182  	default:
  1183  		panic(fmt.Sprintf("Invalid selector for ServiceData: %d", fpv.selector))
  1184  	}
  1185  }
  1186  
  1187  func (fpv *ServiceData_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  1188  	typedObject := target.(*ServiceData)
  1189  	fpv.SetTo(&typedObject)
  1190  }
  1191  
  1192  // CompareWith compares value in the 'ServiceData_FieldTerminalPathValue' with the value under path in 'ServiceData'.
  1193  func (fpv *ServiceData_FieldTerminalPathValue) CompareWith(source *ServiceData) (int, bool) {
  1194  	switch fpv.selector {
  1195  	case ServiceData_FieldPathSelectorName:
  1196  		leftValue := fpv.value.(string)
  1197  		rightValue := source.GetName()
  1198  		if (leftValue) == (rightValue) {
  1199  			return 0, true
  1200  		} else if (leftValue) < (rightValue) {
  1201  			return -1, true
  1202  		} else {
  1203  			return 1, true
  1204  		}
  1205  	case ServiceData_FieldPathSelectorRegionId:
  1206  		leftValue := fpv.value.(string)
  1207  		rightValue := source.GetRegionId()
  1208  		if (leftValue) == (rightValue) {
  1209  			return 0, true
  1210  		} else if (leftValue) < (rightValue) {
  1211  			return -1, true
  1212  		} else {
  1213  			return 1, true
  1214  		}
  1215  	case ServiceData_FieldPathSelectorHostname:
  1216  		leftValue := fpv.value.(string)
  1217  		rightValue := source.GetHostname()
  1218  		if (leftValue) == (rightValue) {
  1219  			return 0, true
  1220  		} else if (leftValue) < (rightValue) {
  1221  			return -1, true
  1222  		} else {
  1223  			return 1, true
  1224  		}
  1225  	default:
  1226  		panic(fmt.Sprintf("Invalid selector for ServiceData: %d", fpv.selector))
  1227  	}
  1228  }
  1229  
  1230  func (fpv *ServiceData_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  1231  	return fpv.CompareWith(source.(*ServiceData))
  1232  }
  1233  
  1234  // ServiceData_FieldPathArrayItemValue allows storing single item in Path-specific values for ServiceData according to their type
  1235  // Present only for array (repeated) types.
  1236  type ServiceData_FieldPathArrayItemValue interface {
  1237  	gotenobject.FieldPathArrayItemValue
  1238  	ServiceData_FieldPath
  1239  	ContainsValue(*ServiceData) bool
  1240  }
  1241  
  1242  // ParseServiceData_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  1243  func ParseServiceData_FieldPathArrayItemValue(pathStr, valueStr string) (ServiceData_FieldPathArrayItemValue, error) {
  1244  	fp, err := ParseServiceData_FieldPath(pathStr)
  1245  	if err != nil {
  1246  		return nil, err
  1247  	}
  1248  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  1249  	if err != nil {
  1250  		return nil, status.Errorf(codes.InvalidArgument, "error parsing ServiceData field path array item value from %s: %v", valueStr, err)
  1251  	}
  1252  	return fpaiv.(ServiceData_FieldPathArrayItemValue), nil
  1253  }
  1254  
  1255  func MustParseServiceData_FieldPathArrayItemValue(pathStr, valueStr string) ServiceData_FieldPathArrayItemValue {
  1256  	fpaiv, err := ParseServiceData_FieldPathArrayItemValue(pathStr, valueStr)
  1257  	if err != nil {
  1258  		panic(err)
  1259  	}
  1260  	return fpaiv
  1261  }
  1262  
  1263  type ServiceData_FieldTerminalPathArrayItemValue struct {
  1264  	ServiceData_FieldTerminalPath
  1265  	value interface{}
  1266  }
  1267  
  1268  var _ ServiceData_FieldPathArrayItemValue = (*ServiceData_FieldTerminalPathArrayItemValue)(nil)
  1269  
  1270  // GetRawValue returns stored element value for array in object ServiceData as interface{}
  1271  func (fpaiv *ServiceData_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  1272  	return fpaiv.value
  1273  }
  1274  
  1275  func (fpaiv *ServiceData_FieldTerminalPathArrayItemValue) GetSingle(source *ServiceData) (interface{}, bool) {
  1276  	return nil, false
  1277  }
  1278  
  1279  func (fpaiv *ServiceData_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1280  	return fpaiv.GetSingle(source.(*ServiceData))
  1281  }
  1282  
  1283  // Contains returns a boolean indicating if value that is being held is present in given 'ServiceData'
  1284  func (fpaiv *ServiceData_FieldTerminalPathArrayItemValue) ContainsValue(source *ServiceData) bool {
  1285  	slice := fpaiv.ServiceData_FieldTerminalPath.Get(source)
  1286  	for _, v := range slice {
  1287  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  1288  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  1289  				return true
  1290  			}
  1291  		} else if reflect.DeepEqual(v, fpaiv.value) {
  1292  			return true
  1293  		}
  1294  	}
  1295  	return false
  1296  }
  1297  
  1298  // ServiceData_FieldPathArrayOfValues allows storing slice of values for ServiceData fields according to their type
  1299  type ServiceData_FieldPathArrayOfValues interface {
  1300  	gotenobject.FieldPathArrayOfValues
  1301  	ServiceData_FieldPath
  1302  }
  1303  
  1304  func ParseServiceData_FieldPathArrayOfValues(pathStr, valuesStr string) (ServiceData_FieldPathArrayOfValues, error) {
  1305  	fp, err := ParseServiceData_FieldPath(pathStr)
  1306  	if err != nil {
  1307  		return nil, err
  1308  	}
  1309  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  1310  	if err != nil {
  1311  		return nil, status.Errorf(codes.InvalidArgument, "error parsing ServiceData field path array of values from %s: %v", valuesStr, err)
  1312  	}
  1313  	return fpaov.(ServiceData_FieldPathArrayOfValues), nil
  1314  }
  1315  
  1316  func MustParseServiceData_FieldPathArrayOfValues(pathStr, valuesStr string) ServiceData_FieldPathArrayOfValues {
  1317  	fpaov, err := ParseServiceData_FieldPathArrayOfValues(pathStr, valuesStr)
  1318  	if err != nil {
  1319  		panic(err)
  1320  	}
  1321  	return fpaov
  1322  }
  1323  
  1324  type ServiceData_FieldTerminalPathArrayOfValues struct {
  1325  	ServiceData_FieldTerminalPath
  1326  	values interface{}
  1327  }
  1328  
  1329  var _ ServiceData_FieldPathArrayOfValues = (*ServiceData_FieldTerminalPathArrayOfValues)(nil)
  1330  
  1331  func (fpaov *ServiceData_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  1332  	switch fpaov.selector {
  1333  	case ServiceData_FieldPathSelectorName:
  1334  		for _, v := range fpaov.values.([]string) {
  1335  			values = append(values, v)
  1336  		}
  1337  	case ServiceData_FieldPathSelectorRegionId:
  1338  		for _, v := range fpaov.values.([]string) {
  1339  			values = append(values, v)
  1340  		}
  1341  	case ServiceData_FieldPathSelectorHostname:
  1342  		for _, v := range fpaov.values.([]string) {
  1343  			values = append(values, v)
  1344  		}
  1345  	}
  1346  	return
  1347  }
  1348  func (fpaov *ServiceData_FieldTerminalPathArrayOfValues) AsNameArrayOfValues() ([]string, bool) {
  1349  	res, ok := fpaov.values.([]string)
  1350  	return res, ok
  1351  }
  1352  func (fpaov *ServiceData_FieldTerminalPathArrayOfValues) AsRegionIdArrayOfValues() ([]string, bool) {
  1353  	res, ok := fpaov.values.([]string)
  1354  	return res, ok
  1355  }
  1356  func (fpaov *ServiceData_FieldTerminalPathArrayOfValues) AsHostnameArrayOfValues() ([]string, bool) {
  1357  	res, ok := fpaov.values.([]string)
  1358  	return res, ok
  1359  }
  1360  
  1361  // FieldPath provides implementation to handle
  1362  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  1363  type ObjectState_FieldPath interface {
  1364  	gotenobject.FieldPath
  1365  	Selector() ObjectState_FieldPathSelector
  1366  	Get(source *ObjectState) []interface{}
  1367  	GetSingle(source *ObjectState) (interface{}, bool)
  1368  	ClearValue(item *ObjectState)
  1369  
  1370  	// Those methods build corresponding ObjectState_FieldPathValue
  1371  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  1372  	WithIValue(value interface{}) ObjectState_FieldPathValue
  1373  	WithIArrayOfValues(values interface{}) ObjectState_FieldPathArrayOfValues
  1374  	WithIArrayItemValue(value interface{}) ObjectState_FieldPathArrayItemValue
  1375  }
  1376  
  1377  type ObjectState_FieldPathSelector int32
  1378  
  1379  const (
  1380  	ObjectState_FieldPathSelectorData   ObjectState_FieldPathSelector = 0
  1381  	ObjectState_FieldPathSelectorLabels ObjectState_FieldPathSelector = 1
  1382  )
  1383  
  1384  func (s ObjectState_FieldPathSelector) String() string {
  1385  	switch s {
  1386  	case ObjectState_FieldPathSelectorData:
  1387  		return "data"
  1388  	case ObjectState_FieldPathSelectorLabels:
  1389  		return "labels"
  1390  	default:
  1391  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", s))
  1392  	}
  1393  }
  1394  
  1395  func BuildObjectState_FieldPath(fp gotenobject.RawFieldPath) (ObjectState_FieldPath, error) {
  1396  	if len(fp) == 0 {
  1397  		return nil, status.Error(codes.InvalidArgument, "empty field path for object ObjectState")
  1398  	}
  1399  	if len(fp) == 1 {
  1400  		switch fp[0] {
  1401  		case "data":
  1402  			return &ObjectState_FieldTerminalPath{selector: ObjectState_FieldPathSelectorData}, nil
  1403  		case "labels":
  1404  			return &ObjectState_FieldTerminalPath{selector: ObjectState_FieldPathSelectorLabels}, nil
  1405  		}
  1406  	} else {
  1407  		switch fp[0] {
  1408  		case "labels":
  1409  			if len(fp) > 2 {
  1410  				return nil, status.Errorf(codes.InvalidArgument, "sub path for maps ('%s') are not supported (object ObjectState)", fp)
  1411  			}
  1412  			return &ObjectState_FieldPathMap{selector: ObjectState_FieldPathSelectorLabels, key: fp[1]}, nil
  1413  		}
  1414  	}
  1415  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object ObjectState", fp)
  1416  }
  1417  
  1418  func ParseObjectState_FieldPath(rawField string) (ObjectState_FieldPath, error) {
  1419  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  1420  	if err != nil {
  1421  		return nil, err
  1422  	}
  1423  	return BuildObjectState_FieldPath(fp)
  1424  }
  1425  
  1426  func MustParseObjectState_FieldPath(rawField string) ObjectState_FieldPath {
  1427  	fp, err := ParseObjectState_FieldPath(rawField)
  1428  	if err != nil {
  1429  		panic(err)
  1430  	}
  1431  	return fp
  1432  }
  1433  
  1434  type ObjectState_FieldTerminalPath struct {
  1435  	selector ObjectState_FieldPathSelector
  1436  }
  1437  
  1438  var _ ObjectState_FieldPath = (*ObjectState_FieldTerminalPath)(nil)
  1439  
  1440  func (fp *ObjectState_FieldTerminalPath) Selector() ObjectState_FieldPathSelector {
  1441  	return fp.selector
  1442  }
  1443  
  1444  // String returns path representation in proto convention
  1445  func (fp *ObjectState_FieldTerminalPath) String() string {
  1446  	return fp.selector.String()
  1447  }
  1448  
  1449  // JSONString returns path representation is JSON convention
  1450  func (fp *ObjectState_FieldTerminalPath) JSONString() string {
  1451  	return strcase.ToLowerCamel(fp.String())
  1452  }
  1453  
  1454  // Get returns all values pointed by specific field from source ObjectState
  1455  func (fp *ObjectState_FieldTerminalPath) Get(source *ObjectState) (values []interface{}) {
  1456  	if source != nil {
  1457  		switch fp.selector {
  1458  		case ObjectState_FieldPathSelectorData:
  1459  			if source.Data != nil {
  1460  				values = append(values, source.Data)
  1461  			}
  1462  		case ObjectState_FieldPathSelectorLabels:
  1463  			values = append(values, source.Labels)
  1464  		default:
  1465  			panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fp.selector))
  1466  		}
  1467  	}
  1468  	return
  1469  }
  1470  
  1471  func (fp *ObjectState_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  1472  	return fp.Get(source.(*ObjectState))
  1473  }
  1474  
  1475  // GetSingle returns value pointed by specific field of from source ObjectState
  1476  func (fp *ObjectState_FieldTerminalPath) GetSingle(source *ObjectState) (interface{}, bool) {
  1477  	switch fp.selector {
  1478  	case ObjectState_FieldPathSelectorData:
  1479  		res := source.GetData()
  1480  		return res, res != nil
  1481  	case ObjectState_FieldPathSelectorLabels:
  1482  		res := source.GetLabels()
  1483  		return res, res != nil
  1484  	default:
  1485  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fp.selector))
  1486  	}
  1487  }
  1488  
  1489  func (fp *ObjectState_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1490  	return fp.GetSingle(source.(*ObjectState))
  1491  }
  1492  
  1493  // GetDefault returns a default value of the field type
  1494  func (fp *ObjectState_FieldTerminalPath) GetDefault() interface{} {
  1495  	switch fp.selector {
  1496  	case ObjectState_FieldPathSelectorData:
  1497  		return (*anypb.Any)(nil)
  1498  	case ObjectState_FieldPathSelectorLabels:
  1499  		return (map[string]string)(nil)
  1500  	default:
  1501  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fp.selector))
  1502  	}
  1503  }
  1504  
  1505  func (fp *ObjectState_FieldTerminalPath) ClearValue(item *ObjectState) {
  1506  	if item != nil {
  1507  		switch fp.selector {
  1508  		case ObjectState_FieldPathSelectorData:
  1509  			item.Data = nil
  1510  		case ObjectState_FieldPathSelectorLabels:
  1511  			item.Labels = nil
  1512  		default:
  1513  			panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fp.selector))
  1514  		}
  1515  	}
  1516  }
  1517  
  1518  func (fp *ObjectState_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  1519  	fp.ClearValue(item.(*ObjectState))
  1520  }
  1521  
  1522  // IsLeaf - whether field path is holds simple value
  1523  func (fp *ObjectState_FieldTerminalPath) IsLeaf() bool {
  1524  	return fp.selector == ObjectState_FieldPathSelectorData ||
  1525  		fp.selector == ObjectState_FieldPathSelectorLabels
  1526  }
  1527  
  1528  func (fp *ObjectState_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  1529  	return []gotenobject.FieldPath{fp}
  1530  }
  1531  
  1532  func (fp *ObjectState_FieldTerminalPath) WithIValue(value interface{}) ObjectState_FieldPathValue {
  1533  	switch fp.selector {
  1534  	case ObjectState_FieldPathSelectorData:
  1535  		return &ObjectState_FieldTerminalPathValue{ObjectState_FieldTerminalPath: *fp, value: value.(*anypb.Any)}
  1536  	case ObjectState_FieldPathSelectorLabels:
  1537  		return &ObjectState_FieldTerminalPathValue{ObjectState_FieldTerminalPath: *fp, value: value.(map[string]string)}
  1538  	default:
  1539  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fp.selector))
  1540  	}
  1541  }
  1542  
  1543  func (fp *ObjectState_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  1544  	return fp.WithIValue(value)
  1545  }
  1546  
  1547  func (fp *ObjectState_FieldTerminalPath) WithIArrayOfValues(values interface{}) ObjectState_FieldPathArrayOfValues {
  1548  	fpaov := &ObjectState_FieldTerminalPathArrayOfValues{ObjectState_FieldTerminalPath: *fp}
  1549  	switch fp.selector {
  1550  	case ObjectState_FieldPathSelectorData:
  1551  		return &ObjectState_FieldTerminalPathArrayOfValues{ObjectState_FieldTerminalPath: *fp, values: values.([]*anypb.Any)}
  1552  	case ObjectState_FieldPathSelectorLabels:
  1553  		return &ObjectState_FieldTerminalPathArrayOfValues{ObjectState_FieldTerminalPath: *fp, values: values.([]map[string]string)}
  1554  	default:
  1555  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fp.selector))
  1556  	}
  1557  	return fpaov
  1558  }
  1559  
  1560  func (fp *ObjectState_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  1561  	return fp.WithIArrayOfValues(values)
  1562  }
  1563  
  1564  func (fp *ObjectState_FieldTerminalPath) WithIArrayItemValue(value interface{}) ObjectState_FieldPathArrayItemValue {
  1565  	switch fp.selector {
  1566  	default:
  1567  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fp.selector))
  1568  	}
  1569  }
  1570  
  1571  func (fp *ObjectState_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  1572  	return fp.WithIArrayItemValue(value)
  1573  }
  1574  
  1575  // FieldPath for map type with additional Key information
  1576  type ObjectState_FieldPathMap struct {
  1577  	key      string
  1578  	selector ObjectState_FieldPathSelector
  1579  }
  1580  
  1581  var _ ObjectState_FieldPath = (*ObjectState_FieldPathMap)(nil)
  1582  
  1583  func (fpm *ObjectState_FieldPathMap) Selector() ObjectState_FieldPathSelector {
  1584  	return fpm.selector
  1585  }
  1586  
  1587  func (fpm *ObjectState_FieldPathMap) Key() string {
  1588  	return fpm.key
  1589  }
  1590  
  1591  // String returns path representation in proto convention
  1592  func (fpm *ObjectState_FieldPathMap) String() string {
  1593  	return fpm.selector.String() + "." + fpm.key
  1594  }
  1595  
  1596  // JSONString returns path representation is JSON convention. Note that map keys are not transformed
  1597  func (fpm *ObjectState_FieldPathMap) JSONString() string {
  1598  	return strcase.ToLowerCamel(fpm.selector.String()) + "." + fpm.key
  1599  }
  1600  
  1601  // Get returns all values pointed by selected field map key from source ObjectState
  1602  func (fpm *ObjectState_FieldPathMap) Get(source *ObjectState) (values []interface{}) {
  1603  	switch fpm.selector {
  1604  	case ObjectState_FieldPathSelectorLabels:
  1605  		if value, ok := source.GetLabels()[fpm.key]; ok {
  1606  			values = append(values, value)
  1607  		}
  1608  	default:
  1609  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpm.selector))
  1610  	}
  1611  	return
  1612  }
  1613  
  1614  func (fpm *ObjectState_FieldPathMap) GetRaw(source proto.Message) []interface{} {
  1615  	return fpm.Get(source.(*ObjectState))
  1616  }
  1617  
  1618  // GetSingle returns value by selected field map key from source ObjectState
  1619  func (fpm *ObjectState_FieldPathMap) GetSingle(source *ObjectState) (interface{}, bool) {
  1620  	switch fpm.selector {
  1621  	case ObjectState_FieldPathSelectorLabels:
  1622  		res, ok := source.GetLabels()[fpm.key]
  1623  		return res, ok
  1624  	default:
  1625  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpm.selector))
  1626  	}
  1627  }
  1628  
  1629  func (fpm *ObjectState_FieldPathMap) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1630  	return fpm.GetSingle(source.(*ObjectState))
  1631  }
  1632  
  1633  // GetDefault returns a default value of the field type
  1634  func (fpm *ObjectState_FieldPathMap) GetDefault() interface{} {
  1635  	switch fpm.selector {
  1636  	case ObjectState_FieldPathSelectorLabels:
  1637  		var v string
  1638  		return v
  1639  	default:
  1640  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpm.selector))
  1641  	}
  1642  }
  1643  
  1644  func (fpm *ObjectState_FieldPathMap) ClearValue(item *ObjectState) {
  1645  	if item != nil {
  1646  		switch fpm.selector {
  1647  		case ObjectState_FieldPathSelectorLabels:
  1648  			delete(item.Labels, fpm.key)
  1649  		default:
  1650  			panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpm.selector))
  1651  		}
  1652  	}
  1653  }
  1654  
  1655  func (fpm *ObjectState_FieldPathMap) ClearValueRaw(item proto.Message) {
  1656  	fpm.ClearValue(item.(*ObjectState))
  1657  }
  1658  
  1659  // IsLeaf - whether field path is holds simple value
  1660  func (fpm *ObjectState_FieldPathMap) IsLeaf() bool {
  1661  	switch fpm.selector {
  1662  	case ObjectState_FieldPathSelectorLabels:
  1663  		return true
  1664  	default:
  1665  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpm.selector))
  1666  	}
  1667  }
  1668  
  1669  func (fpm *ObjectState_FieldPathMap) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  1670  	return []gotenobject.FieldPath{fpm}
  1671  }
  1672  
  1673  func (fpm *ObjectState_FieldPathMap) WithIValue(value interface{}) ObjectState_FieldPathValue {
  1674  	switch fpm.selector {
  1675  	case ObjectState_FieldPathSelectorLabels:
  1676  		return &ObjectState_FieldPathMapValue{ObjectState_FieldPathMap: *fpm, value: value.(string)}
  1677  	default:
  1678  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpm.selector))
  1679  	}
  1680  }
  1681  
  1682  func (fpm *ObjectState_FieldPathMap) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  1683  	return fpm.WithIValue(value)
  1684  }
  1685  
  1686  func (fpm *ObjectState_FieldPathMap) WithIArrayOfValues(values interface{}) ObjectState_FieldPathArrayOfValues {
  1687  	switch fpm.selector {
  1688  	case ObjectState_FieldPathSelectorLabels:
  1689  		return &ObjectState_FieldPathMapArrayOfValues{ObjectState_FieldPathMap: *fpm, values: values.([]string)}
  1690  	default:
  1691  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpm.selector))
  1692  	}
  1693  }
  1694  
  1695  func (fpm *ObjectState_FieldPathMap) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  1696  	return fpm.WithIArrayOfValues(values)
  1697  }
  1698  
  1699  func (fpm *ObjectState_FieldPathMap) WithIArrayItemValue(value interface{}) ObjectState_FieldPathArrayItemValue {
  1700  	panic("Cannot create array item value from map fieldpath")
  1701  }
  1702  
  1703  func (fpm *ObjectState_FieldPathMap) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  1704  	return fpm.WithIArrayItemValue(value)
  1705  }
  1706  
  1707  // ObjectState_FieldPathValue allows storing values for ObjectState fields according to their type
  1708  type ObjectState_FieldPathValue interface {
  1709  	ObjectState_FieldPath
  1710  	gotenobject.FieldPathValue
  1711  	SetTo(target **ObjectState)
  1712  	CompareWith(*ObjectState) (cmp int, comparable bool)
  1713  }
  1714  
  1715  func ParseObjectState_FieldPathValue(pathStr, valueStr string) (ObjectState_FieldPathValue, error) {
  1716  	fp, err := ParseObjectState_FieldPath(pathStr)
  1717  	if err != nil {
  1718  		return nil, err
  1719  	}
  1720  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  1721  	if err != nil {
  1722  		return nil, status.Errorf(codes.InvalidArgument, "error parsing ObjectState field path value from %s: %v", valueStr, err)
  1723  	}
  1724  	return fpv.(ObjectState_FieldPathValue), nil
  1725  }
  1726  
  1727  func MustParseObjectState_FieldPathValue(pathStr, valueStr string) ObjectState_FieldPathValue {
  1728  	fpv, err := ParseObjectState_FieldPathValue(pathStr, valueStr)
  1729  	if err != nil {
  1730  		panic(err)
  1731  	}
  1732  	return fpv
  1733  }
  1734  
  1735  type ObjectState_FieldTerminalPathValue struct {
  1736  	ObjectState_FieldTerminalPath
  1737  	value interface{}
  1738  }
  1739  
  1740  var _ ObjectState_FieldPathValue = (*ObjectState_FieldTerminalPathValue)(nil)
  1741  
  1742  // GetRawValue returns raw value stored under selected path for 'ObjectState' as interface{}
  1743  func (fpv *ObjectState_FieldTerminalPathValue) GetRawValue() interface{} {
  1744  	return fpv.value
  1745  }
  1746  func (fpv *ObjectState_FieldTerminalPathValue) AsDataValue() (*anypb.Any, bool) {
  1747  	res, ok := fpv.value.(*anypb.Any)
  1748  	return res, ok
  1749  }
  1750  func (fpv *ObjectState_FieldTerminalPathValue) AsLabelsValue() (map[string]string, bool) {
  1751  	res, ok := fpv.value.(map[string]string)
  1752  	return res, ok
  1753  }
  1754  
  1755  // SetTo stores value for selected field for object ObjectState
  1756  func (fpv *ObjectState_FieldTerminalPathValue) SetTo(target **ObjectState) {
  1757  	if *target == nil {
  1758  		*target = new(ObjectState)
  1759  	}
  1760  	switch fpv.selector {
  1761  	case ObjectState_FieldPathSelectorData:
  1762  		(*target).Data = fpv.value.(*anypb.Any)
  1763  	case ObjectState_FieldPathSelectorLabels:
  1764  		(*target).Labels = fpv.value.(map[string]string)
  1765  	default:
  1766  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpv.selector))
  1767  	}
  1768  }
  1769  
  1770  func (fpv *ObjectState_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  1771  	typedObject := target.(*ObjectState)
  1772  	fpv.SetTo(&typedObject)
  1773  }
  1774  
  1775  // CompareWith compares value in the 'ObjectState_FieldTerminalPathValue' with the value under path in 'ObjectState'.
  1776  func (fpv *ObjectState_FieldTerminalPathValue) CompareWith(source *ObjectState) (int, bool) {
  1777  	switch fpv.selector {
  1778  	case ObjectState_FieldPathSelectorData:
  1779  		return 0, false
  1780  	case ObjectState_FieldPathSelectorLabels:
  1781  		return 0, false
  1782  	default:
  1783  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpv.selector))
  1784  	}
  1785  }
  1786  
  1787  func (fpv *ObjectState_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  1788  	return fpv.CompareWith(source.(*ObjectState))
  1789  }
  1790  
  1791  type ObjectState_FieldPathMapValue struct {
  1792  	ObjectState_FieldPathMap
  1793  	value interface{}
  1794  }
  1795  
  1796  var _ ObjectState_FieldPathValue = (*ObjectState_FieldPathMapValue)(nil)
  1797  
  1798  // GetValue returns value stored under selected field in ObjectState as interface{}
  1799  func (fpmv *ObjectState_FieldPathMapValue) GetRawValue() interface{} {
  1800  	return fpmv.value
  1801  }
  1802  func (fpmv *ObjectState_FieldPathMapValue) AsLabelsElementValue() (string, bool) {
  1803  	res, ok := fpmv.value.(string)
  1804  	return res, ok
  1805  }
  1806  
  1807  // SetTo stores value for selected field in ObjectState
  1808  func (fpmv *ObjectState_FieldPathMapValue) SetTo(target **ObjectState) {
  1809  	if *target == nil {
  1810  		*target = new(ObjectState)
  1811  	}
  1812  	switch fpmv.selector {
  1813  	case ObjectState_FieldPathSelectorLabels:
  1814  		if (*target).Labels == nil {
  1815  			(*target).Labels = make(map[string]string)
  1816  		}
  1817  		(*target).Labels[fpmv.key] = fpmv.value.(string)
  1818  	default:
  1819  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpmv.selector))
  1820  	}
  1821  }
  1822  
  1823  func (fpmv *ObjectState_FieldPathMapValue) SetToRaw(target proto.Message) {
  1824  	typedObject := target.(*ObjectState)
  1825  	fpmv.SetTo(&typedObject)
  1826  }
  1827  
  1828  // CompareWith compares value in the 'ObjectState_FieldPathMapValue' with the value under path in 'ObjectState'.
  1829  func (fpmv *ObjectState_FieldPathMapValue) CompareWith(source *ObjectState) (int, bool) {
  1830  	switch fpmv.selector {
  1831  	case ObjectState_FieldPathSelectorLabels:
  1832  		leftValue := fpmv.value.(string)
  1833  		rightValue := source.GetLabels()[fpmv.key]
  1834  		if (leftValue) == (rightValue) {
  1835  			return 0, true
  1836  		} else if (leftValue) < (rightValue) {
  1837  			return -1, true
  1838  		} else {
  1839  			return 1, true
  1840  		}
  1841  	default:
  1842  		panic(fmt.Sprintf("Invalid selector for ObjectState: %d", fpmv.selector))
  1843  	}
  1844  }
  1845  
  1846  func (fpmv *ObjectState_FieldPathMapValue) CompareWithRaw(source proto.Message) (int, bool) {
  1847  	return fpmv.CompareWith(source.(*ObjectState))
  1848  }
  1849  
  1850  // ObjectState_FieldPathArrayItemValue allows storing single item in Path-specific values for ObjectState according to their type
  1851  // Present only for array (repeated) types.
  1852  type ObjectState_FieldPathArrayItemValue interface {
  1853  	gotenobject.FieldPathArrayItemValue
  1854  	ObjectState_FieldPath
  1855  	ContainsValue(*ObjectState) bool
  1856  }
  1857  
  1858  // ParseObjectState_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  1859  func ParseObjectState_FieldPathArrayItemValue(pathStr, valueStr string) (ObjectState_FieldPathArrayItemValue, error) {
  1860  	fp, err := ParseObjectState_FieldPath(pathStr)
  1861  	if err != nil {
  1862  		return nil, err
  1863  	}
  1864  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  1865  	if err != nil {
  1866  		return nil, status.Errorf(codes.InvalidArgument, "error parsing ObjectState field path array item value from %s: %v", valueStr, err)
  1867  	}
  1868  	return fpaiv.(ObjectState_FieldPathArrayItemValue), nil
  1869  }
  1870  
  1871  func MustParseObjectState_FieldPathArrayItemValue(pathStr, valueStr string) ObjectState_FieldPathArrayItemValue {
  1872  	fpaiv, err := ParseObjectState_FieldPathArrayItemValue(pathStr, valueStr)
  1873  	if err != nil {
  1874  		panic(err)
  1875  	}
  1876  	return fpaiv
  1877  }
  1878  
  1879  type ObjectState_FieldTerminalPathArrayItemValue struct {
  1880  	ObjectState_FieldTerminalPath
  1881  	value interface{}
  1882  }
  1883  
  1884  var _ ObjectState_FieldPathArrayItemValue = (*ObjectState_FieldTerminalPathArrayItemValue)(nil)
  1885  
  1886  // GetRawValue returns stored element value for array in object ObjectState as interface{}
  1887  func (fpaiv *ObjectState_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  1888  	return fpaiv.value
  1889  }
  1890  
  1891  func (fpaiv *ObjectState_FieldTerminalPathArrayItemValue) GetSingle(source *ObjectState) (interface{}, bool) {
  1892  	return nil, false
  1893  }
  1894  
  1895  func (fpaiv *ObjectState_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1896  	return fpaiv.GetSingle(source.(*ObjectState))
  1897  }
  1898  
  1899  // Contains returns a boolean indicating if value that is being held is present in given 'ObjectState'
  1900  func (fpaiv *ObjectState_FieldTerminalPathArrayItemValue) ContainsValue(source *ObjectState) bool {
  1901  	slice := fpaiv.ObjectState_FieldTerminalPath.Get(source)
  1902  	for _, v := range slice {
  1903  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  1904  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  1905  				return true
  1906  			}
  1907  		} else if reflect.DeepEqual(v, fpaiv.value) {
  1908  			return true
  1909  		}
  1910  	}
  1911  	return false
  1912  }
  1913  
  1914  // ObjectState_FieldPathArrayOfValues allows storing slice of values for ObjectState fields according to their type
  1915  type ObjectState_FieldPathArrayOfValues interface {
  1916  	gotenobject.FieldPathArrayOfValues
  1917  	ObjectState_FieldPath
  1918  }
  1919  
  1920  func ParseObjectState_FieldPathArrayOfValues(pathStr, valuesStr string) (ObjectState_FieldPathArrayOfValues, error) {
  1921  	fp, err := ParseObjectState_FieldPath(pathStr)
  1922  	if err != nil {
  1923  		return nil, err
  1924  	}
  1925  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  1926  	if err != nil {
  1927  		return nil, status.Errorf(codes.InvalidArgument, "error parsing ObjectState field path array of values from %s: %v", valuesStr, err)
  1928  	}
  1929  	return fpaov.(ObjectState_FieldPathArrayOfValues), nil
  1930  }
  1931  
  1932  func MustParseObjectState_FieldPathArrayOfValues(pathStr, valuesStr string) ObjectState_FieldPathArrayOfValues {
  1933  	fpaov, err := ParseObjectState_FieldPathArrayOfValues(pathStr, valuesStr)
  1934  	if err != nil {
  1935  		panic(err)
  1936  	}
  1937  	return fpaov
  1938  }
  1939  
  1940  type ObjectState_FieldTerminalPathArrayOfValues struct {
  1941  	ObjectState_FieldTerminalPath
  1942  	values interface{}
  1943  }
  1944  
  1945  var _ ObjectState_FieldPathArrayOfValues = (*ObjectState_FieldTerminalPathArrayOfValues)(nil)
  1946  
  1947  func (fpaov *ObjectState_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  1948  	switch fpaov.selector {
  1949  	case ObjectState_FieldPathSelectorData:
  1950  		for _, v := range fpaov.values.([]*anypb.Any) {
  1951  			values = append(values, v)
  1952  		}
  1953  	case ObjectState_FieldPathSelectorLabels:
  1954  		for _, v := range fpaov.values.([]map[string]string) {
  1955  			values = append(values, v)
  1956  		}
  1957  	}
  1958  	return
  1959  }
  1960  func (fpaov *ObjectState_FieldTerminalPathArrayOfValues) AsDataArrayOfValues() ([]*anypb.Any, bool) {
  1961  	res, ok := fpaov.values.([]*anypb.Any)
  1962  	return res, ok
  1963  }
  1964  func (fpaov *ObjectState_FieldTerminalPathArrayOfValues) AsLabelsArrayOfValues() ([]map[string]string, bool) {
  1965  	res, ok := fpaov.values.([]map[string]string)
  1966  	return res, ok
  1967  }
  1968  
  1969  type ObjectState_FieldPathMapArrayOfValues struct {
  1970  	ObjectState_FieldPathMap
  1971  	values interface{}
  1972  }
  1973  
  1974  var _ ObjectState_FieldPathArrayOfValues = (*ObjectState_FieldPathMapArrayOfValues)(nil)
  1975  
  1976  func (fpmaov *ObjectState_FieldPathMapArrayOfValues) GetRawValues() (values []interface{}) {
  1977  	switch fpmaov.selector {
  1978  	case ObjectState_FieldPathSelectorLabels:
  1979  		for _, v := range fpmaov.values.([]string) {
  1980  			values = append(values, v)
  1981  		}
  1982  	}
  1983  	return
  1984  }
  1985  func (fpmaov *ObjectState_FieldPathMapArrayOfValues) AsLabelsArrayOfElementValues() ([]string, bool) {
  1986  	res, ok := fpmaov.values.([]string)
  1987  	return res, ok
  1988  }
  1989  
  1990  // FieldPath provides implementation to handle
  1991  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  1992  type LabelDescriptor_FieldPath interface {
  1993  	gotenobject.FieldPath
  1994  	Selector() LabelDescriptor_FieldPathSelector
  1995  	Get(source *LabelDescriptor) []interface{}
  1996  	GetSingle(source *LabelDescriptor) (interface{}, bool)
  1997  	ClearValue(item *LabelDescriptor)
  1998  
  1999  	// Those methods build corresponding LabelDescriptor_FieldPathValue
  2000  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  2001  	WithIValue(value interface{}) LabelDescriptor_FieldPathValue
  2002  	WithIArrayOfValues(values interface{}) LabelDescriptor_FieldPathArrayOfValues
  2003  	WithIArrayItemValue(value interface{}) LabelDescriptor_FieldPathArrayItemValue
  2004  }
  2005  
  2006  type LabelDescriptor_FieldPathSelector int32
  2007  
  2008  const (
  2009  	LabelDescriptor_FieldPathSelectorKey      LabelDescriptor_FieldPathSelector = 0
  2010  	LabelDescriptor_FieldPathSelectorVersions LabelDescriptor_FieldPathSelector = 1
  2011  )
  2012  
  2013  func (s LabelDescriptor_FieldPathSelector) String() string {
  2014  	switch s {
  2015  	case LabelDescriptor_FieldPathSelectorKey:
  2016  		return "key"
  2017  	case LabelDescriptor_FieldPathSelectorVersions:
  2018  		return "versions"
  2019  	default:
  2020  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", s))
  2021  	}
  2022  }
  2023  
  2024  func BuildLabelDescriptor_FieldPath(fp gotenobject.RawFieldPath) (LabelDescriptor_FieldPath, error) {
  2025  	if len(fp) == 0 {
  2026  		return nil, status.Error(codes.InvalidArgument, "empty field path for object LabelDescriptor")
  2027  	}
  2028  	if len(fp) == 1 {
  2029  		switch fp[0] {
  2030  		case "key":
  2031  			return &LabelDescriptor_FieldTerminalPath{selector: LabelDescriptor_FieldPathSelectorKey}, nil
  2032  		case "versions":
  2033  			return &LabelDescriptor_FieldTerminalPath{selector: LabelDescriptor_FieldPathSelectorVersions}, nil
  2034  		}
  2035  	}
  2036  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object LabelDescriptor", fp)
  2037  }
  2038  
  2039  func ParseLabelDescriptor_FieldPath(rawField string) (LabelDescriptor_FieldPath, error) {
  2040  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  2041  	if err != nil {
  2042  		return nil, err
  2043  	}
  2044  	return BuildLabelDescriptor_FieldPath(fp)
  2045  }
  2046  
  2047  func MustParseLabelDescriptor_FieldPath(rawField string) LabelDescriptor_FieldPath {
  2048  	fp, err := ParseLabelDescriptor_FieldPath(rawField)
  2049  	if err != nil {
  2050  		panic(err)
  2051  	}
  2052  	return fp
  2053  }
  2054  
  2055  type LabelDescriptor_FieldTerminalPath struct {
  2056  	selector LabelDescriptor_FieldPathSelector
  2057  }
  2058  
  2059  var _ LabelDescriptor_FieldPath = (*LabelDescriptor_FieldTerminalPath)(nil)
  2060  
  2061  func (fp *LabelDescriptor_FieldTerminalPath) Selector() LabelDescriptor_FieldPathSelector {
  2062  	return fp.selector
  2063  }
  2064  
  2065  // String returns path representation in proto convention
  2066  func (fp *LabelDescriptor_FieldTerminalPath) String() string {
  2067  	return fp.selector.String()
  2068  }
  2069  
  2070  // JSONString returns path representation is JSON convention
  2071  func (fp *LabelDescriptor_FieldTerminalPath) JSONString() string {
  2072  	return strcase.ToLowerCamel(fp.String())
  2073  }
  2074  
  2075  // Get returns all values pointed by specific field from source LabelDescriptor
  2076  func (fp *LabelDescriptor_FieldTerminalPath) Get(source *LabelDescriptor) (values []interface{}) {
  2077  	if source != nil {
  2078  		switch fp.selector {
  2079  		case LabelDescriptor_FieldPathSelectorKey:
  2080  			values = append(values, source.Key)
  2081  		case LabelDescriptor_FieldPathSelectorVersions:
  2082  			for _, value := range source.GetVersions() {
  2083  				values = append(values, value)
  2084  			}
  2085  		default:
  2086  			panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fp.selector))
  2087  		}
  2088  	}
  2089  	return
  2090  }
  2091  
  2092  func (fp *LabelDescriptor_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  2093  	return fp.Get(source.(*LabelDescriptor))
  2094  }
  2095  
  2096  // GetSingle returns value pointed by specific field of from source LabelDescriptor
  2097  func (fp *LabelDescriptor_FieldTerminalPath) GetSingle(source *LabelDescriptor) (interface{}, bool) {
  2098  	switch fp.selector {
  2099  	case LabelDescriptor_FieldPathSelectorKey:
  2100  		return source.GetKey(), source != nil
  2101  	case LabelDescriptor_FieldPathSelectorVersions:
  2102  		res := source.GetVersions()
  2103  		return res, res != nil
  2104  	default:
  2105  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fp.selector))
  2106  	}
  2107  }
  2108  
  2109  func (fp *LabelDescriptor_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  2110  	return fp.GetSingle(source.(*LabelDescriptor))
  2111  }
  2112  
  2113  // GetDefault returns a default value of the field type
  2114  func (fp *LabelDescriptor_FieldTerminalPath) GetDefault() interface{} {
  2115  	switch fp.selector {
  2116  	case LabelDescriptor_FieldPathSelectorKey:
  2117  		return ""
  2118  	case LabelDescriptor_FieldPathSelectorVersions:
  2119  		return ([]string)(nil)
  2120  	default:
  2121  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fp.selector))
  2122  	}
  2123  }
  2124  
  2125  func (fp *LabelDescriptor_FieldTerminalPath) ClearValue(item *LabelDescriptor) {
  2126  	if item != nil {
  2127  		switch fp.selector {
  2128  		case LabelDescriptor_FieldPathSelectorKey:
  2129  			item.Key = ""
  2130  		case LabelDescriptor_FieldPathSelectorVersions:
  2131  			item.Versions = nil
  2132  		default:
  2133  			panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fp.selector))
  2134  		}
  2135  	}
  2136  }
  2137  
  2138  func (fp *LabelDescriptor_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  2139  	fp.ClearValue(item.(*LabelDescriptor))
  2140  }
  2141  
  2142  // IsLeaf - whether field path is holds simple value
  2143  func (fp *LabelDescriptor_FieldTerminalPath) IsLeaf() bool {
  2144  	return fp.selector == LabelDescriptor_FieldPathSelectorKey ||
  2145  		fp.selector == LabelDescriptor_FieldPathSelectorVersions
  2146  }
  2147  
  2148  func (fp *LabelDescriptor_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  2149  	return []gotenobject.FieldPath{fp}
  2150  }
  2151  
  2152  func (fp *LabelDescriptor_FieldTerminalPath) WithIValue(value interface{}) LabelDescriptor_FieldPathValue {
  2153  	switch fp.selector {
  2154  	case LabelDescriptor_FieldPathSelectorKey:
  2155  		return &LabelDescriptor_FieldTerminalPathValue{LabelDescriptor_FieldTerminalPath: *fp, value: value.(string)}
  2156  	case LabelDescriptor_FieldPathSelectorVersions:
  2157  		return &LabelDescriptor_FieldTerminalPathValue{LabelDescriptor_FieldTerminalPath: *fp, value: value.([]string)}
  2158  	default:
  2159  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fp.selector))
  2160  	}
  2161  }
  2162  
  2163  func (fp *LabelDescriptor_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  2164  	return fp.WithIValue(value)
  2165  }
  2166  
  2167  func (fp *LabelDescriptor_FieldTerminalPath) WithIArrayOfValues(values interface{}) LabelDescriptor_FieldPathArrayOfValues {
  2168  	fpaov := &LabelDescriptor_FieldTerminalPathArrayOfValues{LabelDescriptor_FieldTerminalPath: *fp}
  2169  	switch fp.selector {
  2170  	case LabelDescriptor_FieldPathSelectorKey:
  2171  		return &LabelDescriptor_FieldTerminalPathArrayOfValues{LabelDescriptor_FieldTerminalPath: *fp, values: values.([]string)}
  2172  	case LabelDescriptor_FieldPathSelectorVersions:
  2173  		return &LabelDescriptor_FieldTerminalPathArrayOfValues{LabelDescriptor_FieldTerminalPath: *fp, values: values.([][]string)}
  2174  	default:
  2175  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fp.selector))
  2176  	}
  2177  	return fpaov
  2178  }
  2179  
  2180  func (fp *LabelDescriptor_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  2181  	return fp.WithIArrayOfValues(values)
  2182  }
  2183  
  2184  func (fp *LabelDescriptor_FieldTerminalPath) WithIArrayItemValue(value interface{}) LabelDescriptor_FieldPathArrayItemValue {
  2185  	switch fp.selector {
  2186  	case LabelDescriptor_FieldPathSelectorVersions:
  2187  		return &LabelDescriptor_FieldTerminalPathArrayItemValue{LabelDescriptor_FieldTerminalPath: *fp, value: value.(string)}
  2188  	default:
  2189  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fp.selector))
  2190  	}
  2191  }
  2192  
  2193  func (fp *LabelDescriptor_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  2194  	return fp.WithIArrayItemValue(value)
  2195  }
  2196  
  2197  // LabelDescriptor_FieldPathValue allows storing values for LabelDescriptor fields according to their type
  2198  type LabelDescriptor_FieldPathValue interface {
  2199  	LabelDescriptor_FieldPath
  2200  	gotenobject.FieldPathValue
  2201  	SetTo(target **LabelDescriptor)
  2202  	CompareWith(*LabelDescriptor) (cmp int, comparable bool)
  2203  }
  2204  
  2205  func ParseLabelDescriptor_FieldPathValue(pathStr, valueStr string) (LabelDescriptor_FieldPathValue, error) {
  2206  	fp, err := ParseLabelDescriptor_FieldPath(pathStr)
  2207  	if err != nil {
  2208  		return nil, err
  2209  	}
  2210  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  2211  	if err != nil {
  2212  		return nil, status.Errorf(codes.InvalidArgument, "error parsing LabelDescriptor field path value from %s: %v", valueStr, err)
  2213  	}
  2214  	return fpv.(LabelDescriptor_FieldPathValue), nil
  2215  }
  2216  
  2217  func MustParseLabelDescriptor_FieldPathValue(pathStr, valueStr string) LabelDescriptor_FieldPathValue {
  2218  	fpv, err := ParseLabelDescriptor_FieldPathValue(pathStr, valueStr)
  2219  	if err != nil {
  2220  		panic(err)
  2221  	}
  2222  	return fpv
  2223  }
  2224  
  2225  type LabelDescriptor_FieldTerminalPathValue struct {
  2226  	LabelDescriptor_FieldTerminalPath
  2227  	value interface{}
  2228  }
  2229  
  2230  var _ LabelDescriptor_FieldPathValue = (*LabelDescriptor_FieldTerminalPathValue)(nil)
  2231  
  2232  // GetRawValue returns raw value stored under selected path for 'LabelDescriptor' as interface{}
  2233  func (fpv *LabelDescriptor_FieldTerminalPathValue) GetRawValue() interface{} {
  2234  	return fpv.value
  2235  }
  2236  func (fpv *LabelDescriptor_FieldTerminalPathValue) AsKeyValue() (string, bool) {
  2237  	res, ok := fpv.value.(string)
  2238  	return res, ok
  2239  }
  2240  func (fpv *LabelDescriptor_FieldTerminalPathValue) AsVersionsValue() ([]string, bool) {
  2241  	res, ok := fpv.value.([]string)
  2242  	return res, ok
  2243  }
  2244  
  2245  // SetTo stores value for selected field for object LabelDescriptor
  2246  func (fpv *LabelDescriptor_FieldTerminalPathValue) SetTo(target **LabelDescriptor) {
  2247  	if *target == nil {
  2248  		*target = new(LabelDescriptor)
  2249  	}
  2250  	switch fpv.selector {
  2251  	case LabelDescriptor_FieldPathSelectorKey:
  2252  		(*target).Key = fpv.value.(string)
  2253  	case LabelDescriptor_FieldPathSelectorVersions:
  2254  		(*target).Versions = fpv.value.([]string)
  2255  	default:
  2256  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fpv.selector))
  2257  	}
  2258  }
  2259  
  2260  func (fpv *LabelDescriptor_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  2261  	typedObject := target.(*LabelDescriptor)
  2262  	fpv.SetTo(&typedObject)
  2263  }
  2264  
  2265  // CompareWith compares value in the 'LabelDescriptor_FieldTerminalPathValue' with the value under path in 'LabelDescriptor'.
  2266  func (fpv *LabelDescriptor_FieldTerminalPathValue) CompareWith(source *LabelDescriptor) (int, bool) {
  2267  	switch fpv.selector {
  2268  	case LabelDescriptor_FieldPathSelectorKey:
  2269  		leftValue := fpv.value.(string)
  2270  		rightValue := source.GetKey()
  2271  		if (leftValue) == (rightValue) {
  2272  			return 0, true
  2273  		} else if (leftValue) < (rightValue) {
  2274  			return -1, true
  2275  		} else {
  2276  			return 1, true
  2277  		}
  2278  	case LabelDescriptor_FieldPathSelectorVersions:
  2279  		return 0, false
  2280  	default:
  2281  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fpv.selector))
  2282  	}
  2283  }
  2284  
  2285  func (fpv *LabelDescriptor_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  2286  	return fpv.CompareWith(source.(*LabelDescriptor))
  2287  }
  2288  
  2289  // LabelDescriptor_FieldPathArrayItemValue allows storing single item in Path-specific values for LabelDescriptor according to their type
  2290  // Present only for array (repeated) types.
  2291  type LabelDescriptor_FieldPathArrayItemValue interface {
  2292  	gotenobject.FieldPathArrayItemValue
  2293  	LabelDescriptor_FieldPath
  2294  	ContainsValue(*LabelDescriptor) bool
  2295  }
  2296  
  2297  // ParseLabelDescriptor_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  2298  func ParseLabelDescriptor_FieldPathArrayItemValue(pathStr, valueStr string) (LabelDescriptor_FieldPathArrayItemValue, error) {
  2299  	fp, err := ParseLabelDescriptor_FieldPath(pathStr)
  2300  	if err != nil {
  2301  		return nil, err
  2302  	}
  2303  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  2304  	if err != nil {
  2305  		return nil, status.Errorf(codes.InvalidArgument, "error parsing LabelDescriptor field path array item value from %s: %v", valueStr, err)
  2306  	}
  2307  	return fpaiv.(LabelDescriptor_FieldPathArrayItemValue), nil
  2308  }
  2309  
  2310  func MustParseLabelDescriptor_FieldPathArrayItemValue(pathStr, valueStr string) LabelDescriptor_FieldPathArrayItemValue {
  2311  	fpaiv, err := ParseLabelDescriptor_FieldPathArrayItemValue(pathStr, valueStr)
  2312  	if err != nil {
  2313  		panic(err)
  2314  	}
  2315  	return fpaiv
  2316  }
  2317  
  2318  type LabelDescriptor_FieldTerminalPathArrayItemValue struct {
  2319  	LabelDescriptor_FieldTerminalPath
  2320  	value interface{}
  2321  }
  2322  
  2323  var _ LabelDescriptor_FieldPathArrayItemValue = (*LabelDescriptor_FieldTerminalPathArrayItemValue)(nil)
  2324  
  2325  // GetRawValue returns stored element value for array in object LabelDescriptor as interface{}
  2326  func (fpaiv *LabelDescriptor_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  2327  	return fpaiv.value
  2328  }
  2329  func (fpaiv *LabelDescriptor_FieldTerminalPathArrayItemValue) AsVersionsItemValue() (string, bool) {
  2330  	res, ok := fpaiv.value.(string)
  2331  	return res, ok
  2332  }
  2333  
  2334  func (fpaiv *LabelDescriptor_FieldTerminalPathArrayItemValue) GetSingle(source *LabelDescriptor) (interface{}, bool) {
  2335  	return nil, false
  2336  }
  2337  
  2338  func (fpaiv *LabelDescriptor_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  2339  	return fpaiv.GetSingle(source.(*LabelDescriptor))
  2340  }
  2341  
  2342  // Contains returns a boolean indicating if value that is being held is present in given 'LabelDescriptor'
  2343  func (fpaiv *LabelDescriptor_FieldTerminalPathArrayItemValue) ContainsValue(source *LabelDescriptor) bool {
  2344  	slice := fpaiv.LabelDescriptor_FieldTerminalPath.Get(source)
  2345  	for _, v := range slice {
  2346  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  2347  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  2348  				return true
  2349  			}
  2350  		} else if reflect.DeepEqual(v, fpaiv.value) {
  2351  			return true
  2352  		}
  2353  	}
  2354  	return false
  2355  }
  2356  
  2357  // LabelDescriptor_FieldPathArrayOfValues allows storing slice of values for LabelDescriptor fields according to their type
  2358  type LabelDescriptor_FieldPathArrayOfValues interface {
  2359  	gotenobject.FieldPathArrayOfValues
  2360  	LabelDescriptor_FieldPath
  2361  }
  2362  
  2363  func ParseLabelDescriptor_FieldPathArrayOfValues(pathStr, valuesStr string) (LabelDescriptor_FieldPathArrayOfValues, error) {
  2364  	fp, err := ParseLabelDescriptor_FieldPath(pathStr)
  2365  	if err != nil {
  2366  		return nil, err
  2367  	}
  2368  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  2369  	if err != nil {
  2370  		return nil, status.Errorf(codes.InvalidArgument, "error parsing LabelDescriptor field path array of values from %s: %v", valuesStr, err)
  2371  	}
  2372  	return fpaov.(LabelDescriptor_FieldPathArrayOfValues), nil
  2373  }
  2374  
  2375  func MustParseLabelDescriptor_FieldPathArrayOfValues(pathStr, valuesStr string) LabelDescriptor_FieldPathArrayOfValues {
  2376  	fpaov, err := ParseLabelDescriptor_FieldPathArrayOfValues(pathStr, valuesStr)
  2377  	if err != nil {
  2378  		panic(err)
  2379  	}
  2380  	return fpaov
  2381  }
  2382  
  2383  type LabelDescriptor_FieldTerminalPathArrayOfValues struct {
  2384  	LabelDescriptor_FieldTerminalPath
  2385  	values interface{}
  2386  }
  2387  
  2388  var _ LabelDescriptor_FieldPathArrayOfValues = (*LabelDescriptor_FieldTerminalPathArrayOfValues)(nil)
  2389  
  2390  func (fpaov *LabelDescriptor_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  2391  	switch fpaov.selector {
  2392  	case LabelDescriptor_FieldPathSelectorKey:
  2393  		for _, v := range fpaov.values.([]string) {
  2394  			values = append(values, v)
  2395  		}
  2396  	case LabelDescriptor_FieldPathSelectorVersions:
  2397  		for _, v := range fpaov.values.([][]string) {
  2398  			values = append(values, v)
  2399  		}
  2400  	}
  2401  	return
  2402  }
  2403  func (fpaov *LabelDescriptor_FieldTerminalPathArrayOfValues) AsKeyArrayOfValues() ([]string, bool) {
  2404  	res, ok := fpaov.values.([]string)
  2405  	return res, ok
  2406  }
  2407  func (fpaov *LabelDescriptor_FieldTerminalPathArrayOfValues) AsVersionsArrayOfValues() ([][]string, bool) {
  2408  	res, ok := fpaov.values.([][]string)
  2409  	return res, ok
  2410  }
  2411  
  2412  // FieldPath provides implementation to handle
  2413  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  2414  type LabelKeySet_FieldPath interface {
  2415  	gotenobject.FieldPath
  2416  	Selector() LabelKeySet_FieldPathSelector
  2417  	Get(source *LabelKeySet) []interface{}
  2418  	GetSingle(source *LabelKeySet) (interface{}, bool)
  2419  	ClearValue(item *LabelKeySet)
  2420  
  2421  	// Those methods build corresponding LabelKeySet_FieldPathValue
  2422  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  2423  	WithIValue(value interface{}) LabelKeySet_FieldPathValue
  2424  	WithIArrayOfValues(values interface{}) LabelKeySet_FieldPathArrayOfValues
  2425  	WithIArrayItemValue(value interface{}) LabelKeySet_FieldPathArrayItemValue
  2426  }
  2427  
  2428  type LabelKeySet_FieldPathSelector int32
  2429  
  2430  const (
  2431  	LabelKeySet_FieldPathSelectorLabelKeys LabelKeySet_FieldPathSelector = 0
  2432  	LabelKeySet_FieldPathSelectorVersions  LabelKeySet_FieldPathSelector = 1
  2433  )
  2434  
  2435  func (s LabelKeySet_FieldPathSelector) String() string {
  2436  	switch s {
  2437  	case LabelKeySet_FieldPathSelectorLabelKeys:
  2438  		return "label_keys"
  2439  	case LabelKeySet_FieldPathSelectorVersions:
  2440  		return "versions"
  2441  	default:
  2442  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", s))
  2443  	}
  2444  }
  2445  
  2446  func BuildLabelKeySet_FieldPath(fp gotenobject.RawFieldPath) (LabelKeySet_FieldPath, error) {
  2447  	if len(fp) == 0 {
  2448  		return nil, status.Error(codes.InvalidArgument, "empty field path for object LabelKeySet")
  2449  	}
  2450  	if len(fp) == 1 {
  2451  		switch fp[0] {
  2452  		case "label_keys", "labelKeys", "label-keys":
  2453  			return &LabelKeySet_FieldTerminalPath{selector: LabelKeySet_FieldPathSelectorLabelKeys}, nil
  2454  		case "versions":
  2455  			return &LabelKeySet_FieldTerminalPath{selector: LabelKeySet_FieldPathSelectorVersions}, nil
  2456  		}
  2457  	}
  2458  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object LabelKeySet", fp)
  2459  }
  2460  
  2461  func ParseLabelKeySet_FieldPath(rawField string) (LabelKeySet_FieldPath, error) {
  2462  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  2463  	if err != nil {
  2464  		return nil, err
  2465  	}
  2466  	return BuildLabelKeySet_FieldPath(fp)
  2467  }
  2468  
  2469  func MustParseLabelKeySet_FieldPath(rawField string) LabelKeySet_FieldPath {
  2470  	fp, err := ParseLabelKeySet_FieldPath(rawField)
  2471  	if err != nil {
  2472  		panic(err)
  2473  	}
  2474  	return fp
  2475  }
  2476  
  2477  type LabelKeySet_FieldTerminalPath struct {
  2478  	selector LabelKeySet_FieldPathSelector
  2479  }
  2480  
  2481  var _ LabelKeySet_FieldPath = (*LabelKeySet_FieldTerminalPath)(nil)
  2482  
  2483  func (fp *LabelKeySet_FieldTerminalPath) Selector() LabelKeySet_FieldPathSelector {
  2484  	return fp.selector
  2485  }
  2486  
  2487  // String returns path representation in proto convention
  2488  func (fp *LabelKeySet_FieldTerminalPath) String() string {
  2489  	return fp.selector.String()
  2490  }
  2491  
  2492  // JSONString returns path representation is JSON convention
  2493  func (fp *LabelKeySet_FieldTerminalPath) JSONString() string {
  2494  	return strcase.ToLowerCamel(fp.String())
  2495  }
  2496  
  2497  // Get returns all values pointed by specific field from source LabelKeySet
  2498  func (fp *LabelKeySet_FieldTerminalPath) Get(source *LabelKeySet) (values []interface{}) {
  2499  	if source != nil {
  2500  		switch fp.selector {
  2501  		case LabelKeySet_FieldPathSelectorLabelKeys:
  2502  			for _, value := range source.GetLabelKeys() {
  2503  				values = append(values, value)
  2504  			}
  2505  		case LabelKeySet_FieldPathSelectorVersions:
  2506  			for _, value := range source.GetVersions() {
  2507  				values = append(values, value)
  2508  			}
  2509  		default:
  2510  			panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fp.selector))
  2511  		}
  2512  	}
  2513  	return
  2514  }
  2515  
  2516  func (fp *LabelKeySet_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  2517  	return fp.Get(source.(*LabelKeySet))
  2518  }
  2519  
  2520  // GetSingle returns value pointed by specific field of from source LabelKeySet
  2521  func (fp *LabelKeySet_FieldTerminalPath) GetSingle(source *LabelKeySet) (interface{}, bool) {
  2522  	switch fp.selector {
  2523  	case LabelKeySet_FieldPathSelectorLabelKeys:
  2524  		res := source.GetLabelKeys()
  2525  		return res, res != nil
  2526  	case LabelKeySet_FieldPathSelectorVersions:
  2527  		res := source.GetVersions()
  2528  		return res, res != nil
  2529  	default:
  2530  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fp.selector))
  2531  	}
  2532  }
  2533  
  2534  func (fp *LabelKeySet_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  2535  	return fp.GetSingle(source.(*LabelKeySet))
  2536  }
  2537  
  2538  // GetDefault returns a default value of the field type
  2539  func (fp *LabelKeySet_FieldTerminalPath) GetDefault() interface{} {
  2540  	switch fp.selector {
  2541  	case LabelKeySet_FieldPathSelectorLabelKeys:
  2542  		return ([]string)(nil)
  2543  	case LabelKeySet_FieldPathSelectorVersions:
  2544  		return ([]string)(nil)
  2545  	default:
  2546  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fp.selector))
  2547  	}
  2548  }
  2549  
  2550  func (fp *LabelKeySet_FieldTerminalPath) ClearValue(item *LabelKeySet) {
  2551  	if item != nil {
  2552  		switch fp.selector {
  2553  		case LabelKeySet_FieldPathSelectorLabelKeys:
  2554  			item.LabelKeys = nil
  2555  		case LabelKeySet_FieldPathSelectorVersions:
  2556  			item.Versions = nil
  2557  		default:
  2558  			panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fp.selector))
  2559  		}
  2560  	}
  2561  }
  2562  
  2563  func (fp *LabelKeySet_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  2564  	fp.ClearValue(item.(*LabelKeySet))
  2565  }
  2566  
  2567  // IsLeaf - whether field path is holds simple value
  2568  func (fp *LabelKeySet_FieldTerminalPath) IsLeaf() bool {
  2569  	return fp.selector == LabelKeySet_FieldPathSelectorLabelKeys ||
  2570  		fp.selector == LabelKeySet_FieldPathSelectorVersions
  2571  }
  2572  
  2573  func (fp *LabelKeySet_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  2574  	return []gotenobject.FieldPath{fp}
  2575  }
  2576  
  2577  func (fp *LabelKeySet_FieldTerminalPath) WithIValue(value interface{}) LabelKeySet_FieldPathValue {
  2578  	switch fp.selector {
  2579  	case LabelKeySet_FieldPathSelectorLabelKeys:
  2580  		return &LabelKeySet_FieldTerminalPathValue{LabelKeySet_FieldTerminalPath: *fp, value: value.([]string)}
  2581  	case LabelKeySet_FieldPathSelectorVersions:
  2582  		return &LabelKeySet_FieldTerminalPathValue{LabelKeySet_FieldTerminalPath: *fp, value: value.([]string)}
  2583  	default:
  2584  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fp.selector))
  2585  	}
  2586  }
  2587  
  2588  func (fp *LabelKeySet_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  2589  	return fp.WithIValue(value)
  2590  }
  2591  
  2592  func (fp *LabelKeySet_FieldTerminalPath) WithIArrayOfValues(values interface{}) LabelKeySet_FieldPathArrayOfValues {
  2593  	fpaov := &LabelKeySet_FieldTerminalPathArrayOfValues{LabelKeySet_FieldTerminalPath: *fp}
  2594  	switch fp.selector {
  2595  	case LabelKeySet_FieldPathSelectorLabelKeys:
  2596  		return &LabelKeySet_FieldTerminalPathArrayOfValues{LabelKeySet_FieldTerminalPath: *fp, values: values.([][]string)}
  2597  	case LabelKeySet_FieldPathSelectorVersions:
  2598  		return &LabelKeySet_FieldTerminalPathArrayOfValues{LabelKeySet_FieldTerminalPath: *fp, values: values.([][]string)}
  2599  	default:
  2600  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fp.selector))
  2601  	}
  2602  	return fpaov
  2603  }
  2604  
  2605  func (fp *LabelKeySet_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  2606  	return fp.WithIArrayOfValues(values)
  2607  }
  2608  
  2609  func (fp *LabelKeySet_FieldTerminalPath) WithIArrayItemValue(value interface{}) LabelKeySet_FieldPathArrayItemValue {
  2610  	switch fp.selector {
  2611  	case LabelKeySet_FieldPathSelectorLabelKeys:
  2612  		return &LabelKeySet_FieldTerminalPathArrayItemValue{LabelKeySet_FieldTerminalPath: *fp, value: value.(string)}
  2613  	case LabelKeySet_FieldPathSelectorVersions:
  2614  		return &LabelKeySet_FieldTerminalPathArrayItemValue{LabelKeySet_FieldTerminalPath: *fp, value: value.(string)}
  2615  	default:
  2616  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fp.selector))
  2617  	}
  2618  }
  2619  
  2620  func (fp *LabelKeySet_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  2621  	return fp.WithIArrayItemValue(value)
  2622  }
  2623  
  2624  // LabelKeySet_FieldPathValue allows storing values for LabelKeySet fields according to their type
  2625  type LabelKeySet_FieldPathValue interface {
  2626  	LabelKeySet_FieldPath
  2627  	gotenobject.FieldPathValue
  2628  	SetTo(target **LabelKeySet)
  2629  	CompareWith(*LabelKeySet) (cmp int, comparable bool)
  2630  }
  2631  
  2632  func ParseLabelKeySet_FieldPathValue(pathStr, valueStr string) (LabelKeySet_FieldPathValue, error) {
  2633  	fp, err := ParseLabelKeySet_FieldPath(pathStr)
  2634  	if err != nil {
  2635  		return nil, err
  2636  	}
  2637  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  2638  	if err != nil {
  2639  		return nil, status.Errorf(codes.InvalidArgument, "error parsing LabelKeySet field path value from %s: %v", valueStr, err)
  2640  	}
  2641  	return fpv.(LabelKeySet_FieldPathValue), nil
  2642  }
  2643  
  2644  func MustParseLabelKeySet_FieldPathValue(pathStr, valueStr string) LabelKeySet_FieldPathValue {
  2645  	fpv, err := ParseLabelKeySet_FieldPathValue(pathStr, valueStr)
  2646  	if err != nil {
  2647  		panic(err)
  2648  	}
  2649  	return fpv
  2650  }
  2651  
  2652  type LabelKeySet_FieldTerminalPathValue struct {
  2653  	LabelKeySet_FieldTerminalPath
  2654  	value interface{}
  2655  }
  2656  
  2657  var _ LabelKeySet_FieldPathValue = (*LabelKeySet_FieldTerminalPathValue)(nil)
  2658  
  2659  // GetRawValue returns raw value stored under selected path for 'LabelKeySet' as interface{}
  2660  func (fpv *LabelKeySet_FieldTerminalPathValue) GetRawValue() interface{} {
  2661  	return fpv.value
  2662  }
  2663  func (fpv *LabelKeySet_FieldTerminalPathValue) AsLabelKeysValue() ([]string, bool) {
  2664  	res, ok := fpv.value.([]string)
  2665  	return res, ok
  2666  }
  2667  func (fpv *LabelKeySet_FieldTerminalPathValue) AsVersionsValue() ([]string, bool) {
  2668  	res, ok := fpv.value.([]string)
  2669  	return res, ok
  2670  }
  2671  
  2672  // SetTo stores value for selected field for object LabelKeySet
  2673  func (fpv *LabelKeySet_FieldTerminalPathValue) SetTo(target **LabelKeySet) {
  2674  	if *target == nil {
  2675  		*target = new(LabelKeySet)
  2676  	}
  2677  	switch fpv.selector {
  2678  	case LabelKeySet_FieldPathSelectorLabelKeys:
  2679  		(*target).LabelKeys = fpv.value.([]string)
  2680  	case LabelKeySet_FieldPathSelectorVersions:
  2681  		(*target).Versions = fpv.value.([]string)
  2682  	default:
  2683  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fpv.selector))
  2684  	}
  2685  }
  2686  
  2687  func (fpv *LabelKeySet_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  2688  	typedObject := target.(*LabelKeySet)
  2689  	fpv.SetTo(&typedObject)
  2690  }
  2691  
  2692  // CompareWith compares value in the 'LabelKeySet_FieldTerminalPathValue' with the value under path in 'LabelKeySet'.
  2693  func (fpv *LabelKeySet_FieldTerminalPathValue) CompareWith(source *LabelKeySet) (int, bool) {
  2694  	switch fpv.selector {
  2695  	case LabelKeySet_FieldPathSelectorLabelKeys:
  2696  		return 0, false
  2697  	case LabelKeySet_FieldPathSelectorVersions:
  2698  		return 0, false
  2699  	default:
  2700  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fpv.selector))
  2701  	}
  2702  }
  2703  
  2704  func (fpv *LabelKeySet_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  2705  	return fpv.CompareWith(source.(*LabelKeySet))
  2706  }
  2707  
  2708  // LabelKeySet_FieldPathArrayItemValue allows storing single item in Path-specific values for LabelKeySet according to their type
  2709  // Present only for array (repeated) types.
  2710  type LabelKeySet_FieldPathArrayItemValue interface {
  2711  	gotenobject.FieldPathArrayItemValue
  2712  	LabelKeySet_FieldPath
  2713  	ContainsValue(*LabelKeySet) bool
  2714  }
  2715  
  2716  // ParseLabelKeySet_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  2717  func ParseLabelKeySet_FieldPathArrayItemValue(pathStr, valueStr string) (LabelKeySet_FieldPathArrayItemValue, error) {
  2718  	fp, err := ParseLabelKeySet_FieldPath(pathStr)
  2719  	if err != nil {
  2720  		return nil, err
  2721  	}
  2722  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  2723  	if err != nil {
  2724  		return nil, status.Errorf(codes.InvalidArgument, "error parsing LabelKeySet field path array item value from %s: %v", valueStr, err)
  2725  	}
  2726  	return fpaiv.(LabelKeySet_FieldPathArrayItemValue), nil
  2727  }
  2728  
  2729  func MustParseLabelKeySet_FieldPathArrayItemValue(pathStr, valueStr string) LabelKeySet_FieldPathArrayItemValue {
  2730  	fpaiv, err := ParseLabelKeySet_FieldPathArrayItemValue(pathStr, valueStr)
  2731  	if err != nil {
  2732  		panic(err)
  2733  	}
  2734  	return fpaiv
  2735  }
  2736  
  2737  type LabelKeySet_FieldTerminalPathArrayItemValue struct {
  2738  	LabelKeySet_FieldTerminalPath
  2739  	value interface{}
  2740  }
  2741  
  2742  var _ LabelKeySet_FieldPathArrayItemValue = (*LabelKeySet_FieldTerminalPathArrayItemValue)(nil)
  2743  
  2744  // GetRawValue returns stored element value for array in object LabelKeySet as interface{}
  2745  func (fpaiv *LabelKeySet_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  2746  	return fpaiv.value
  2747  }
  2748  func (fpaiv *LabelKeySet_FieldTerminalPathArrayItemValue) AsLabelKeysItemValue() (string, bool) {
  2749  	res, ok := fpaiv.value.(string)
  2750  	return res, ok
  2751  }
  2752  func (fpaiv *LabelKeySet_FieldTerminalPathArrayItemValue) AsVersionsItemValue() (string, bool) {
  2753  	res, ok := fpaiv.value.(string)
  2754  	return res, ok
  2755  }
  2756  
  2757  func (fpaiv *LabelKeySet_FieldTerminalPathArrayItemValue) GetSingle(source *LabelKeySet) (interface{}, bool) {
  2758  	return nil, false
  2759  }
  2760  
  2761  func (fpaiv *LabelKeySet_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  2762  	return fpaiv.GetSingle(source.(*LabelKeySet))
  2763  }
  2764  
  2765  // Contains returns a boolean indicating if value that is being held is present in given 'LabelKeySet'
  2766  func (fpaiv *LabelKeySet_FieldTerminalPathArrayItemValue) ContainsValue(source *LabelKeySet) bool {
  2767  	slice := fpaiv.LabelKeySet_FieldTerminalPath.Get(source)
  2768  	for _, v := range slice {
  2769  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  2770  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  2771  				return true
  2772  			}
  2773  		} else if reflect.DeepEqual(v, fpaiv.value) {
  2774  			return true
  2775  		}
  2776  	}
  2777  	return false
  2778  }
  2779  
  2780  // LabelKeySet_FieldPathArrayOfValues allows storing slice of values for LabelKeySet fields according to their type
  2781  type LabelKeySet_FieldPathArrayOfValues interface {
  2782  	gotenobject.FieldPathArrayOfValues
  2783  	LabelKeySet_FieldPath
  2784  }
  2785  
  2786  func ParseLabelKeySet_FieldPathArrayOfValues(pathStr, valuesStr string) (LabelKeySet_FieldPathArrayOfValues, error) {
  2787  	fp, err := ParseLabelKeySet_FieldPath(pathStr)
  2788  	if err != nil {
  2789  		return nil, err
  2790  	}
  2791  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  2792  	if err != nil {
  2793  		return nil, status.Errorf(codes.InvalidArgument, "error parsing LabelKeySet field path array of values from %s: %v", valuesStr, err)
  2794  	}
  2795  	return fpaov.(LabelKeySet_FieldPathArrayOfValues), nil
  2796  }
  2797  
  2798  func MustParseLabelKeySet_FieldPathArrayOfValues(pathStr, valuesStr string) LabelKeySet_FieldPathArrayOfValues {
  2799  	fpaov, err := ParseLabelKeySet_FieldPathArrayOfValues(pathStr, valuesStr)
  2800  	if err != nil {
  2801  		panic(err)
  2802  	}
  2803  	return fpaov
  2804  }
  2805  
  2806  type LabelKeySet_FieldTerminalPathArrayOfValues struct {
  2807  	LabelKeySet_FieldTerminalPath
  2808  	values interface{}
  2809  }
  2810  
  2811  var _ LabelKeySet_FieldPathArrayOfValues = (*LabelKeySet_FieldTerminalPathArrayOfValues)(nil)
  2812  
  2813  func (fpaov *LabelKeySet_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  2814  	switch fpaov.selector {
  2815  	case LabelKeySet_FieldPathSelectorLabelKeys:
  2816  		for _, v := range fpaov.values.([][]string) {
  2817  			values = append(values, v)
  2818  		}
  2819  	case LabelKeySet_FieldPathSelectorVersions:
  2820  		for _, v := range fpaov.values.([][]string) {
  2821  			values = append(values, v)
  2822  		}
  2823  	}
  2824  	return
  2825  }
  2826  func (fpaov *LabelKeySet_FieldTerminalPathArrayOfValues) AsLabelKeysArrayOfValues() ([][]string, bool) {
  2827  	res, ok := fpaov.values.([][]string)
  2828  	return res, ok
  2829  }
  2830  func (fpaov *LabelKeySet_FieldTerminalPathArrayOfValues) AsVersionsArrayOfValues() ([][]string, bool) {
  2831  	res, ok := fpaov.values.([][]string)
  2832  	return res, ok
  2833  }
  2834  
  2835  // FieldPath provides implementation to handle
  2836  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  2837  type TimeInterval_FieldPath interface {
  2838  	gotenobject.FieldPath
  2839  	Selector() TimeInterval_FieldPathSelector
  2840  	Get(source *TimeInterval) []interface{}
  2841  	GetSingle(source *TimeInterval) (interface{}, bool)
  2842  	ClearValue(item *TimeInterval)
  2843  
  2844  	// Those methods build corresponding TimeInterval_FieldPathValue
  2845  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  2846  	WithIValue(value interface{}) TimeInterval_FieldPathValue
  2847  	WithIArrayOfValues(values interface{}) TimeInterval_FieldPathArrayOfValues
  2848  	WithIArrayItemValue(value interface{}) TimeInterval_FieldPathArrayItemValue
  2849  }
  2850  
  2851  type TimeInterval_FieldPathSelector int32
  2852  
  2853  const (
  2854  	TimeInterval_FieldPathSelectorEndTime   TimeInterval_FieldPathSelector = 0
  2855  	TimeInterval_FieldPathSelectorStartTime TimeInterval_FieldPathSelector = 1
  2856  )
  2857  
  2858  func (s TimeInterval_FieldPathSelector) String() string {
  2859  	switch s {
  2860  	case TimeInterval_FieldPathSelectorEndTime:
  2861  		return "end_time"
  2862  	case TimeInterval_FieldPathSelectorStartTime:
  2863  		return "start_time"
  2864  	default:
  2865  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", s))
  2866  	}
  2867  }
  2868  
  2869  func BuildTimeInterval_FieldPath(fp gotenobject.RawFieldPath) (TimeInterval_FieldPath, error) {
  2870  	if len(fp) == 0 {
  2871  		return nil, status.Error(codes.InvalidArgument, "empty field path for object TimeInterval")
  2872  	}
  2873  	if len(fp) == 1 {
  2874  		switch fp[0] {
  2875  		case "end_time", "endTime", "end-time":
  2876  			return &TimeInterval_FieldTerminalPath{selector: TimeInterval_FieldPathSelectorEndTime}, nil
  2877  		case "start_time", "startTime", "start-time":
  2878  			return &TimeInterval_FieldTerminalPath{selector: TimeInterval_FieldPathSelectorStartTime}, nil
  2879  		}
  2880  	}
  2881  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object TimeInterval", fp)
  2882  }
  2883  
  2884  func ParseTimeInterval_FieldPath(rawField string) (TimeInterval_FieldPath, error) {
  2885  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  2886  	if err != nil {
  2887  		return nil, err
  2888  	}
  2889  	return BuildTimeInterval_FieldPath(fp)
  2890  }
  2891  
  2892  func MustParseTimeInterval_FieldPath(rawField string) TimeInterval_FieldPath {
  2893  	fp, err := ParseTimeInterval_FieldPath(rawField)
  2894  	if err != nil {
  2895  		panic(err)
  2896  	}
  2897  	return fp
  2898  }
  2899  
  2900  type TimeInterval_FieldTerminalPath struct {
  2901  	selector TimeInterval_FieldPathSelector
  2902  }
  2903  
  2904  var _ TimeInterval_FieldPath = (*TimeInterval_FieldTerminalPath)(nil)
  2905  
  2906  func (fp *TimeInterval_FieldTerminalPath) Selector() TimeInterval_FieldPathSelector {
  2907  	return fp.selector
  2908  }
  2909  
  2910  // String returns path representation in proto convention
  2911  func (fp *TimeInterval_FieldTerminalPath) String() string {
  2912  	return fp.selector.String()
  2913  }
  2914  
  2915  // JSONString returns path representation is JSON convention
  2916  func (fp *TimeInterval_FieldTerminalPath) JSONString() string {
  2917  	return strcase.ToLowerCamel(fp.String())
  2918  }
  2919  
  2920  // Get returns all values pointed by specific field from source TimeInterval
  2921  func (fp *TimeInterval_FieldTerminalPath) Get(source *TimeInterval) (values []interface{}) {
  2922  	if source != nil {
  2923  		switch fp.selector {
  2924  		case TimeInterval_FieldPathSelectorEndTime:
  2925  			if source.EndTime != nil {
  2926  				values = append(values, source.EndTime)
  2927  			}
  2928  		case TimeInterval_FieldPathSelectorStartTime:
  2929  			if source.StartTime != nil {
  2930  				values = append(values, source.StartTime)
  2931  			}
  2932  		default:
  2933  			panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fp.selector))
  2934  		}
  2935  	}
  2936  	return
  2937  }
  2938  
  2939  func (fp *TimeInterval_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  2940  	return fp.Get(source.(*TimeInterval))
  2941  }
  2942  
  2943  // GetSingle returns value pointed by specific field of from source TimeInterval
  2944  func (fp *TimeInterval_FieldTerminalPath) GetSingle(source *TimeInterval) (interface{}, bool) {
  2945  	switch fp.selector {
  2946  	case TimeInterval_FieldPathSelectorEndTime:
  2947  		res := source.GetEndTime()
  2948  		return res, res != nil
  2949  	case TimeInterval_FieldPathSelectorStartTime:
  2950  		res := source.GetStartTime()
  2951  		return res, res != nil
  2952  	default:
  2953  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fp.selector))
  2954  	}
  2955  }
  2956  
  2957  func (fp *TimeInterval_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  2958  	return fp.GetSingle(source.(*TimeInterval))
  2959  }
  2960  
  2961  // GetDefault returns a default value of the field type
  2962  func (fp *TimeInterval_FieldTerminalPath) GetDefault() interface{} {
  2963  	switch fp.selector {
  2964  	case TimeInterval_FieldPathSelectorEndTime:
  2965  		return (*timestamppb.Timestamp)(nil)
  2966  	case TimeInterval_FieldPathSelectorStartTime:
  2967  		return (*timestamppb.Timestamp)(nil)
  2968  	default:
  2969  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fp.selector))
  2970  	}
  2971  }
  2972  
  2973  func (fp *TimeInterval_FieldTerminalPath) ClearValue(item *TimeInterval) {
  2974  	if item != nil {
  2975  		switch fp.selector {
  2976  		case TimeInterval_FieldPathSelectorEndTime:
  2977  			item.EndTime = nil
  2978  		case TimeInterval_FieldPathSelectorStartTime:
  2979  			item.StartTime = nil
  2980  		default:
  2981  			panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fp.selector))
  2982  		}
  2983  	}
  2984  }
  2985  
  2986  func (fp *TimeInterval_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  2987  	fp.ClearValue(item.(*TimeInterval))
  2988  }
  2989  
  2990  // IsLeaf - whether field path is holds simple value
  2991  func (fp *TimeInterval_FieldTerminalPath) IsLeaf() bool {
  2992  	return fp.selector == TimeInterval_FieldPathSelectorEndTime ||
  2993  		fp.selector == TimeInterval_FieldPathSelectorStartTime
  2994  }
  2995  
  2996  func (fp *TimeInterval_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  2997  	return []gotenobject.FieldPath{fp}
  2998  }
  2999  
  3000  func (fp *TimeInterval_FieldTerminalPath) WithIValue(value interface{}) TimeInterval_FieldPathValue {
  3001  	switch fp.selector {
  3002  	case TimeInterval_FieldPathSelectorEndTime:
  3003  		return &TimeInterval_FieldTerminalPathValue{TimeInterval_FieldTerminalPath: *fp, value: value.(*timestamppb.Timestamp)}
  3004  	case TimeInterval_FieldPathSelectorStartTime:
  3005  		return &TimeInterval_FieldTerminalPathValue{TimeInterval_FieldTerminalPath: *fp, value: value.(*timestamppb.Timestamp)}
  3006  	default:
  3007  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fp.selector))
  3008  	}
  3009  }
  3010  
  3011  func (fp *TimeInterval_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  3012  	return fp.WithIValue(value)
  3013  }
  3014  
  3015  func (fp *TimeInterval_FieldTerminalPath) WithIArrayOfValues(values interface{}) TimeInterval_FieldPathArrayOfValues {
  3016  	fpaov := &TimeInterval_FieldTerminalPathArrayOfValues{TimeInterval_FieldTerminalPath: *fp}
  3017  	switch fp.selector {
  3018  	case TimeInterval_FieldPathSelectorEndTime:
  3019  		return &TimeInterval_FieldTerminalPathArrayOfValues{TimeInterval_FieldTerminalPath: *fp, values: values.([]*timestamppb.Timestamp)}
  3020  	case TimeInterval_FieldPathSelectorStartTime:
  3021  		return &TimeInterval_FieldTerminalPathArrayOfValues{TimeInterval_FieldTerminalPath: *fp, values: values.([]*timestamppb.Timestamp)}
  3022  	default:
  3023  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fp.selector))
  3024  	}
  3025  	return fpaov
  3026  }
  3027  
  3028  func (fp *TimeInterval_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  3029  	return fp.WithIArrayOfValues(values)
  3030  }
  3031  
  3032  func (fp *TimeInterval_FieldTerminalPath) WithIArrayItemValue(value interface{}) TimeInterval_FieldPathArrayItemValue {
  3033  	switch fp.selector {
  3034  	default:
  3035  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fp.selector))
  3036  	}
  3037  }
  3038  
  3039  func (fp *TimeInterval_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  3040  	return fp.WithIArrayItemValue(value)
  3041  }
  3042  
  3043  // TimeInterval_FieldPathValue allows storing values for TimeInterval fields according to their type
  3044  type TimeInterval_FieldPathValue interface {
  3045  	TimeInterval_FieldPath
  3046  	gotenobject.FieldPathValue
  3047  	SetTo(target **TimeInterval)
  3048  	CompareWith(*TimeInterval) (cmp int, comparable bool)
  3049  }
  3050  
  3051  func ParseTimeInterval_FieldPathValue(pathStr, valueStr string) (TimeInterval_FieldPathValue, error) {
  3052  	fp, err := ParseTimeInterval_FieldPath(pathStr)
  3053  	if err != nil {
  3054  		return nil, err
  3055  	}
  3056  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  3057  	if err != nil {
  3058  		return nil, status.Errorf(codes.InvalidArgument, "error parsing TimeInterval field path value from %s: %v", valueStr, err)
  3059  	}
  3060  	return fpv.(TimeInterval_FieldPathValue), nil
  3061  }
  3062  
  3063  func MustParseTimeInterval_FieldPathValue(pathStr, valueStr string) TimeInterval_FieldPathValue {
  3064  	fpv, err := ParseTimeInterval_FieldPathValue(pathStr, valueStr)
  3065  	if err != nil {
  3066  		panic(err)
  3067  	}
  3068  	return fpv
  3069  }
  3070  
  3071  type TimeInterval_FieldTerminalPathValue struct {
  3072  	TimeInterval_FieldTerminalPath
  3073  	value interface{}
  3074  }
  3075  
  3076  var _ TimeInterval_FieldPathValue = (*TimeInterval_FieldTerminalPathValue)(nil)
  3077  
  3078  // GetRawValue returns raw value stored under selected path for 'TimeInterval' as interface{}
  3079  func (fpv *TimeInterval_FieldTerminalPathValue) GetRawValue() interface{} {
  3080  	return fpv.value
  3081  }
  3082  func (fpv *TimeInterval_FieldTerminalPathValue) AsEndTimeValue() (*timestamppb.Timestamp, bool) {
  3083  	res, ok := fpv.value.(*timestamppb.Timestamp)
  3084  	return res, ok
  3085  }
  3086  func (fpv *TimeInterval_FieldTerminalPathValue) AsStartTimeValue() (*timestamppb.Timestamp, bool) {
  3087  	res, ok := fpv.value.(*timestamppb.Timestamp)
  3088  	return res, ok
  3089  }
  3090  
  3091  // SetTo stores value for selected field for object TimeInterval
  3092  func (fpv *TimeInterval_FieldTerminalPathValue) SetTo(target **TimeInterval) {
  3093  	if *target == nil {
  3094  		*target = new(TimeInterval)
  3095  	}
  3096  	switch fpv.selector {
  3097  	case TimeInterval_FieldPathSelectorEndTime:
  3098  		(*target).EndTime = fpv.value.(*timestamppb.Timestamp)
  3099  	case TimeInterval_FieldPathSelectorStartTime:
  3100  		(*target).StartTime = fpv.value.(*timestamppb.Timestamp)
  3101  	default:
  3102  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fpv.selector))
  3103  	}
  3104  }
  3105  
  3106  func (fpv *TimeInterval_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  3107  	typedObject := target.(*TimeInterval)
  3108  	fpv.SetTo(&typedObject)
  3109  }
  3110  
  3111  // CompareWith compares value in the 'TimeInterval_FieldTerminalPathValue' with the value under path in 'TimeInterval'.
  3112  func (fpv *TimeInterval_FieldTerminalPathValue) CompareWith(source *TimeInterval) (int, bool) {
  3113  	switch fpv.selector {
  3114  	case TimeInterval_FieldPathSelectorEndTime:
  3115  		leftValue := fpv.value.(*timestamppb.Timestamp)
  3116  		rightValue := source.GetEndTime()
  3117  		if leftValue == nil {
  3118  			if rightValue != nil {
  3119  				return -1, true
  3120  			}
  3121  			return 0, true
  3122  		}
  3123  		if rightValue == nil {
  3124  			return 1, true
  3125  		}
  3126  		if leftValue.AsTime().Equal(rightValue.AsTime()) {
  3127  			return 0, true
  3128  		} else if leftValue.AsTime().Before(rightValue.AsTime()) {
  3129  			return -1, true
  3130  		} else {
  3131  			return 1, true
  3132  		}
  3133  	case TimeInterval_FieldPathSelectorStartTime:
  3134  		leftValue := fpv.value.(*timestamppb.Timestamp)
  3135  		rightValue := source.GetStartTime()
  3136  		if leftValue == nil {
  3137  			if rightValue != nil {
  3138  				return -1, true
  3139  			}
  3140  			return 0, true
  3141  		}
  3142  		if rightValue == nil {
  3143  			return 1, true
  3144  		}
  3145  		if leftValue.AsTime().Equal(rightValue.AsTime()) {
  3146  			return 0, true
  3147  		} else if leftValue.AsTime().Before(rightValue.AsTime()) {
  3148  			return -1, true
  3149  		} else {
  3150  			return 1, true
  3151  		}
  3152  	default:
  3153  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fpv.selector))
  3154  	}
  3155  }
  3156  
  3157  func (fpv *TimeInterval_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  3158  	return fpv.CompareWith(source.(*TimeInterval))
  3159  }
  3160  
  3161  // TimeInterval_FieldPathArrayItemValue allows storing single item in Path-specific values for TimeInterval according to their type
  3162  // Present only for array (repeated) types.
  3163  type TimeInterval_FieldPathArrayItemValue interface {
  3164  	gotenobject.FieldPathArrayItemValue
  3165  	TimeInterval_FieldPath
  3166  	ContainsValue(*TimeInterval) bool
  3167  }
  3168  
  3169  // ParseTimeInterval_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  3170  func ParseTimeInterval_FieldPathArrayItemValue(pathStr, valueStr string) (TimeInterval_FieldPathArrayItemValue, error) {
  3171  	fp, err := ParseTimeInterval_FieldPath(pathStr)
  3172  	if err != nil {
  3173  		return nil, err
  3174  	}
  3175  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  3176  	if err != nil {
  3177  		return nil, status.Errorf(codes.InvalidArgument, "error parsing TimeInterval field path array item value from %s: %v", valueStr, err)
  3178  	}
  3179  	return fpaiv.(TimeInterval_FieldPathArrayItemValue), nil
  3180  }
  3181  
  3182  func MustParseTimeInterval_FieldPathArrayItemValue(pathStr, valueStr string) TimeInterval_FieldPathArrayItemValue {
  3183  	fpaiv, err := ParseTimeInterval_FieldPathArrayItemValue(pathStr, valueStr)
  3184  	if err != nil {
  3185  		panic(err)
  3186  	}
  3187  	return fpaiv
  3188  }
  3189  
  3190  type TimeInterval_FieldTerminalPathArrayItemValue struct {
  3191  	TimeInterval_FieldTerminalPath
  3192  	value interface{}
  3193  }
  3194  
  3195  var _ TimeInterval_FieldPathArrayItemValue = (*TimeInterval_FieldTerminalPathArrayItemValue)(nil)
  3196  
  3197  // GetRawValue returns stored element value for array in object TimeInterval as interface{}
  3198  func (fpaiv *TimeInterval_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  3199  	return fpaiv.value
  3200  }
  3201  
  3202  func (fpaiv *TimeInterval_FieldTerminalPathArrayItemValue) GetSingle(source *TimeInterval) (interface{}, bool) {
  3203  	return nil, false
  3204  }
  3205  
  3206  func (fpaiv *TimeInterval_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  3207  	return fpaiv.GetSingle(source.(*TimeInterval))
  3208  }
  3209  
  3210  // Contains returns a boolean indicating if value that is being held is present in given 'TimeInterval'
  3211  func (fpaiv *TimeInterval_FieldTerminalPathArrayItemValue) ContainsValue(source *TimeInterval) bool {
  3212  	slice := fpaiv.TimeInterval_FieldTerminalPath.Get(source)
  3213  	for _, v := range slice {
  3214  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  3215  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  3216  				return true
  3217  			}
  3218  		} else if reflect.DeepEqual(v, fpaiv.value) {
  3219  			return true
  3220  		}
  3221  	}
  3222  	return false
  3223  }
  3224  
  3225  // TimeInterval_FieldPathArrayOfValues allows storing slice of values for TimeInterval fields according to their type
  3226  type TimeInterval_FieldPathArrayOfValues interface {
  3227  	gotenobject.FieldPathArrayOfValues
  3228  	TimeInterval_FieldPath
  3229  }
  3230  
  3231  func ParseTimeInterval_FieldPathArrayOfValues(pathStr, valuesStr string) (TimeInterval_FieldPathArrayOfValues, error) {
  3232  	fp, err := ParseTimeInterval_FieldPath(pathStr)
  3233  	if err != nil {
  3234  		return nil, err
  3235  	}
  3236  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  3237  	if err != nil {
  3238  		return nil, status.Errorf(codes.InvalidArgument, "error parsing TimeInterval field path array of values from %s: %v", valuesStr, err)
  3239  	}
  3240  	return fpaov.(TimeInterval_FieldPathArrayOfValues), nil
  3241  }
  3242  
  3243  func MustParseTimeInterval_FieldPathArrayOfValues(pathStr, valuesStr string) TimeInterval_FieldPathArrayOfValues {
  3244  	fpaov, err := ParseTimeInterval_FieldPathArrayOfValues(pathStr, valuesStr)
  3245  	if err != nil {
  3246  		panic(err)
  3247  	}
  3248  	return fpaov
  3249  }
  3250  
  3251  type TimeInterval_FieldTerminalPathArrayOfValues struct {
  3252  	TimeInterval_FieldTerminalPath
  3253  	values interface{}
  3254  }
  3255  
  3256  var _ TimeInterval_FieldPathArrayOfValues = (*TimeInterval_FieldTerminalPathArrayOfValues)(nil)
  3257  
  3258  func (fpaov *TimeInterval_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  3259  	switch fpaov.selector {
  3260  	case TimeInterval_FieldPathSelectorEndTime:
  3261  		for _, v := range fpaov.values.([]*timestamppb.Timestamp) {
  3262  			values = append(values, v)
  3263  		}
  3264  	case TimeInterval_FieldPathSelectorStartTime:
  3265  		for _, v := range fpaov.values.([]*timestamppb.Timestamp) {
  3266  			values = append(values, v)
  3267  		}
  3268  	}
  3269  	return
  3270  }
  3271  func (fpaov *TimeInterval_FieldTerminalPathArrayOfValues) AsEndTimeArrayOfValues() ([]*timestamppb.Timestamp, bool) {
  3272  	res, ok := fpaov.values.([]*timestamppb.Timestamp)
  3273  	return res, ok
  3274  }
  3275  func (fpaov *TimeInterval_FieldTerminalPathArrayOfValues) AsStartTimeArrayOfValues() ([]*timestamppb.Timestamp, bool) {
  3276  	res, ok := fpaov.values.([]*timestamppb.Timestamp)
  3277  	return res, ok
  3278  }