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

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/limits/proto/v1/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/v1/project"
    27  	limit_pool "github.com/cloudwan/edgelq-sdk/limits/resources/v1/limit_pool"
    28  	meta_resource "github.com/cloudwan/goten-sdk/meta-service/resources/v1/resource"
    29  	meta_service "github.com/cloudwan/goten-sdk/meta-service/resources/v1/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_FieldPathSelectorMetadata        Limit_FieldPathSelector = 1
    81  	Limit_FieldPathSelectorService         Limit_FieldPathSelector = 2
    82  	Limit_FieldPathSelectorResource        Limit_FieldPathSelector = 3
    83  	Limit_FieldPathSelectorRegion          Limit_FieldPathSelector = 4
    84  	Limit_FieldPathSelectorConfiguredLimit Limit_FieldPathSelector = 5
    85  	Limit_FieldPathSelectorActiveLimit     Limit_FieldPathSelector = 6
    86  	Limit_FieldPathSelectorUsage           Limit_FieldPathSelector = 7
    87  	Limit_FieldPathSelectorSources         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_FieldPathSelectorMetadata:
    95  		return "metadata"
    96  	case Limit_FieldPathSelectorService:
    97  		return "service"
    98  	case Limit_FieldPathSelectorResource:
    99  		return "resource"
   100  	case Limit_FieldPathSelectorRegion:
   101  		return "region"
   102  	case Limit_FieldPathSelectorConfiguredLimit:
   103  		return "configured_limit"
   104  	case Limit_FieldPathSelectorActiveLimit:
   105  		return "active_limit"
   106  	case Limit_FieldPathSelectorUsage:
   107  		return "usage"
   108  	case Limit_FieldPathSelectorSources:
   109  		return "sources"
   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 "metadata":
   124  			return &Limit_FieldTerminalPath{selector: Limit_FieldPathSelectorMetadata}, nil
   125  		case "service":
   126  			return &Limit_FieldTerminalPath{selector: Limit_FieldPathSelectorService}, nil
   127  		case "resource":
   128  			return &Limit_FieldTerminalPath{selector: Limit_FieldPathSelectorResource}, nil
   129  		case "region":
   130  			return &Limit_FieldTerminalPath{selector: Limit_FieldPathSelectorRegion}, nil
   131  		case "configured_limit", "configuredLimit", "configured-limit":
   132  			return &Limit_FieldTerminalPath{selector: Limit_FieldPathSelectorConfiguredLimit}, nil
   133  		case "active_limit", "activeLimit", "active-limit":
   134  			return &Limit_FieldTerminalPath{selector: Limit_FieldPathSelectorActiveLimit}, nil
   135  		case "usage":
   136  			return &Limit_FieldTerminalPath{selector: Limit_FieldPathSelectorUsage}, nil
   137  		case "sources":
   138  			return &Limit_FieldTerminalPath{selector: Limit_FieldPathSelectorSources}, 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_FieldPathSelectorMetadata:
   198  			if source.Metadata != nil {
   199  				values = append(values, source.Metadata)
   200  			}
   201  		case Limit_FieldPathSelectorService:
   202  			if source.Service != nil {
   203  				values = append(values, source.Service)
   204  			}
   205  		case Limit_FieldPathSelectorResource:
   206  			if source.Resource != nil {
   207  				values = append(values, source.Resource)
   208  			}
   209  		case Limit_FieldPathSelectorRegion:
   210  			values = append(values, source.Region)
   211  		case Limit_FieldPathSelectorConfiguredLimit:
   212  			values = append(values, source.ConfiguredLimit)
   213  		case Limit_FieldPathSelectorActiveLimit:
   214  			values = append(values, source.ActiveLimit)
   215  		case Limit_FieldPathSelectorUsage:
   216  			values = append(values, source.Usage)
   217  		case Limit_FieldPathSelectorSources:
   218  			for _, value := range source.GetSources() {
   219  				values = append(values, value)
   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_FieldPathSelectorMetadata:
   239  		res := source.GetMetadata()
   240  		return res, res != nil
   241  	case Limit_FieldPathSelectorService:
   242  		res := source.GetService()
   243  		return res, res != nil
   244  	case Limit_FieldPathSelectorResource:
   245  		res := source.GetResource()
   246  		return res, res != nil
   247  	case Limit_FieldPathSelectorRegion:
   248  		return source.GetRegion(), source != nil
   249  	case Limit_FieldPathSelectorConfiguredLimit:
   250  		return source.GetConfiguredLimit(), source != nil
   251  	case Limit_FieldPathSelectorActiveLimit:
   252  		return source.GetActiveLimit(), source != nil
   253  	case Limit_FieldPathSelectorUsage:
   254  		return source.GetUsage(), source != nil
   255  	case Limit_FieldPathSelectorSources:
   256  		res := source.GetSources()
   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_FieldPathSelectorMetadata:
   273  		return (*meta.Meta)(nil)
   274  	case Limit_FieldPathSelectorService:
   275  		return (*meta_service.Reference)(nil)
   276  	case Limit_FieldPathSelectorResource:
   277  		return (*meta_resource.Reference)(nil)
   278  	case Limit_FieldPathSelectorRegion:
   279  		return ""
   280  	case Limit_FieldPathSelectorConfiguredLimit:
   281  		return int64(0)
   282  	case Limit_FieldPathSelectorActiveLimit:
   283  		return int64(0)
   284  	case Limit_FieldPathSelectorUsage:
   285  		return int64(0)
   286  	case Limit_FieldPathSelectorSources:
   287  		return ([]*limit_pool.Reference)(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_FieldPathSelectorMetadata:
   299  			item.Metadata = nil
   300  		case Limit_FieldPathSelectorService:
   301  			item.Service = nil
   302  		case Limit_FieldPathSelectorResource:
   303  			item.Resource = nil
   304  		case Limit_FieldPathSelectorRegion:
   305  			item.Region = ""
   306  		case Limit_FieldPathSelectorConfiguredLimit:
   307  			item.ConfiguredLimit = int64(0)
   308  		case Limit_FieldPathSelectorActiveLimit:
   309  			item.ActiveLimit = int64(0)
   310  		case Limit_FieldPathSelectorUsage:
   311  			item.Usage = int64(0)
   312  		case Limit_FieldPathSelectorSources:
   313  			item.Sources = 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_FieldPathSelectorSources
   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_FieldPathSelectorMetadata:
   345  		return &Limit_FieldTerminalPathValue{Limit_FieldTerminalPath: *fp, value: value.(*meta.Meta)}
   346  	case Limit_FieldPathSelectorService:
   347  		return &Limit_FieldTerminalPathValue{Limit_FieldTerminalPath: *fp, value: value.(*meta_service.Reference)}
   348  	case Limit_FieldPathSelectorResource:
   349  		return &Limit_FieldTerminalPathValue{Limit_FieldTerminalPath: *fp, value: value.(*meta_resource.Reference)}
   350  	case Limit_FieldPathSelectorRegion:
   351  		return &Limit_FieldTerminalPathValue{Limit_FieldTerminalPath: *fp, value: value.(string)}
   352  	case Limit_FieldPathSelectorConfiguredLimit:
   353  		return &Limit_FieldTerminalPathValue{Limit_FieldTerminalPath: *fp, value: value.(int64)}
   354  	case Limit_FieldPathSelectorActiveLimit:
   355  		return &Limit_FieldTerminalPathValue{Limit_FieldTerminalPath: *fp, value: value.(int64)}
   356  	case Limit_FieldPathSelectorUsage:
   357  		return &Limit_FieldTerminalPathValue{Limit_FieldTerminalPath: *fp, value: value.(int64)}
   358  	case Limit_FieldPathSelectorSources:
   359  		return &Limit_FieldTerminalPathValue{Limit_FieldTerminalPath: *fp, value: value.([]*limit_pool.Reference)}
   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_FieldPathSelectorMetadata:
   375  		return &Limit_FieldTerminalPathArrayOfValues{Limit_FieldTerminalPath: *fp, values: values.([]*meta.Meta)}
   376  	case Limit_FieldPathSelectorService:
   377  		return &Limit_FieldTerminalPathArrayOfValues{Limit_FieldTerminalPath: *fp, values: values.([]*meta_service.Reference)}
   378  	case Limit_FieldPathSelectorResource:
   379  		return &Limit_FieldTerminalPathArrayOfValues{Limit_FieldTerminalPath: *fp, values: values.([]*meta_resource.Reference)}
   380  	case Limit_FieldPathSelectorRegion:
   381  		return &Limit_FieldTerminalPathArrayOfValues{Limit_FieldTerminalPath: *fp, values: values.([]string)}
   382  	case Limit_FieldPathSelectorConfiguredLimit:
   383  		return &Limit_FieldTerminalPathArrayOfValues{Limit_FieldTerminalPath: *fp, values: values.([]int64)}
   384  	case Limit_FieldPathSelectorActiveLimit:
   385  		return &Limit_FieldTerminalPathArrayOfValues{Limit_FieldTerminalPath: *fp, values: values.([]int64)}
   386  	case Limit_FieldPathSelectorUsage:
   387  		return &Limit_FieldTerminalPathArrayOfValues{Limit_FieldTerminalPath: *fp, values: values.([]int64)}
   388  	case Limit_FieldPathSelectorSources:
   389  		return &Limit_FieldTerminalPathArrayOfValues{Limit_FieldTerminalPath: *fp, values: values.([][]*limit_pool.Reference)}
   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  	case Limit_FieldPathSelectorSources:
   403  		return &Limit_FieldTerminalPathArrayItemValue{Limit_FieldTerminalPath: *fp, value: value.(*limit_pool.Reference)}
   404  	default:
   405  		panic(fmt.Sprintf("Invalid selector for Limit: %d", fp.selector))
   406  	}
   407  }
   408  
   409  func (fp *Limit_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   410  	return fp.WithIArrayItemValue(value)
   411  }
   412  
   413  type Limit_FieldSubPath struct {
   414  	selector Limit_FieldPathSelector
   415  	subPath  gotenobject.FieldPath
   416  }
   417  
   418  var _ Limit_FieldPath = (*Limit_FieldSubPath)(nil)
   419  
   420  func (fps *Limit_FieldSubPath) Selector() Limit_FieldPathSelector {
   421  	return fps.selector
   422  }
   423  func (fps *Limit_FieldSubPath) AsMetadataSubPath() (meta.Meta_FieldPath, bool) {
   424  	res, ok := fps.subPath.(meta.Meta_FieldPath)
   425  	return res, ok
   426  }
   427  
   428  // String returns path representation in proto convention
   429  func (fps *Limit_FieldSubPath) String() string {
   430  	return fps.selector.String() + "." + fps.subPath.String()
   431  }
   432  
   433  // JSONString returns path representation is JSON convention
   434  func (fps *Limit_FieldSubPath) JSONString() string {
   435  	return strcase.ToLowerCamel(fps.selector.String()) + "." + fps.subPath.JSONString()
   436  }
   437  
   438  // Get returns all values pointed by selected field from source Limit
   439  func (fps *Limit_FieldSubPath) Get(source *Limit) (values []interface{}) {
   440  	switch fps.selector {
   441  	case Limit_FieldPathSelectorMetadata:
   442  		values = append(values, fps.subPath.GetRaw(source.GetMetadata())...)
   443  	default:
   444  		panic(fmt.Sprintf("Invalid selector for Limit: %d", fps.selector))
   445  	}
   446  	return
   447  }
   448  
   449  func (fps *Limit_FieldSubPath) GetRaw(source proto.Message) []interface{} {
   450  	return fps.Get(source.(*Limit))
   451  }
   452  
   453  // GetSingle returns value of selected field from source Limit
   454  func (fps *Limit_FieldSubPath) GetSingle(source *Limit) (interface{}, bool) {
   455  	switch fps.selector {
   456  	case Limit_FieldPathSelectorMetadata:
   457  		if source.GetMetadata() == nil {
   458  			return nil, false
   459  		}
   460  		return fps.subPath.GetSingleRaw(source.GetMetadata())
   461  	default:
   462  		panic(fmt.Sprintf("Invalid selector for Limit: %d", fps.selector))
   463  	}
   464  }
   465  
   466  func (fps *Limit_FieldSubPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   467  	return fps.GetSingle(source.(*Limit))
   468  }
   469  
   470  // GetDefault returns a default value of the field type
   471  func (fps *Limit_FieldSubPath) GetDefault() interface{} {
   472  	return fps.subPath.GetDefault()
   473  }
   474  
   475  func (fps *Limit_FieldSubPath) ClearValue(item *Limit) {
   476  	if item != nil {
   477  		switch fps.selector {
   478  		case Limit_FieldPathSelectorMetadata:
   479  			fps.subPath.ClearValueRaw(item.Metadata)
   480  		default:
   481  			panic(fmt.Sprintf("Invalid selector for Limit: %d", fps.selector))
   482  		}
   483  	}
   484  }
   485  
   486  func (fps *Limit_FieldSubPath) ClearValueRaw(item proto.Message) {
   487  	fps.ClearValue(item.(*Limit))
   488  }
   489  
   490  // IsLeaf - whether field path is holds simple value
   491  func (fps *Limit_FieldSubPath) IsLeaf() bool {
   492  	return fps.subPath.IsLeaf()
   493  }
   494  
   495  func (fps *Limit_FieldSubPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   496  	iPaths := []gotenobject.FieldPath{&Limit_FieldTerminalPath{selector: fps.selector}}
   497  	iPaths = append(iPaths, fps.subPath.SplitIntoTerminalIPaths()...)
   498  	return iPaths
   499  }
   500  
   501  func (fps *Limit_FieldSubPath) WithIValue(value interface{}) Limit_FieldPathValue {
   502  	return &Limit_FieldSubPathValue{fps, fps.subPath.WithRawIValue(value)}
   503  }
   504  
   505  func (fps *Limit_FieldSubPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   506  	return fps.WithIValue(value)
   507  }
   508  
   509  func (fps *Limit_FieldSubPath) WithIArrayOfValues(values interface{}) Limit_FieldPathArrayOfValues {
   510  	return &Limit_FieldSubPathArrayOfValues{fps, fps.subPath.WithRawIArrayOfValues(values)}
   511  }
   512  
   513  func (fps *Limit_FieldSubPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   514  	return fps.WithIArrayOfValues(values)
   515  }
   516  
   517  func (fps *Limit_FieldSubPath) WithIArrayItemValue(value interface{}) Limit_FieldPathArrayItemValue {
   518  	return &Limit_FieldSubPathArrayItemValue{fps, fps.subPath.WithRawIArrayItemValue(value)}
   519  }
   520  
   521  func (fps *Limit_FieldSubPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   522  	return fps.WithIArrayItemValue(value)
   523  }
   524  
   525  // Limit_FieldPathValue allows storing values for Limit fields according to their type
   526  type Limit_FieldPathValue interface {
   527  	Limit_FieldPath
   528  	gotenobject.FieldPathValue
   529  	SetTo(target **Limit)
   530  	CompareWith(*Limit) (cmp int, comparable bool)
   531  }
   532  
   533  func ParseLimit_FieldPathValue(pathStr, valueStr string) (Limit_FieldPathValue, error) {
   534  	fp, err := ParseLimit_FieldPath(pathStr)
   535  	if err != nil {
   536  		return nil, err
   537  	}
   538  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
   539  	if err != nil {
   540  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Limit field path value from %s: %v", valueStr, err)
   541  	}
   542  	return fpv.(Limit_FieldPathValue), nil
   543  }
   544  
   545  func MustParseLimit_FieldPathValue(pathStr, valueStr string) Limit_FieldPathValue {
   546  	fpv, err := ParseLimit_FieldPathValue(pathStr, valueStr)
   547  	if err != nil {
   548  		panic(err)
   549  	}
   550  	return fpv
   551  }
   552  
   553  type Limit_FieldTerminalPathValue struct {
   554  	Limit_FieldTerminalPath
   555  	value interface{}
   556  }
   557  
   558  var _ Limit_FieldPathValue = (*Limit_FieldTerminalPathValue)(nil)
   559  
   560  // GetRawValue returns raw value stored under selected path for 'Limit' as interface{}
   561  func (fpv *Limit_FieldTerminalPathValue) GetRawValue() interface{} {
   562  	return fpv.value
   563  }
   564  func (fpv *Limit_FieldTerminalPathValue) AsNameValue() (*Name, bool) {
   565  	res, ok := fpv.value.(*Name)
   566  	return res, ok
   567  }
   568  func (fpv *Limit_FieldTerminalPathValue) AsMetadataValue() (*meta.Meta, bool) {
   569  	res, ok := fpv.value.(*meta.Meta)
   570  	return res, ok
   571  }
   572  func (fpv *Limit_FieldTerminalPathValue) AsServiceValue() (*meta_service.Reference, bool) {
   573  	res, ok := fpv.value.(*meta_service.Reference)
   574  	return res, ok
   575  }
   576  func (fpv *Limit_FieldTerminalPathValue) AsResourceValue() (*meta_resource.Reference, bool) {
   577  	res, ok := fpv.value.(*meta_resource.Reference)
   578  	return res, ok
   579  }
   580  func (fpv *Limit_FieldTerminalPathValue) AsRegionValue() (string, bool) {
   581  	res, ok := fpv.value.(string)
   582  	return res, ok
   583  }
   584  func (fpv *Limit_FieldTerminalPathValue) AsConfiguredLimitValue() (int64, bool) {
   585  	res, ok := fpv.value.(int64)
   586  	return res, ok
   587  }
   588  func (fpv *Limit_FieldTerminalPathValue) AsActiveLimitValue() (int64, bool) {
   589  	res, ok := fpv.value.(int64)
   590  	return res, ok
   591  }
   592  func (fpv *Limit_FieldTerminalPathValue) AsUsageValue() (int64, bool) {
   593  	res, ok := fpv.value.(int64)
   594  	return res, ok
   595  }
   596  func (fpv *Limit_FieldTerminalPathValue) AsSourcesValue() ([]*limit_pool.Reference, bool) {
   597  	res, ok := fpv.value.([]*limit_pool.Reference)
   598  	return res, ok
   599  }
   600  
   601  // SetTo stores value for selected field for object Limit
   602  func (fpv *Limit_FieldTerminalPathValue) SetTo(target **Limit) {
   603  	if *target == nil {
   604  		*target = new(Limit)
   605  	}
   606  	switch fpv.selector {
   607  	case Limit_FieldPathSelectorName:
   608  		(*target).Name = fpv.value.(*Name)
   609  	case Limit_FieldPathSelectorMetadata:
   610  		(*target).Metadata = fpv.value.(*meta.Meta)
   611  	case Limit_FieldPathSelectorService:
   612  		(*target).Service = fpv.value.(*meta_service.Reference)
   613  	case Limit_FieldPathSelectorResource:
   614  		(*target).Resource = fpv.value.(*meta_resource.Reference)
   615  	case Limit_FieldPathSelectorRegion:
   616  		(*target).Region = fpv.value.(string)
   617  	case Limit_FieldPathSelectorConfiguredLimit:
   618  		(*target).ConfiguredLimit = fpv.value.(int64)
   619  	case Limit_FieldPathSelectorActiveLimit:
   620  		(*target).ActiveLimit = fpv.value.(int64)
   621  	case Limit_FieldPathSelectorUsage:
   622  		(*target).Usage = fpv.value.(int64)
   623  	case Limit_FieldPathSelectorSources:
   624  		(*target).Sources = fpv.value.([]*limit_pool.Reference)
   625  	default:
   626  		panic(fmt.Sprintf("Invalid selector for Limit: %d", fpv.selector))
   627  	}
   628  }
   629  
   630  func (fpv *Limit_FieldTerminalPathValue) SetToRaw(target proto.Message) {
   631  	typedObject := target.(*Limit)
   632  	fpv.SetTo(&typedObject)
   633  }
   634  
   635  // CompareWith compares value in the 'Limit_FieldTerminalPathValue' with the value under path in 'Limit'.
   636  func (fpv *Limit_FieldTerminalPathValue) CompareWith(source *Limit) (int, bool) {
   637  	switch fpv.selector {
   638  	case Limit_FieldPathSelectorName:
   639  		leftValue := fpv.value.(*Name)
   640  		rightValue := source.GetName()
   641  		if leftValue == nil {
   642  			if rightValue != nil {
   643  				return -1, true
   644  			}
   645  			return 0, true
   646  		}
   647  		if rightValue == nil {
   648  			return 1, true
   649  		}
   650  		if leftValue.String() == rightValue.String() {
   651  			return 0, true
   652  		} else if leftValue.String() < rightValue.String() {
   653  			return -1, true
   654  		} else {
   655  			return 1, true
   656  		}
   657  	case Limit_FieldPathSelectorMetadata:
   658  		return 0, false
   659  	case Limit_FieldPathSelectorService:
   660  		leftValue := fpv.value.(*meta_service.Reference)
   661  		rightValue := source.GetService()
   662  		if leftValue == nil {
   663  			if rightValue != nil {
   664  				return -1, true
   665  			}
   666  			return 0, true
   667  		}
   668  		if rightValue == nil {
   669  			return 1, true
   670  		}
   671  		if leftValue.String() == rightValue.String() {
   672  			return 0, true
   673  		} else if leftValue.String() < rightValue.String() {
   674  			return -1, true
   675  		} else {
   676  			return 1, true
   677  		}
   678  	case Limit_FieldPathSelectorResource:
   679  		leftValue := fpv.value.(*meta_resource.Reference)
   680  		rightValue := source.GetResource()
   681  		if leftValue == nil {
   682  			if rightValue != nil {
   683  				return -1, true
   684  			}
   685  			return 0, true
   686  		}
   687  		if rightValue == nil {
   688  			return 1, true
   689  		}
   690  		if leftValue.String() == rightValue.String() {
   691  			return 0, true
   692  		} else if leftValue.String() < rightValue.String() {
   693  			return -1, true
   694  		} else {
   695  			return 1, true
   696  		}
   697  	case Limit_FieldPathSelectorRegion:
   698  		leftValue := fpv.value.(string)
   699  		rightValue := source.GetRegion()
   700  		if (leftValue) == (rightValue) {
   701  			return 0, true
   702  		} else if (leftValue) < (rightValue) {
   703  			return -1, true
   704  		} else {
   705  			return 1, true
   706  		}
   707  	case Limit_FieldPathSelectorConfiguredLimit:
   708  		leftValue := fpv.value.(int64)
   709  		rightValue := source.GetConfiguredLimit()
   710  		if (leftValue) == (rightValue) {
   711  			return 0, true
   712  		} else if (leftValue) < (rightValue) {
   713  			return -1, true
   714  		} else {
   715  			return 1, true
   716  		}
   717  	case Limit_FieldPathSelectorActiveLimit:
   718  		leftValue := fpv.value.(int64)
   719  		rightValue := source.GetActiveLimit()
   720  		if (leftValue) == (rightValue) {
   721  			return 0, true
   722  		} else if (leftValue) < (rightValue) {
   723  			return -1, true
   724  		} else {
   725  			return 1, true
   726  		}
   727  	case Limit_FieldPathSelectorUsage:
   728  		leftValue := fpv.value.(int64)
   729  		rightValue := source.GetUsage()
   730  		if (leftValue) == (rightValue) {
   731  			return 0, true
   732  		} else if (leftValue) < (rightValue) {
   733  			return -1, true
   734  		} else {
   735  			return 1, true
   736  		}
   737  	case Limit_FieldPathSelectorSources:
   738  		return 0, false
   739  	default:
   740  		panic(fmt.Sprintf("Invalid selector for Limit: %d", fpv.selector))
   741  	}
   742  }
   743  
   744  func (fpv *Limit_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
   745  	return fpv.CompareWith(source.(*Limit))
   746  }
   747  
   748  type Limit_FieldSubPathValue struct {
   749  	Limit_FieldPath
   750  	subPathValue gotenobject.FieldPathValue
   751  }
   752  
   753  var _ Limit_FieldPathValue = (*Limit_FieldSubPathValue)(nil)
   754  
   755  func (fpvs *Limit_FieldSubPathValue) AsMetadataPathValue() (meta.Meta_FieldPathValue, bool) {
   756  	res, ok := fpvs.subPathValue.(meta.Meta_FieldPathValue)
   757  	return res, ok
   758  }
   759  
   760  func (fpvs *Limit_FieldSubPathValue) SetTo(target **Limit) {
   761  	if *target == nil {
   762  		*target = new(Limit)
   763  	}
   764  	switch fpvs.Selector() {
   765  	case Limit_FieldPathSelectorMetadata:
   766  		fpvs.subPathValue.(meta.Meta_FieldPathValue).SetTo(&(*target).Metadata)
   767  	default:
   768  		panic(fmt.Sprintf("Invalid selector for Limit: %d", fpvs.Selector()))
   769  	}
   770  }
   771  
   772  func (fpvs *Limit_FieldSubPathValue) SetToRaw(target proto.Message) {
   773  	typedObject := target.(*Limit)
   774  	fpvs.SetTo(&typedObject)
   775  }
   776  
   777  func (fpvs *Limit_FieldSubPathValue) GetRawValue() interface{} {
   778  	return fpvs.subPathValue.GetRawValue()
   779  }
   780  
   781  func (fpvs *Limit_FieldSubPathValue) CompareWith(source *Limit) (int, bool) {
   782  	switch fpvs.Selector() {
   783  	case Limit_FieldPathSelectorMetadata:
   784  		return fpvs.subPathValue.(meta.Meta_FieldPathValue).CompareWith(source.GetMetadata())
   785  	default:
   786  		panic(fmt.Sprintf("Invalid selector for Limit: %d", fpvs.Selector()))
   787  	}
   788  }
   789  
   790  func (fpvs *Limit_FieldSubPathValue) CompareWithRaw(source proto.Message) (int, bool) {
   791  	return fpvs.CompareWith(source.(*Limit))
   792  }
   793  
   794  // Limit_FieldPathArrayItemValue allows storing single item in Path-specific values for Limit according to their type
   795  // Present only for array (repeated) types.
   796  type Limit_FieldPathArrayItemValue interface {
   797  	gotenobject.FieldPathArrayItemValue
   798  	Limit_FieldPath
   799  	ContainsValue(*Limit) bool
   800  }
   801  
   802  // ParseLimit_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
   803  func ParseLimit_FieldPathArrayItemValue(pathStr, valueStr string) (Limit_FieldPathArrayItemValue, error) {
   804  	fp, err := ParseLimit_FieldPath(pathStr)
   805  	if err != nil {
   806  		return nil, err
   807  	}
   808  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
   809  	if err != nil {
   810  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Limit field path array item value from %s: %v", valueStr, err)
   811  	}
   812  	return fpaiv.(Limit_FieldPathArrayItemValue), nil
   813  }
   814  
   815  func MustParseLimit_FieldPathArrayItemValue(pathStr, valueStr string) Limit_FieldPathArrayItemValue {
   816  	fpaiv, err := ParseLimit_FieldPathArrayItemValue(pathStr, valueStr)
   817  	if err != nil {
   818  		panic(err)
   819  	}
   820  	return fpaiv
   821  }
   822  
   823  type Limit_FieldTerminalPathArrayItemValue struct {
   824  	Limit_FieldTerminalPath
   825  	value interface{}
   826  }
   827  
   828  var _ Limit_FieldPathArrayItemValue = (*Limit_FieldTerminalPathArrayItemValue)(nil)
   829  
   830  // GetRawValue returns stored element value for array in object Limit as interface{}
   831  func (fpaiv *Limit_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
   832  	return fpaiv.value
   833  }
   834  func (fpaiv *Limit_FieldTerminalPathArrayItemValue) AsSourcesItemValue() (*limit_pool.Reference, bool) {
   835  	res, ok := fpaiv.value.(*limit_pool.Reference)
   836  	return res, ok
   837  }
   838  
   839  func (fpaiv *Limit_FieldTerminalPathArrayItemValue) GetSingle(source *Limit) (interface{}, bool) {
   840  	return nil, false
   841  }
   842  
   843  func (fpaiv *Limit_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
   844  	return fpaiv.GetSingle(source.(*Limit))
   845  }
   846  
   847  // Contains returns a boolean indicating if value that is being held is present in given 'Limit'
   848  func (fpaiv *Limit_FieldTerminalPathArrayItemValue) ContainsValue(source *Limit) bool {
   849  	slice := fpaiv.Limit_FieldTerminalPath.Get(source)
   850  	for _, v := range slice {
   851  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
   852  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
   853  				return true
   854  			}
   855  		} else if reflect.DeepEqual(v, fpaiv.value) {
   856  			return true
   857  		}
   858  	}
   859  	return false
   860  }
   861  
   862  type Limit_FieldSubPathArrayItemValue struct {
   863  	Limit_FieldPath
   864  	subPathItemValue gotenobject.FieldPathArrayItemValue
   865  }
   866  
   867  // GetRawValue returns stored array item value
   868  func (fpaivs *Limit_FieldSubPathArrayItemValue) GetRawItemValue() interface{} {
   869  	return fpaivs.subPathItemValue.GetRawItemValue()
   870  }
   871  func (fpaivs *Limit_FieldSubPathArrayItemValue) AsMetadataPathItemValue() (meta.Meta_FieldPathArrayItemValue, bool) {
   872  	res, ok := fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue)
   873  	return res, ok
   874  }
   875  
   876  // Contains returns a boolean indicating if value that is being held is present in given 'Limit'
   877  func (fpaivs *Limit_FieldSubPathArrayItemValue) ContainsValue(source *Limit) bool {
   878  	switch fpaivs.Selector() {
   879  	case Limit_FieldPathSelectorMetadata:
   880  		return fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue).ContainsValue(source.GetMetadata())
   881  	default:
   882  		panic(fmt.Sprintf("Invalid selector for Limit: %d", fpaivs.Selector()))
   883  	}
   884  }
   885  
   886  // Limit_FieldPathArrayOfValues allows storing slice of values for Limit fields according to their type
   887  type Limit_FieldPathArrayOfValues interface {
   888  	gotenobject.FieldPathArrayOfValues
   889  	Limit_FieldPath
   890  }
   891  
   892  func ParseLimit_FieldPathArrayOfValues(pathStr, valuesStr string) (Limit_FieldPathArrayOfValues, error) {
   893  	fp, err := ParseLimit_FieldPath(pathStr)
   894  	if err != nil {
   895  		return nil, err
   896  	}
   897  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
   898  	if err != nil {
   899  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Limit field path array of values from %s: %v", valuesStr, err)
   900  	}
   901  	return fpaov.(Limit_FieldPathArrayOfValues), nil
   902  }
   903  
   904  func MustParseLimit_FieldPathArrayOfValues(pathStr, valuesStr string) Limit_FieldPathArrayOfValues {
   905  	fpaov, err := ParseLimit_FieldPathArrayOfValues(pathStr, valuesStr)
   906  	if err != nil {
   907  		panic(err)
   908  	}
   909  	return fpaov
   910  }
   911  
   912  type Limit_FieldTerminalPathArrayOfValues struct {
   913  	Limit_FieldTerminalPath
   914  	values interface{}
   915  }
   916  
   917  var _ Limit_FieldPathArrayOfValues = (*Limit_FieldTerminalPathArrayOfValues)(nil)
   918  
   919  func (fpaov *Limit_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
   920  	switch fpaov.selector {
   921  	case Limit_FieldPathSelectorName:
   922  		for _, v := range fpaov.values.([]*Name) {
   923  			values = append(values, v)
   924  		}
   925  	case Limit_FieldPathSelectorMetadata:
   926  		for _, v := range fpaov.values.([]*meta.Meta) {
   927  			values = append(values, v)
   928  		}
   929  	case Limit_FieldPathSelectorService:
   930  		for _, v := range fpaov.values.([]*meta_service.Reference) {
   931  			values = append(values, v)
   932  		}
   933  	case Limit_FieldPathSelectorResource:
   934  		for _, v := range fpaov.values.([]*meta_resource.Reference) {
   935  			values = append(values, v)
   936  		}
   937  	case Limit_FieldPathSelectorRegion:
   938  		for _, v := range fpaov.values.([]string) {
   939  			values = append(values, v)
   940  		}
   941  	case Limit_FieldPathSelectorConfiguredLimit:
   942  		for _, v := range fpaov.values.([]int64) {
   943  			values = append(values, v)
   944  		}
   945  	case Limit_FieldPathSelectorActiveLimit:
   946  		for _, v := range fpaov.values.([]int64) {
   947  			values = append(values, v)
   948  		}
   949  	case Limit_FieldPathSelectorUsage:
   950  		for _, v := range fpaov.values.([]int64) {
   951  			values = append(values, v)
   952  		}
   953  	case Limit_FieldPathSelectorSources:
   954  		for _, v := range fpaov.values.([][]*limit_pool.Reference) {
   955  			values = append(values, v)
   956  		}
   957  	}
   958  	return
   959  }
   960  func (fpaov *Limit_FieldTerminalPathArrayOfValues) AsNameArrayOfValues() ([]*Name, bool) {
   961  	res, ok := fpaov.values.([]*Name)
   962  	return res, ok
   963  }
   964  func (fpaov *Limit_FieldTerminalPathArrayOfValues) AsMetadataArrayOfValues() ([]*meta.Meta, bool) {
   965  	res, ok := fpaov.values.([]*meta.Meta)
   966  	return res, ok
   967  }
   968  func (fpaov *Limit_FieldTerminalPathArrayOfValues) AsServiceArrayOfValues() ([]*meta_service.Reference, bool) {
   969  	res, ok := fpaov.values.([]*meta_service.Reference)
   970  	return res, ok
   971  }
   972  func (fpaov *Limit_FieldTerminalPathArrayOfValues) AsResourceArrayOfValues() ([]*meta_resource.Reference, bool) {
   973  	res, ok := fpaov.values.([]*meta_resource.Reference)
   974  	return res, ok
   975  }
   976  func (fpaov *Limit_FieldTerminalPathArrayOfValues) AsRegionArrayOfValues() ([]string, bool) {
   977  	res, ok := fpaov.values.([]string)
   978  	return res, ok
   979  }
   980  func (fpaov *Limit_FieldTerminalPathArrayOfValues) AsConfiguredLimitArrayOfValues() ([]int64, bool) {
   981  	res, ok := fpaov.values.([]int64)
   982  	return res, ok
   983  }
   984  func (fpaov *Limit_FieldTerminalPathArrayOfValues) AsActiveLimitArrayOfValues() ([]int64, bool) {
   985  	res, ok := fpaov.values.([]int64)
   986  	return res, ok
   987  }
   988  func (fpaov *Limit_FieldTerminalPathArrayOfValues) AsUsageArrayOfValues() ([]int64, bool) {
   989  	res, ok := fpaov.values.([]int64)
   990  	return res, ok
   991  }
   992  func (fpaov *Limit_FieldTerminalPathArrayOfValues) AsSourcesArrayOfValues() ([][]*limit_pool.Reference, bool) {
   993  	res, ok := fpaov.values.([][]*limit_pool.Reference)
   994  	return res, ok
   995  }
   996  
   997  type Limit_FieldSubPathArrayOfValues struct {
   998  	Limit_FieldPath
   999  	subPathArrayOfValues gotenobject.FieldPathArrayOfValues
  1000  }
  1001  
  1002  var _ Limit_FieldPathArrayOfValues = (*Limit_FieldSubPathArrayOfValues)(nil)
  1003  
  1004  func (fpsaov *Limit_FieldSubPathArrayOfValues) GetRawValues() []interface{} {
  1005  	return fpsaov.subPathArrayOfValues.GetRawValues()
  1006  }
  1007  func (fpsaov *Limit_FieldSubPathArrayOfValues) AsMetadataPathArrayOfValues() (meta.Meta_FieldPathArrayOfValues, bool) {
  1008  	res, ok := fpsaov.subPathArrayOfValues.(meta.Meta_FieldPathArrayOfValues)
  1009  	return res, ok
  1010  }