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

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/limits/proto/v1alpha2/limit.proto
     3  // DO NOT EDIT!!!
     4  
     5  package limit
     6  
     7  import (
     8  	"encoding/json"
     9  	"fmt"
    10  	"reflect"
    11  	"strings"
    12  	"time"
    13  
    14  	"google.golang.org/grpc/codes"
    15  	"google.golang.org/grpc/status"
    16  	"google.golang.org/protobuf/encoding/protojson"
    17  	"google.golang.org/protobuf/proto"
    18  	"google.golang.org/protobuf/reflect/protoregistry"
    19  
    20  	gotenobject "github.com/cloudwan/goten-sdk/runtime/object"
    21  	"github.com/cloudwan/goten-sdk/runtime/strcase"
    22  )
    23  
    24  // proto imports
    25  import (
    26  	iam_project "github.com/cloudwan/edgelq-sdk/iam/resources/v1alpha2/project"
    27  	limit_pool "github.com/cloudwan/edgelq-sdk/limits/resources/v1alpha2/limit_pool"
    28  	meta_resource "github.com/cloudwan/edgelq-sdk/meta/resources/v1alpha2/resource"
    29  	meta_service "github.com/cloudwan/edgelq-sdk/meta/resources/v1alpha2/service"
    30  	meta "github.com/cloudwan/goten-sdk/types/meta"
    31  )
    32  
    33  // ensure the imports are used
    34  var (
    35  	_ = new(json.Marshaler)
    36  	_ = new(fmt.Stringer)
    37  	_ = reflect.DeepEqual
    38  	_ = strings.Builder{}
    39  	_ = time.Second
    40  
    41  	_ = strcase.ToLowerCamel
    42  	_ = codes.NotFound
    43  	_ = status.Status{}
    44  	_ = protojson.UnmarshalOptions{}
    45  	_ = new(proto.Message)
    46  	_ = protoregistry.GlobalTypes
    47  
    48  	_ = new(gotenobject.FieldPath)
    49  )
    50  
    51  // make sure we're using proto imports
    52  var (
    53  	_ = &iam_project.Project{}
    54  	_ = &limit_pool.LimitPool{}
    55  	_ = &meta_resource.Resource{}
    56  	_ = &meta_service.Service{}
    57  	_ = &meta.Meta{}
    58  )
    59  
    60  // FieldPath provides implementation to handle
    61  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
    62  type Limit_FieldPath interface {
    63  	gotenobject.FieldPath
    64  	Selector() Limit_FieldPathSelector
    65  	Get(source *Limit) []interface{}
    66  	GetSingle(source *Limit) (interface{}, bool)
    67  	ClearValue(item *Limit)
    68  
    69  	// Those methods build corresponding Limit_FieldPathValue
    70  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
    71  	WithIValue(value interface{}) Limit_FieldPathValue
    72  	WithIArrayOfValues(values interface{}) Limit_FieldPathArrayOfValues
    73  	WithIArrayItemValue(value interface{}) Limit_FieldPathArrayItemValue
    74  }
    75  
    76  type Limit_FieldPathSelector int32
    77  
    78  const (
    79  	Limit_FieldPathSelectorName            Limit_FieldPathSelector = 0
    80  	Limit_FieldPathSelectorService         Limit_FieldPathSelector = 1
    81  	Limit_FieldPathSelectorResource        Limit_FieldPathSelector = 2
    82  	Limit_FieldPathSelectorRegion          Limit_FieldPathSelector = 3
    83  	Limit_FieldPathSelectorConfiguredLimit Limit_FieldPathSelector = 4
    84  	Limit_FieldPathSelectorActiveLimit     Limit_FieldPathSelector = 5
    85  	Limit_FieldPathSelectorUsage           Limit_FieldPathSelector = 6
    86  	Limit_FieldPathSelectorSource          Limit_FieldPathSelector = 7
    87  	Limit_FieldPathSelectorMetadata        Limit_FieldPathSelector = 8
    88  )
    89  
    90  func (s Limit_FieldPathSelector) String() string {
    91  	switch s {
    92  	case Limit_FieldPathSelectorName:
    93  		return "name"
    94  	case Limit_FieldPathSelectorService:
    95  		return "service"
    96  	case Limit_FieldPathSelectorResource:
    97  		return "resource"
    98  	case Limit_FieldPathSelectorRegion:
    99  		return "region"
   100  	case Limit_FieldPathSelectorConfiguredLimit:
   101  		return "configured_limit"
   102  	case Limit_FieldPathSelectorActiveLimit:
   103  		return "active_limit"
   104  	case Limit_FieldPathSelectorUsage:
   105  		return "usage"
   106  	case Limit_FieldPathSelectorSource:
   107  		return "source"
   108  	case Limit_FieldPathSelectorMetadata:
   109  		return "metadata"
   110  	default:
   111  		panic(fmt.Sprintf("Invalid selector for Limit: %d", s))
   112  	}
   113  }
   114  
   115  func BuildLimit_FieldPath(fp gotenobject.RawFieldPath) (Limit_FieldPath, error) {
   116  	if len(fp) == 0 {
   117  		return nil, status.Error(codes.InvalidArgument, "empty field path for object Limit")
   118  	}
   119  	if len(fp) == 1 {
   120  		switch fp[0] {
   121  		case "name":
   122  			return &Limit_FieldTerminalPath{selector: Limit_FieldPathSelectorName}, nil
   123  		case "service":
   124  			return &Limit_FieldTerminalPath{selector: Limit_FieldPathSelectorService}, nil
   125  		case "resource":
   126  			return &Limit_FieldTerminalPath{selector: Limit_FieldPathSelectorResource}, nil
   127  		case "region":
   128  			return &Limit_FieldTerminalPath{selector: Limit_FieldPathSelectorRegion}, nil
   129  		case "configured_limit", "configuredLimit", "configured-limit":
   130  			return &Limit_FieldTerminalPath{selector: Limit_FieldPathSelectorConfiguredLimit}, nil
   131  		case "active_limit", "activeLimit", "active-limit":
   132  			return &Limit_FieldTerminalPath{selector: Limit_FieldPathSelectorActiveLimit}, nil
   133  		case "usage":
   134  			return &Limit_FieldTerminalPath{selector: Limit_FieldPathSelectorUsage}, nil
   135  		case "source":
   136  			return &Limit_FieldTerminalPath{selector: Limit_FieldPathSelectorSource}, nil
   137  		case "metadata":
   138  			return &Limit_FieldTerminalPath{selector: Limit_FieldPathSelectorMetadata}, nil
   139  		}
   140  	} else {
   141  		switch fp[0] {
   142  		case "metadata":
   143  			if subpath, err := meta.BuildMeta_FieldPath(fp[1:]); err != nil {
   144  				return nil, err
   145  			} else {
   146  				return &Limit_FieldSubPath{selector: Limit_FieldPathSelectorMetadata, subPath: subpath}, nil
   147  			}
   148  		}
   149  	}
   150  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Limit", fp)
   151  }
   152  
   153  func ParseLimit_FieldPath(rawField string) (Limit_FieldPath, error) {
   154  	fp, err := gotenobject.ParseRawFieldPath(rawField)
   155  	if err != nil {
   156  		return nil, err
   157  	}
   158  	return BuildLimit_FieldPath(fp)
   159  }
   160  
   161  func MustParseLimit_FieldPath(rawField string) Limit_FieldPath {
   162  	fp, err := ParseLimit_FieldPath(rawField)
   163  	if err != nil {
   164  		panic(err)
   165  	}
   166  	return fp
   167  }
   168  
   169  type Limit_FieldTerminalPath struct {
   170  	selector Limit_FieldPathSelector
   171  }
   172  
   173  var _ Limit_FieldPath = (*Limit_FieldTerminalPath)(nil)
   174  
   175  func (fp *Limit_FieldTerminalPath) Selector() Limit_FieldPathSelector {
   176  	return fp.selector
   177  }
   178  
   179  // String returns path representation in proto convention
   180  func (fp *Limit_FieldTerminalPath) String() string {
   181  	return fp.selector.String()
   182  }
   183  
   184  // JSONString returns path representation is JSON convention
   185  func (fp *Limit_FieldTerminalPath) JSONString() string {
   186  	return strcase.ToLowerCamel(fp.String())
   187  }
   188  
   189  // Get returns all values pointed by specific field from source Limit
   190  func (fp *Limit_FieldTerminalPath) Get(source *Limit) (values []interface{}) {
   191  	if source != nil {
   192  		switch fp.selector {
   193  		case Limit_FieldPathSelectorName:
   194  			if source.Name != nil {
   195  				values = append(values, source.Name)
   196  			}
   197  		case Limit_FieldPathSelectorService:
   198  			if source.Service != nil {
   199  				values = append(values, source.Service)
   200  			}
   201  		case Limit_FieldPathSelectorResource:
   202  			if source.Resource != nil {
   203  				values = append(values, source.Resource)
   204  			}
   205  		case Limit_FieldPathSelectorRegion:
   206  			values = append(values, source.Region)
   207  		case Limit_FieldPathSelectorConfiguredLimit:
   208  			values = append(values, source.ConfiguredLimit)
   209  		case Limit_FieldPathSelectorActiveLimit:
   210  			values = append(values, source.ActiveLimit)
   211  		case Limit_FieldPathSelectorUsage:
   212  			values = append(values, source.Usage)
   213  		case Limit_FieldPathSelectorSource:
   214  			if source.Source != nil {
   215  				values = append(values, source.Source)
   216  			}
   217  		case Limit_FieldPathSelectorMetadata:
   218  			if source.Metadata != nil {
   219  				values = append(values, source.Metadata)
   220  			}
   221  		default:
   222  			panic(fmt.Sprintf("Invalid selector for Limit: %d", fp.selector))
   223  		}
   224  	}
   225  	return
   226  }
   227  
   228  func (fp *Limit_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
   229  	return fp.Get(source.(*Limit))
   230  }
   231  
   232  // GetSingle returns value pointed by specific field of from source Limit
   233  func (fp *Limit_FieldTerminalPath) GetSingle(source *Limit) (interface{}, bool) {
   234  	switch fp.selector {
   235  	case Limit_FieldPathSelectorName:
   236  		res := source.GetName()
   237  		return res, res != nil
   238  	case Limit_FieldPathSelectorService:
   239  		res := source.GetService()
   240  		return res, res != nil
   241  	case Limit_FieldPathSelectorResource:
   242  		res := source.GetResource()
   243  		return res, res != nil
   244  	case Limit_FieldPathSelectorRegion:
   245  		return source.GetRegion(), source != nil
   246  	case Limit_FieldPathSelectorConfiguredLimit:
   247  		return source.GetConfiguredLimit(), source != nil
   248  	case Limit_FieldPathSelectorActiveLimit:
   249  		return source.GetActiveLimit(), source != nil
   250  	case Limit_FieldPathSelectorUsage:
   251  		return source.GetUsage(), source != nil
   252  	case Limit_FieldPathSelectorSource:
   253  		res := source.GetSource()
   254  		return res, res != nil
   255  	case Limit_FieldPathSelectorMetadata:
   256  		res := source.GetMetadata()
   257  		return res, res != nil
   258  	default:
   259  		panic(fmt.Sprintf("Invalid selector for Limit: %d", fp.selector))
   260  	}
   261  }
   262  
   263  func (fp *Limit_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   264  	return fp.GetSingle(source.(*Limit))
   265  }
   266  
   267  // GetDefault returns a default value of the field type
   268  func (fp *Limit_FieldTerminalPath) GetDefault() interface{} {
   269  	switch fp.selector {
   270  	case Limit_FieldPathSelectorName:
   271  		return (*Name)(nil)
   272  	case Limit_FieldPathSelectorService:
   273  		return (*meta_service.Reference)(nil)
   274  	case Limit_FieldPathSelectorResource:
   275  		return (*meta_resource.Reference)(nil)
   276  	case Limit_FieldPathSelectorRegion:
   277  		return ""
   278  	case Limit_FieldPathSelectorConfiguredLimit:
   279  		return int64(0)
   280  	case Limit_FieldPathSelectorActiveLimit:
   281  		return int64(0)
   282  	case Limit_FieldPathSelectorUsage:
   283  		return int64(0)
   284  	case Limit_FieldPathSelectorSource:
   285  		return (*limit_pool.Reference)(nil)
   286  	case Limit_FieldPathSelectorMetadata:
   287  		return (*meta.Meta)(nil)
   288  	default:
   289  		panic(fmt.Sprintf("Invalid selector for Limit: %d", fp.selector))
   290  	}
   291  }
   292  
   293  func (fp *Limit_FieldTerminalPath) ClearValue(item *Limit) {
   294  	if item != nil {
   295  		switch fp.selector {
   296  		case Limit_FieldPathSelectorName:
   297  			item.Name = nil
   298  		case Limit_FieldPathSelectorService:
   299  			item.Service = nil
   300  		case Limit_FieldPathSelectorResource:
   301  			item.Resource = nil
   302  		case Limit_FieldPathSelectorRegion:
   303  			item.Region = ""
   304  		case Limit_FieldPathSelectorConfiguredLimit:
   305  			item.ConfiguredLimit = int64(0)
   306  		case Limit_FieldPathSelectorActiveLimit:
   307  			item.ActiveLimit = int64(0)
   308  		case Limit_FieldPathSelectorUsage:
   309  			item.Usage = int64(0)
   310  		case Limit_FieldPathSelectorSource:
   311  			item.Source = nil
   312  		case Limit_FieldPathSelectorMetadata:
   313  			item.Metadata = nil
   314  		default:
   315  			panic(fmt.Sprintf("Invalid selector for Limit: %d", fp.selector))
   316  		}
   317  	}
   318  }
   319  
   320  func (fp *Limit_FieldTerminalPath) ClearValueRaw(item proto.Message) {
   321  	fp.ClearValue(item.(*Limit))
   322  }
   323  
   324  // IsLeaf - whether field path is holds simple value
   325  func (fp *Limit_FieldTerminalPath) IsLeaf() bool {
   326  	return fp.selector == Limit_FieldPathSelectorName ||
   327  		fp.selector == Limit_FieldPathSelectorService ||
   328  		fp.selector == Limit_FieldPathSelectorResource ||
   329  		fp.selector == Limit_FieldPathSelectorRegion ||
   330  		fp.selector == Limit_FieldPathSelectorConfiguredLimit ||
   331  		fp.selector == Limit_FieldPathSelectorActiveLimit ||
   332  		fp.selector == Limit_FieldPathSelectorUsage ||
   333  		fp.selector == Limit_FieldPathSelectorSource
   334  }
   335  
   336  func (fp *Limit_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   337  	return []gotenobject.FieldPath{fp}
   338  }
   339  
   340  func (fp *Limit_FieldTerminalPath) WithIValue(value interface{}) Limit_FieldPathValue {
   341  	switch fp.selector {
   342  	case Limit_FieldPathSelectorName:
   343  		return &Limit_FieldTerminalPathValue{Limit_FieldTerminalPath: *fp, value: value.(*Name)}
   344  	case Limit_FieldPathSelectorService:
   345  		return &Limit_FieldTerminalPathValue{Limit_FieldTerminalPath: *fp, value: value.(*meta_service.Reference)}
   346  	case Limit_FieldPathSelectorResource:
   347  		return &Limit_FieldTerminalPathValue{Limit_FieldTerminalPath: *fp, value: value.(*meta_resource.Reference)}
   348  	case Limit_FieldPathSelectorRegion:
   349  		return &Limit_FieldTerminalPathValue{Limit_FieldTerminalPath: *fp, value: value.(string)}
   350  	case Limit_FieldPathSelectorConfiguredLimit:
   351  		return &Limit_FieldTerminalPathValue{Limit_FieldTerminalPath: *fp, value: value.(int64)}
   352  	case Limit_FieldPathSelectorActiveLimit:
   353  		return &Limit_FieldTerminalPathValue{Limit_FieldTerminalPath: *fp, value: value.(int64)}
   354  	case Limit_FieldPathSelectorUsage:
   355  		return &Limit_FieldTerminalPathValue{Limit_FieldTerminalPath: *fp, value: value.(int64)}
   356  	case Limit_FieldPathSelectorSource:
   357  		return &Limit_FieldTerminalPathValue{Limit_FieldTerminalPath: *fp, value: value.(*limit_pool.Reference)}
   358  	case Limit_FieldPathSelectorMetadata:
   359  		return &Limit_FieldTerminalPathValue{Limit_FieldTerminalPath: *fp, value: value.(*meta.Meta)}
   360  	default:
   361  		panic(fmt.Sprintf("Invalid selector for Limit: %d", fp.selector))
   362  	}
   363  }
   364  
   365  func (fp *Limit_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   366  	return fp.WithIValue(value)
   367  }
   368  
   369  func (fp *Limit_FieldTerminalPath) WithIArrayOfValues(values interface{}) Limit_FieldPathArrayOfValues {
   370  	fpaov := &Limit_FieldTerminalPathArrayOfValues{Limit_FieldTerminalPath: *fp}
   371  	switch fp.selector {
   372  	case Limit_FieldPathSelectorName:
   373  		return &Limit_FieldTerminalPathArrayOfValues{Limit_FieldTerminalPath: *fp, values: values.([]*Name)}
   374  	case Limit_FieldPathSelectorService:
   375  		return &Limit_FieldTerminalPathArrayOfValues{Limit_FieldTerminalPath: *fp, values: values.([]*meta_service.Reference)}
   376  	case Limit_FieldPathSelectorResource:
   377  		return &Limit_FieldTerminalPathArrayOfValues{Limit_FieldTerminalPath: *fp, values: values.([]*meta_resource.Reference)}
   378  	case Limit_FieldPathSelectorRegion:
   379  		return &Limit_FieldTerminalPathArrayOfValues{Limit_FieldTerminalPath: *fp, values: values.([]string)}
   380  	case Limit_FieldPathSelectorConfiguredLimit:
   381  		return &Limit_FieldTerminalPathArrayOfValues{Limit_FieldTerminalPath: *fp, values: values.([]int64)}
   382  	case Limit_FieldPathSelectorActiveLimit:
   383  		return &Limit_FieldTerminalPathArrayOfValues{Limit_FieldTerminalPath: *fp, values: values.([]int64)}
   384  	case Limit_FieldPathSelectorUsage:
   385  		return &Limit_FieldTerminalPathArrayOfValues{Limit_FieldTerminalPath: *fp, values: values.([]int64)}
   386  	case Limit_FieldPathSelectorSource:
   387  		return &Limit_FieldTerminalPathArrayOfValues{Limit_FieldTerminalPath: *fp, values: values.([]*limit_pool.Reference)}
   388  	case Limit_FieldPathSelectorMetadata:
   389  		return &Limit_FieldTerminalPathArrayOfValues{Limit_FieldTerminalPath: *fp, values: values.([]*meta.Meta)}
   390  	default:
   391  		panic(fmt.Sprintf("Invalid selector for Limit: %d", fp.selector))
   392  	}
   393  	return fpaov
   394  }
   395  
   396  func (fp *Limit_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   397  	return fp.WithIArrayOfValues(values)
   398  }
   399  
   400  func (fp *Limit_FieldTerminalPath) WithIArrayItemValue(value interface{}) Limit_FieldPathArrayItemValue {
   401  	switch fp.selector {
   402  	default:
   403  		panic(fmt.Sprintf("Invalid selector for Limit: %d", fp.selector))
   404  	}
   405  }
   406  
   407  func (fp *Limit_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   408  	return fp.WithIArrayItemValue(value)
   409  }
   410  
   411  type Limit_FieldSubPath struct {
   412  	selector Limit_FieldPathSelector
   413  	subPath  gotenobject.FieldPath
   414  }
   415  
   416  var _ Limit_FieldPath = (*Limit_FieldSubPath)(nil)
   417  
   418  func (fps *Limit_FieldSubPath) Selector() Limit_FieldPathSelector {
   419  	return fps.selector
   420  }
   421  func (fps *Limit_FieldSubPath) AsMetadataSubPath() (meta.Meta_FieldPath, bool) {
   422  	res, ok := fps.subPath.(meta.Meta_FieldPath)
   423  	return res, ok
   424  }
   425  
   426  // String returns path representation in proto convention
   427  func (fps *Limit_FieldSubPath) String() string {
   428  	return fps.selector.String() + "." + fps.subPath.String()
   429  }
   430  
   431  // JSONString returns path representation is JSON convention
   432  func (fps *Limit_FieldSubPath) JSONString() string {
   433  	return strcase.ToLowerCamel(fps.selector.String()) + "." + fps.subPath.JSONString()
   434  }
   435  
   436  // Get returns all values pointed by selected field from source Limit
   437  func (fps *Limit_FieldSubPath) Get(source *Limit) (values []interface{}) {
   438  	switch fps.selector {
   439  	case Limit_FieldPathSelectorMetadata:
   440  		values = append(values, fps.subPath.GetRaw(source.GetMetadata())...)
   441  	default:
   442  		panic(fmt.Sprintf("Invalid selector for Limit: %d", fps.selector))
   443  	}
   444  	return
   445  }
   446  
   447  func (fps *Limit_FieldSubPath) GetRaw(source proto.Message) []interface{} {
   448  	return fps.Get(source.(*Limit))
   449  }
   450  
   451  // GetSingle returns value of selected field from source Limit
   452  func (fps *Limit_FieldSubPath) GetSingle(source *Limit) (interface{}, bool) {
   453  	switch fps.selector {
   454  	case Limit_FieldPathSelectorMetadata:
   455  		if source.GetMetadata() == nil {
   456  			return nil, false
   457  		}
   458  		return fps.subPath.GetSingleRaw(source.GetMetadata())
   459  	default:
   460  		panic(fmt.Sprintf("Invalid selector for Limit: %d", fps.selector))
   461  	}
   462  }
   463  
   464  func (fps *Limit_FieldSubPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   465  	return fps.GetSingle(source.(*Limit))
   466  }
   467  
   468  // GetDefault returns a default value of the field type
   469  func (fps *Limit_FieldSubPath) GetDefault() interface{} {
   470  	return fps.subPath.GetDefault()
   471  }
   472  
   473  func (fps *Limit_FieldSubPath) ClearValue(item *Limit) {
   474  	if item != nil {
   475  		switch fps.selector {
   476  		case Limit_FieldPathSelectorMetadata:
   477  			fps.subPath.ClearValueRaw(item.Metadata)
   478  		default:
   479  			panic(fmt.Sprintf("Invalid selector for Limit: %d", fps.selector))
   480  		}
   481  	}
   482  }
   483  
   484  func (fps *Limit_FieldSubPath) ClearValueRaw(item proto.Message) {
   485  	fps.ClearValue(item.(*Limit))
   486  }
   487  
   488  // IsLeaf - whether field path is holds simple value
   489  func (fps *Limit_FieldSubPath) IsLeaf() bool {
   490  	return fps.subPath.IsLeaf()
   491  }
   492  
   493  func (fps *Limit_FieldSubPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   494  	iPaths := []gotenobject.FieldPath{&Limit_FieldTerminalPath{selector: fps.selector}}
   495  	iPaths = append(iPaths, fps.subPath.SplitIntoTerminalIPaths()...)
   496  	return iPaths
   497  }
   498  
   499  func (fps *Limit_FieldSubPath) WithIValue(value interface{}) Limit_FieldPathValue {
   500  	return &Limit_FieldSubPathValue{fps, fps.subPath.WithRawIValue(value)}
   501  }
   502  
   503  func (fps *Limit_FieldSubPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   504  	return fps.WithIValue(value)
   505  }
   506  
   507  func (fps *Limit_FieldSubPath) WithIArrayOfValues(values interface{}) Limit_FieldPathArrayOfValues {
   508  	return &Limit_FieldSubPathArrayOfValues{fps, fps.subPath.WithRawIArrayOfValues(values)}
   509  }
   510  
   511  func (fps *Limit_FieldSubPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   512  	return fps.WithIArrayOfValues(values)
   513  }
   514  
   515  func (fps *Limit_FieldSubPath) WithIArrayItemValue(value interface{}) Limit_FieldPathArrayItemValue {
   516  	return &Limit_FieldSubPathArrayItemValue{fps, fps.subPath.WithRawIArrayItemValue(value)}
   517  }
   518  
   519  func (fps *Limit_FieldSubPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   520  	return fps.WithIArrayItemValue(value)
   521  }
   522  
   523  // Limit_FieldPathValue allows storing values for Limit fields according to their type
   524  type Limit_FieldPathValue interface {
   525  	Limit_FieldPath
   526  	gotenobject.FieldPathValue
   527  	SetTo(target **Limit)
   528  	CompareWith(*Limit) (cmp int, comparable bool)
   529  }
   530  
   531  func ParseLimit_FieldPathValue(pathStr, valueStr string) (Limit_FieldPathValue, error) {
   532  	fp, err := ParseLimit_FieldPath(pathStr)
   533  	if err != nil {
   534  		return nil, err
   535  	}
   536  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
   537  	if err != nil {
   538  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Limit field path value from %s: %v", valueStr, err)
   539  	}
   540  	return fpv.(Limit_FieldPathValue), nil
   541  }
   542  
   543  func MustParseLimit_FieldPathValue(pathStr, valueStr string) Limit_FieldPathValue {
   544  	fpv, err := ParseLimit_FieldPathValue(pathStr, valueStr)
   545  	if err != nil {
   546  		panic(err)
   547  	}
   548  	return fpv
   549  }
   550  
   551  type Limit_FieldTerminalPathValue struct {
   552  	Limit_FieldTerminalPath
   553  	value interface{}
   554  }
   555  
   556  var _ Limit_FieldPathValue = (*Limit_FieldTerminalPathValue)(nil)
   557  
   558  // GetRawValue returns raw value stored under selected path for 'Limit' as interface{}
   559  func (fpv *Limit_FieldTerminalPathValue) GetRawValue() interface{} {
   560  	return fpv.value
   561  }
   562  func (fpv *Limit_FieldTerminalPathValue) AsNameValue() (*Name, bool) {
   563  	res, ok := fpv.value.(*Name)
   564  	return res, ok
   565  }
   566  func (fpv *Limit_FieldTerminalPathValue) AsServiceValue() (*meta_service.Reference, bool) {
   567  	res, ok := fpv.value.(*meta_service.Reference)
   568  	return res, ok
   569  }
   570  func (fpv *Limit_FieldTerminalPathValue) AsResourceValue() (*meta_resource.Reference, bool) {
   571  	res, ok := fpv.value.(*meta_resource.Reference)
   572  	return res, ok
   573  }
   574  func (fpv *Limit_FieldTerminalPathValue) AsRegionValue() (string, bool) {
   575  	res, ok := fpv.value.(string)
   576  	return res, ok
   577  }
   578  func (fpv *Limit_FieldTerminalPathValue) AsConfiguredLimitValue() (int64, bool) {
   579  	res, ok := fpv.value.(int64)
   580  	return res, ok
   581  }
   582  func (fpv *Limit_FieldTerminalPathValue) AsActiveLimitValue() (int64, bool) {
   583  	res, ok := fpv.value.(int64)
   584  	return res, ok
   585  }
   586  func (fpv *Limit_FieldTerminalPathValue) AsUsageValue() (int64, bool) {
   587  	res, ok := fpv.value.(int64)
   588  	return res, ok
   589  }
   590  func (fpv *Limit_FieldTerminalPathValue) AsSourceValue() (*limit_pool.Reference, bool) {
   591  	res, ok := fpv.value.(*limit_pool.Reference)
   592  	return res, ok
   593  }
   594  func (fpv *Limit_FieldTerminalPathValue) AsMetadataValue() (*meta.Meta, bool) {
   595  	res, ok := fpv.value.(*meta.Meta)
   596  	return res, ok
   597  }
   598  
   599  // SetTo stores value for selected field for object Limit
   600  func (fpv *Limit_FieldTerminalPathValue) SetTo(target **Limit) {
   601  	if *target == nil {
   602  		*target = new(Limit)
   603  	}
   604  	switch fpv.selector {
   605  	case Limit_FieldPathSelectorName:
   606  		(*target).Name = fpv.value.(*Name)
   607  	case Limit_FieldPathSelectorService:
   608  		(*target).Service = fpv.value.(*meta_service.Reference)
   609  	case Limit_FieldPathSelectorResource:
   610  		(*target).Resource = fpv.value.(*meta_resource.Reference)
   611  	case Limit_FieldPathSelectorRegion:
   612  		(*target).Region = fpv.value.(string)
   613  	case Limit_FieldPathSelectorConfiguredLimit:
   614  		(*target).ConfiguredLimit = fpv.value.(int64)
   615  	case Limit_FieldPathSelectorActiveLimit:
   616  		(*target).ActiveLimit = fpv.value.(int64)
   617  	case Limit_FieldPathSelectorUsage:
   618  		(*target).Usage = fpv.value.(int64)
   619  	case Limit_FieldPathSelectorSource:
   620  		(*target).Source = fpv.value.(*limit_pool.Reference)
   621  	case Limit_FieldPathSelectorMetadata:
   622  		(*target).Metadata = fpv.value.(*meta.Meta)
   623  	default:
   624  		panic(fmt.Sprintf("Invalid selector for Limit: %d", fpv.selector))
   625  	}
   626  }
   627  
   628  func (fpv *Limit_FieldTerminalPathValue) SetToRaw(target proto.Message) {
   629  	typedObject := target.(*Limit)
   630  	fpv.SetTo(&typedObject)
   631  }
   632  
   633  // CompareWith compares value in the 'Limit_FieldTerminalPathValue' with the value under path in 'Limit'.
   634  func (fpv *Limit_FieldTerminalPathValue) CompareWith(source *Limit) (int, bool) {
   635  	switch fpv.selector {
   636  	case Limit_FieldPathSelectorName:
   637  		leftValue := fpv.value.(*Name)
   638  		rightValue := source.GetName()
   639  		if leftValue == nil {
   640  			if rightValue != nil {
   641  				return -1, true
   642  			}
   643  			return 0, true
   644  		}
   645  		if rightValue == nil {
   646  			return 1, true
   647  		}
   648  		if leftValue.String() == rightValue.String() {
   649  			return 0, true
   650  		} else if leftValue.String() < rightValue.String() {
   651  			return -1, true
   652  		} else {
   653  			return 1, true
   654  		}
   655  	case Limit_FieldPathSelectorService:
   656  		leftValue := fpv.value.(*meta_service.Reference)
   657  		rightValue := source.GetService()
   658  		if leftValue == nil {
   659  			if rightValue != nil {
   660  				return -1, true
   661  			}
   662  			return 0, true
   663  		}
   664  		if rightValue == nil {
   665  			return 1, true
   666  		}
   667  		if leftValue.String() == rightValue.String() {
   668  			return 0, true
   669  		} else if leftValue.String() < rightValue.String() {
   670  			return -1, true
   671  		} else {
   672  			return 1, true
   673  		}
   674  	case Limit_FieldPathSelectorResource:
   675  		leftValue := fpv.value.(*meta_resource.Reference)
   676  		rightValue := source.GetResource()
   677  		if leftValue == nil {
   678  			if rightValue != nil {
   679  				return -1, true
   680  			}
   681  			return 0, true
   682  		}
   683  		if rightValue == nil {
   684  			return 1, true
   685  		}
   686  		if leftValue.String() == rightValue.String() {
   687  			return 0, true
   688  		} else if leftValue.String() < rightValue.String() {
   689  			return -1, true
   690  		} else {
   691  			return 1, true
   692  		}
   693  	case Limit_FieldPathSelectorRegion:
   694  		leftValue := fpv.value.(string)
   695  		rightValue := source.GetRegion()
   696  		if (leftValue) == (rightValue) {
   697  			return 0, true
   698  		} else if (leftValue) < (rightValue) {
   699  			return -1, true
   700  		} else {
   701  			return 1, true
   702  		}
   703  	case Limit_FieldPathSelectorConfiguredLimit:
   704  		leftValue := fpv.value.(int64)
   705  		rightValue := source.GetConfiguredLimit()
   706  		if (leftValue) == (rightValue) {
   707  			return 0, true
   708  		} else if (leftValue) < (rightValue) {
   709  			return -1, true
   710  		} else {
   711  			return 1, true
   712  		}
   713  	case Limit_FieldPathSelectorActiveLimit:
   714  		leftValue := fpv.value.(int64)
   715  		rightValue := source.GetActiveLimit()
   716  		if (leftValue) == (rightValue) {
   717  			return 0, true
   718  		} else if (leftValue) < (rightValue) {
   719  			return -1, true
   720  		} else {
   721  			return 1, true
   722  		}
   723  	case Limit_FieldPathSelectorUsage:
   724  		leftValue := fpv.value.(int64)
   725  		rightValue := source.GetUsage()
   726  		if (leftValue) == (rightValue) {
   727  			return 0, true
   728  		} else if (leftValue) < (rightValue) {
   729  			return -1, true
   730  		} else {
   731  			return 1, true
   732  		}
   733  	case Limit_FieldPathSelectorSource:
   734  		leftValue := fpv.value.(*limit_pool.Reference)
   735  		rightValue := source.GetSource()
   736  		if leftValue == nil {
   737  			if rightValue != nil {
   738  				return -1, true
   739  			}
   740  			return 0, true
   741  		}
   742  		if rightValue == nil {
   743  			return 1, true
   744  		}
   745  		if leftValue.String() == rightValue.String() {
   746  			return 0, true
   747  		} else if leftValue.String() < rightValue.String() {
   748  			return -1, true
   749  		} else {
   750  			return 1, true
   751  		}
   752  	case Limit_FieldPathSelectorMetadata:
   753  		return 0, false
   754  	default:
   755  		panic(fmt.Sprintf("Invalid selector for Limit: %d", fpv.selector))
   756  	}
   757  }
   758  
   759  func (fpv *Limit_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
   760  	return fpv.CompareWith(source.(*Limit))
   761  }
   762  
   763  type Limit_FieldSubPathValue struct {
   764  	Limit_FieldPath
   765  	subPathValue gotenobject.FieldPathValue
   766  }
   767  
   768  var _ Limit_FieldPathValue = (*Limit_FieldSubPathValue)(nil)
   769  
   770  func (fpvs *Limit_FieldSubPathValue) AsMetadataPathValue() (meta.Meta_FieldPathValue, bool) {
   771  	res, ok := fpvs.subPathValue.(meta.Meta_FieldPathValue)
   772  	return res, ok
   773  }
   774  
   775  func (fpvs *Limit_FieldSubPathValue) SetTo(target **Limit) {
   776  	if *target == nil {
   777  		*target = new(Limit)
   778  	}
   779  	switch fpvs.Selector() {
   780  	case Limit_FieldPathSelectorMetadata:
   781  		fpvs.subPathValue.(meta.Meta_FieldPathValue).SetTo(&(*target).Metadata)
   782  	default:
   783  		panic(fmt.Sprintf("Invalid selector for Limit: %d", fpvs.Selector()))
   784  	}
   785  }
   786  
   787  func (fpvs *Limit_FieldSubPathValue) SetToRaw(target proto.Message) {
   788  	typedObject := target.(*Limit)
   789  	fpvs.SetTo(&typedObject)
   790  }
   791  
   792  func (fpvs *Limit_FieldSubPathValue) GetRawValue() interface{} {
   793  	return fpvs.subPathValue.GetRawValue()
   794  }
   795  
   796  func (fpvs *Limit_FieldSubPathValue) CompareWith(source *Limit) (int, bool) {
   797  	switch fpvs.Selector() {
   798  	case Limit_FieldPathSelectorMetadata:
   799  		return fpvs.subPathValue.(meta.Meta_FieldPathValue).CompareWith(source.GetMetadata())
   800  	default:
   801  		panic(fmt.Sprintf("Invalid selector for Limit: %d", fpvs.Selector()))
   802  	}
   803  }
   804  
   805  func (fpvs *Limit_FieldSubPathValue) CompareWithRaw(source proto.Message) (int, bool) {
   806  	return fpvs.CompareWith(source.(*Limit))
   807  }
   808  
   809  // Limit_FieldPathArrayItemValue allows storing single item in Path-specific values for Limit according to their type
   810  // Present only for array (repeated) types.
   811  type Limit_FieldPathArrayItemValue interface {
   812  	gotenobject.FieldPathArrayItemValue
   813  	Limit_FieldPath
   814  	ContainsValue(*Limit) bool
   815  }
   816  
   817  // ParseLimit_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
   818  func ParseLimit_FieldPathArrayItemValue(pathStr, valueStr string) (Limit_FieldPathArrayItemValue, error) {
   819  	fp, err := ParseLimit_FieldPath(pathStr)
   820  	if err != nil {
   821  		return nil, err
   822  	}
   823  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
   824  	if err != nil {
   825  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Limit field path array item value from %s: %v", valueStr, err)
   826  	}
   827  	return fpaiv.(Limit_FieldPathArrayItemValue), nil
   828  }
   829  
   830  func MustParseLimit_FieldPathArrayItemValue(pathStr, valueStr string) Limit_FieldPathArrayItemValue {
   831  	fpaiv, err := ParseLimit_FieldPathArrayItemValue(pathStr, valueStr)
   832  	if err != nil {
   833  		panic(err)
   834  	}
   835  	return fpaiv
   836  }
   837  
   838  type Limit_FieldTerminalPathArrayItemValue struct {
   839  	Limit_FieldTerminalPath
   840  	value interface{}
   841  }
   842  
   843  var _ Limit_FieldPathArrayItemValue = (*Limit_FieldTerminalPathArrayItemValue)(nil)
   844  
   845  // GetRawValue returns stored element value for array in object Limit as interface{}
   846  func (fpaiv *Limit_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
   847  	return fpaiv.value
   848  }
   849  
   850  func (fpaiv *Limit_FieldTerminalPathArrayItemValue) GetSingle(source *Limit) (interface{}, bool) {
   851  	return nil, false
   852  }
   853  
   854  func (fpaiv *Limit_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
   855  	return fpaiv.GetSingle(source.(*Limit))
   856  }
   857  
   858  // Contains returns a boolean indicating if value that is being held is present in given 'Limit'
   859  func (fpaiv *Limit_FieldTerminalPathArrayItemValue) ContainsValue(source *Limit) bool {
   860  	slice := fpaiv.Limit_FieldTerminalPath.Get(source)
   861  	for _, v := range slice {
   862  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
   863  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
   864  				return true
   865  			}
   866  		} else if reflect.DeepEqual(v, fpaiv.value) {
   867  			return true
   868  		}
   869  	}
   870  	return false
   871  }
   872  
   873  type Limit_FieldSubPathArrayItemValue struct {
   874  	Limit_FieldPath
   875  	subPathItemValue gotenobject.FieldPathArrayItemValue
   876  }
   877  
   878  // GetRawValue returns stored array item value
   879  func (fpaivs *Limit_FieldSubPathArrayItemValue) GetRawItemValue() interface{} {
   880  	return fpaivs.subPathItemValue.GetRawItemValue()
   881  }
   882  func (fpaivs *Limit_FieldSubPathArrayItemValue) AsMetadataPathItemValue() (meta.Meta_FieldPathArrayItemValue, bool) {
   883  	res, ok := fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue)
   884  	return res, ok
   885  }
   886  
   887  // Contains returns a boolean indicating if value that is being held is present in given 'Limit'
   888  func (fpaivs *Limit_FieldSubPathArrayItemValue) ContainsValue(source *Limit) bool {
   889  	switch fpaivs.Selector() {
   890  	case Limit_FieldPathSelectorMetadata:
   891  		return fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue).ContainsValue(source.GetMetadata())
   892  	default:
   893  		panic(fmt.Sprintf("Invalid selector for Limit: %d", fpaivs.Selector()))
   894  	}
   895  }
   896  
   897  // Limit_FieldPathArrayOfValues allows storing slice of values for Limit fields according to their type
   898  type Limit_FieldPathArrayOfValues interface {
   899  	gotenobject.FieldPathArrayOfValues
   900  	Limit_FieldPath
   901  }
   902  
   903  func ParseLimit_FieldPathArrayOfValues(pathStr, valuesStr string) (Limit_FieldPathArrayOfValues, error) {
   904  	fp, err := ParseLimit_FieldPath(pathStr)
   905  	if err != nil {
   906  		return nil, err
   907  	}
   908  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
   909  	if err != nil {
   910  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Limit field path array of values from %s: %v", valuesStr, err)
   911  	}
   912  	return fpaov.(Limit_FieldPathArrayOfValues), nil
   913  }
   914  
   915  func MustParseLimit_FieldPathArrayOfValues(pathStr, valuesStr string) Limit_FieldPathArrayOfValues {
   916  	fpaov, err := ParseLimit_FieldPathArrayOfValues(pathStr, valuesStr)
   917  	if err != nil {
   918  		panic(err)
   919  	}
   920  	return fpaov
   921  }
   922  
   923  type Limit_FieldTerminalPathArrayOfValues struct {
   924  	Limit_FieldTerminalPath
   925  	values interface{}
   926  }
   927  
   928  var _ Limit_FieldPathArrayOfValues = (*Limit_FieldTerminalPathArrayOfValues)(nil)
   929  
   930  func (fpaov *Limit_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
   931  	switch fpaov.selector {
   932  	case Limit_FieldPathSelectorName:
   933  		for _, v := range fpaov.values.([]*Name) {
   934  			values = append(values, v)
   935  		}
   936  	case Limit_FieldPathSelectorService:
   937  		for _, v := range fpaov.values.([]*meta_service.Reference) {
   938  			values = append(values, v)
   939  		}
   940  	case Limit_FieldPathSelectorResource:
   941  		for _, v := range fpaov.values.([]*meta_resource.Reference) {
   942  			values = append(values, v)
   943  		}
   944  	case Limit_FieldPathSelectorRegion:
   945  		for _, v := range fpaov.values.([]string) {
   946  			values = append(values, v)
   947  		}
   948  	case Limit_FieldPathSelectorConfiguredLimit:
   949  		for _, v := range fpaov.values.([]int64) {
   950  			values = append(values, v)
   951  		}
   952  	case Limit_FieldPathSelectorActiveLimit:
   953  		for _, v := range fpaov.values.([]int64) {
   954  			values = append(values, v)
   955  		}
   956  	case Limit_FieldPathSelectorUsage:
   957  		for _, v := range fpaov.values.([]int64) {
   958  			values = append(values, v)
   959  		}
   960  	case Limit_FieldPathSelectorSource:
   961  		for _, v := range fpaov.values.([]*limit_pool.Reference) {
   962  			values = append(values, v)
   963  		}
   964  	case Limit_FieldPathSelectorMetadata:
   965  		for _, v := range fpaov.values.([]*meta.Meta) {
   966  			values = append(values, v)
   967  		}
   968  	}
   969  	return
   970  }
   971  func (fpaov *Limit_FieldTerminalPathArrayOfValues) AsNameArrayOfValues() ([]*Name, bool) {
   972  	res, ok := fpaov.values.([]*Name)
   973  	return res, ok
   974  }
   975  func (fpaov *Limit_FieldTerminalPathArrayOfValues) AsServiceArrayOfValues() ([]*meta_service.Reference, bool) {
   976  	res, ok := fpaov.values.([]*meta_service.Reference)
   977  	return res, ok
   978  }
   979  func (fpaov *Limit_FieldTerminalPathArrayOfValues) AsResourceArrayOfValues() ([]*meta_resource.Reference, bool) {
   980  	res, ok := fpaov.values.([]*meta_resource.Reference)
   981  	return res, ok
   982  }
   983  func (fpaov *Limit_FieldTerminalPathArrayOfValues) AsRegionArrayOfValues() ([]string, bool) {
   984  	res, ok := fpaov.values.([]string)
   985  	return res, ok
   986  }
   987  func (fpaov *Limit_FieldTerminalPathArrayOfValues) AsConfiguredLimitArrayOfValues() ([]int64, bool) {
   988  	res, ok := fpaov.values.([]int64)
   989  	return res, ok
   990  }
   991  func (fpaov *Limit_FieldTerminalPathArrayOfValues) AsActiveLimitArrayOfValues() ([]int64, bool) {
   992  	res, ok := fpaov.values.([]int64)
   993  	return res, ok
   994  }
   995  func (fpaov *Limit_FieldTerminalPathArrayOfValues) AsUsageArrayOfValues() ([]int64, bool) {
   996  	res, ok := fpaov.values.([]int64)
   997  	return res, ok
   998  }
   999  func (fpaov *Limit_FieldTerminalPathArrayOfValues) AsSourceArrayOfValues() ([]*limit_pool.Reference, bool) {
  1000  	res, ok := fpaov.values.([]*limit_pool.Reference)
  1001  	return res, ok
  1002  }
  1003  func (fpaov *Limit_FieldTerminalPathArrayOfValues) AsMetadataArrayOfValues() ([]*meta.Meta, bool) {
  1004  	res, ok := fpaov.values.([]*meta.Meta)
  1005  	return res, ok
  1006  }
  1007  
  1008  type Limit_FieldSubPathArrayOfValues struct {
  1009  	Limit_FieldPath
  1010  	subPathArrayOfValues gotenobject.FieldPathArrayOfValues
  1011  }
  1012  
  1013  var _ Limit_FieldPathArrayOfValues = (*Limit_FieldSubPathArrayOfValues)(nil)
  1014  
  1015  func (fpsaov *Limit_FieldSubPathArrayOfValues) GetRawValues() []interface{} {
  1016  	return fpsaov.subPathArrayOfValues.GetRawValues()
  1017  }
  1018  func (fpsaov *Limit_FieldSubPathArrayOfValues) AsMetadataPathArrayOfValues() (meta.Meta_FieldPathArrayOfValues, bool) {
  1019  	res, ok := fpsaov.subPathArrayOfValues.(meta.Meta_FieldPathArrayOfValues)
  1020  	return res, ok
  1021  }