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

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/limits/proto/v1/plan.proto
     3  // DO NOT EDIT!!!
     4  
     5  package plan
     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_iam_common "github.com/cloudwan/edgelq-sdk/iam/resources/v1/common"
    27  	iam_organization "github.com/cloudwan/edgelq-sdk/iam/resources/v1/organization"
    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_iam_common.PCR{}
    54  	_ = &iam_organization.Organization{}
    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 Plan_FieldPath interface {
    63  	gotenobject.FieldPath
    64  	Selector() Plan_FieldPathSelector
    65  	Get(source *Plan) []interface{}
    66  	GetSingle(source *Plan) (interface{}, bool)
    67  	ClearValue(item *Plan)
    68  
    69  	// Those methods build corresponding Plan_FieldPathValue
    70  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
    71  	WithIValue(value interface{}) Plan_FieldPathValue
    72  	WithIArrayOfValues(values interface{}) Plan_FieldPathArrayOfValues
    73  	WithIArrayItemValue(value interface{}) Plan_FieldPathArrayItemValue
    74  }
    75  
    76  type Plan_FieldPathSelector int32
    77  
    78  const (
    79  	Plan_FieldPathSelectorName           Plan_FieldPathSelector = 0
    80  	Plan_FieldPathSelectorMetadata       Plan_FieldPathSelector = 1
    81  	Plan_FieldPathSelectorDisplayName    Plan_FieldPathSelector = 2
    82  	Plan_FieldPathSelectorService        Plan_FieldPathSelector = 3
    83  	Plan_FieldPathSelectorResourceLimits Plan_FieldPathSelector = 4
    84  	Plan_FieldPathSelectorPlanLevel      Plan_FieldPathSelector = 5
    85  	Plan_FieldPathSelectorBusinessTier   Plan_FieldPathSelector = 6
    86  	Plan_FieldPathSelectorGeneration     Plan_FieldPathSelector = 7
    87  )
    88  
    89  func (s Plan_FieldPathSelector) String() string {
    90  	switch s {
    91  	case Plan_FieldPathSelectorName:
    92  		return "name"
    93  	case Plan_FieldPathSelectorMetadata:
    94  		return "metadata"
    95  	case Plan_FieldPathSelectorDisplayName:
    96  		return "display_name"
    97  	case Plan_FieldPathSelectorService:
    98  		return "service"
    99  	case Plan_FieldPathSelectorResourceLimits:
   100  		return "resource_limits"
   101  	case Plan_FieldPathSelectorPlanLevel:
   102  		return "plan_level"
   103  	case Plan_FieldPathSelectorBusinessTier:
   104  		return "business_tier"
   105  	case Plan_FieldPathSelectorGeneration:
   106  		return "generation"
   107  	default:
   108  		panic(fmt.Sprintf("Invalid selector for Plan: %d", s))
   109  	}
   110  }
   111  
   112  func BuildPlan_FieldPath(fp gotenobject.RawFieldPath) (Plan_FieldPath, error) {
   113  	if len(fp) == 0 {
   114  		return nil, status.Error(codes.InvalidArgument, "empty field path for object Plan")
   115  	}
   116  	if len(fp) == 1 {
   117  		switch fp[0] {
   118  		case "name":
   119  			return &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorName}, nil
   120  		case "metadata":
   121  			return &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorMetadata}, nil
   122  		case "display_name", "displayName", "display-name":
   123  			return &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorDisplayName}, nil
   124  		case "service":
   125  			return &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorService}, nil
   126  		case "resource_limits", "resourceLimits", "resource-limits":
   127  			return &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorResourceLimits}, nil
   128  		case "plan_level", "planLevel", "plan-level":
   129  			return &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorPlanLevel}, nil
   130  		case "business_tier", "businessTier", "business-tier":
   131  			return &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorBusinessTier}, nil
   132  		case "generation":
   133  			return &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorGeneration}, nil
   134  		}
   135  	} else {
   136  		switch fp[0] {
   137  		case "metadata":
   138  			if subpath, err := meta.BuildMeta_FieldPath(fp[1:]); err != nil {
   139  				return nil, err
   140  			} else {
   141  				return &Plan_FieldSubPath{selector: Plan_FieldPathSelectorMetadata, subPath: subpath}, nil
   142  			}
   143  		case "resource_limits", "resourceLimits", "resource-limits":
   144  			if subpath, err := BuildPlanLimitValue_FieldPath(fp[1:]); err != nil {
   145  				return nil, err
   146  			} else {
   147  				return &Plan_FieldSubPath{selector: Plan_FieldPathSelectorResourceLimits, subPath: subpath}, nil
   148  			}
   149  		}
   150  	}
   151  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Plan", fp)
   152  }
   153  
   154  func ParsePlan_FieldPath(rawField string) (Plan_FieldPath, error) {
   155  	fp, err := gotenobject.ParseRawFieldPath(rawField)
   156  	if err != nil {
   157  		return nil, err
   158  	}
   159  	return BuildPlan_FieldPath(fp)
   160  }
   161  
   162  func MustParsePlan_FieldPath(rawField string) Plan_FieldPath {
   163  	fp, err := ParsePlan_FieldPath(rawField)
   164  	if err != nil {
   165  		panic(err)
   166  	}
   167  	return fp
   168  }
   169  
   170  type Plan_FieldTerminalPath struct {
   171  	selector Plan_FieldPathSelector
   172  }
   173  
   174  var _ Plan_FieldPath = (*Plan_FieldTerminalPath)(nil)
   175  
   176  func (fp *Plan_FieldTerminalPath) Selector() Plan_FieldPathSelector {
   177  	return fp.selector
   178  }
   179  
   180  // String returns path representation in proto convention
   181  func (fp *Plan_FieldTerminalPath) String() string {
   182  	return fp.selector.String()
   183  }
   184  
   185  // JSONString returns path representation is JSON convention
   186  func (fp *Plan_FieldTerminalPath) JSONString() string {
   187  	return strcase.ToLowerCamel(fp.String())
   188  }
   189  
   190  // Get returns all values pointed by specific field from source Plan
   191  func (fp *Plan_FieldTerminalPath) Get(source *Plan) (values []interface{}) {
   192  	if source != nil {
   193  		switch fp.selector {
   194  		case Plan_FieldPathSelectorName:
   195  			if source.Name != nil {
   196  				values = append(values, source.Name)
   197  			}
   198  		case Plan_FieldPathSelectorMetadata:
   199  			if source.Metadata != nil {
   200  				values = append(values, source.Metadata)
   201  			}
   202  		case Plan_FieldPathSelectorDisplayName:
   203  			values = append(values, source.DisplayName)
   204  		case Plan_FieldPathSelectorService:
   205  			if source.Service != nil {
   206  				values = append(values, source.Service)
   207  			}
   208  		case Plan_FieldPathSelectorResourceLimits:
   209  			for _, value := range source.GetResourceLimits() {
   210  				values = append(values, value)
   211  			}
   212  		case Plan_FieldPathSelectorPlanLevel:
   213  			values = append(values, source.PlanLevel)
   214  		case Plan_FieldPathSelectorBusinessTier:
   215  			values = append(values, source.BusinessTier)
   216  		case Plan_FieldPathSelectorGeneration:
   217  			values = append(values, source.Generation)
   218  		default:
   219  			panic(fmt.Sprintf("Invalid selector for Plan: %d", fp.selector))
   220  		}
   221  	}
   222  	return
   223  }
   224  
   225  func (fp *Plan_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
   226  	return fp.Get(source.(*Plan))
   227  }
   228  
   229  // GetSingle returns value pointed by specific field of from source Plan
   230  func (fp *Plan_FieldTerminalPath) GetSingle(source *Plan) (interface{}, bool) {
   231  	switch fp.selector {
   232  	case Plan_FieldPathSelectorName:
   233  		res := source.GetName()
   234  		return res, res != nil
   235  	case Plan_FieldPathSelectorMetadata:
   236  		res := source.GetMetadata()
   237  		return res, res != nil
   238  	case Plan_FieldPathSelectorDisplayName:
   239  		return source.GetDisplayName(), source != nil
   240  	case Plan_FieldPathSelectorService:
   241  		res := source.GetService()
   242  		return res, res != nil
   243  	case Plan_FieldPathSelectorResourceLimits:
   244  		res := source.GetResourceLimits()
   245  		return res, res != nil
   246  	case Plan_FieldPathSelectorPlanLevel:
   247  		return source.GetPlanLevel(), source != nil
   248  	case Plan_FieldPathSelectorBusinessTier:
   249  		return source.GetBusinessTier(), source != nil
   250  	case Plan_FieldPathSelectorGeneration:
   251  		return source.GetGeneration(), source != nil
   252  	default:
   253  		panic(fmt.Sprintf("Invalid selector for Plan: %d", fp.selector))
   254  	}
   255  }
   256  
   257  func (fp *Plan_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   258  	return fp.GetSingle(source.(*Plan))
   259  }
   260  
   261  // GetDefault returns a default value of the field type
   262  func (fp *Plan_FieldTerminalPath) GetDefault() interface{} {
   263  	switch fp.selector {
   264  	case Plan_FieldPathSelectorName:
   265  		return (*Name)(nil)
   266  	case Plan_FieldPathSelectorMetadata:
   267  		return (*meta.Meta)(nil)
   268  	case Plan_FieldPathSelectorDisplayName:
   269  		return ""
   270  	case Plan_FieldPathSelectorService:
   271  		return (*meta_service.Reference)(nil)
   272  	case Plan_FieldPathSelectorResourceLimits:
   273  		return ([]*Plan_LimitValue)(nil)
   274  	case Plan_FieldPathSelectorPlanLevel:
   275  		return Plan_UNDEFINED
   276  	case Plan_FieldPathSelectorBusinessTier:
   277  		return iam_iam_common.BusinessTier_UNDEFINED
   278  	case Plan_FieldPathSelectorGeneration:
   279  		return int64(0)
   280  	default:
   281  		panic(fmt.Sprintf("Invalid selector for Plan: %d", fp.selector))
   282  	}
   283  }
   284  
   285  func (fp *Plan_FieldTerminalPath) ClearValue(item *Plan) {
   286  	if item != nil {
   287  		switch fp.selector {
   288  		case Plan_FieldPathSelectorName:
   289  			item.Name = nil
   290  		case Plan_FieldPathSelectorMetadata:
   291  			item.Metadata = nil
   292  		case Plan_FieldPathSelectorDisplayName:
   293  			item.DisplayName = ""
   294  		case Plan_FieldPathSelectorService:
   295  			item.Service = nil
   296  		case Plan_FieldPathSelectorResourceLimits:
   297  			item.ResourceLimits = nil
   298  		case Plan_FieldPathSelectorPlanLevel:
   299  			item.PlanLevel = Plan_UNDEFINED
   300  		case Plan_FieldPathSelectorBusinessTier:
   301  			item.BusinessTier = iam_iam_common.BusinessTier_UNDEFINED
   302  		case Plan_FieldPathSelectorGeneration:
   303  			item.Generation = int64(0)
   304  		default:
   305  			panic(fmt.Sprintf("Invalid selector for Plan: %d", fp.selector))
   306  		}
   307  	}
   308  }
   309  
   310  func (fp *Plan_FieldTerminalPath) ClearValueRaw(item proto.Message) {
   311  	fp.ClearValue(item.(*Plan))
   312  }
   313  
   314  // IsLeaf - whether field path is holds simple value
   315  func (fp *Plan_FieldTerminalPath) IsLeaf() bool {
   316  	return fp.selector == Plan_FieldPathSelectorName ||
   317  		fp.selector == Plan_FieldPathSelectorDisplayName ||
   318  		fp.selector == Plan_FieldPathSelectorService ||
   319  		fp.selector == Plan_FieldPathSelectorPlanLevel ||
   320  		fp.selector == Plan_FieldPathSelectorBusinessTier ||
   321  		fp.selector == Plan_FieldPathSelectorGeneration
   322  }
   323  
   324  func (fp *Plan_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   325  	return []gotenobject.FieldPath{fp}
   326  }
   327  
   328  func (fp *Plan_FieldTerminalPath) WithIValue(value interface{}) Plan_FieldPathValue {
   329  	switch fp.selector {
   330  	case Plan_FieldPathSelectorName:
   331  		return &Plan_FieldTerminalPathValue{Plan_FieldTerminalPath: *fp, value: value.(*Name)}
   332  	case Plan_FieldPathSelectorMetadata:
   333  		return &Plan_FieldTerminalPathValue{Plan_FieldTerminalPath: *fp, value: value.(*meta.Meta)}
   334  	case Plan_FieldPathSelectorDisplayName:
   335  		return &Plan_FieldTerminalPathValue{Plan_FieldTerminalPath: *fp, value: value.(string)}
   336  	case Plan_FieldPathSelectorService:
   337  		return &Plan_FieldTerminalPathValue{Plan_FieldTerminalPath: *fp, value: value.(*meta_service.Reference)}
   338  	case Plan_FieldPathSelectorResourceLimits:
   339  		return &Plan_FieldTerminalPathValue{Plan_FieldTerminalPath: *fp, value: value.([]*Plan_LimitValue)}
   340  	case Plan_FieldPathSelectorPlanLevel:
   341  		return &Plan_FieldTerminalPathValue{Plan_FieldTerminalPath: *fp, value: value.(Plan_PlanLevel)}
   342  	case Plan_FieldPathSelectorBusinessTier:
   343  		return &Plan_FieldTerminalPathValue{Plan_FieldTerminalPath: *fp, value: value.(iam_iam_common.BusinessTier)}
   344  	case Plan_FieldPathSelectorGeneration:
   345  		return &Plan_FieldTerminalPathValue{Plan_FieldTerminalPath: *fp, value: value.(int64)}
   346  	default:
   347  		panic(fmt.Sprintf("Invalid selector for Plan: %d", fp.selector))
   348  	}
   349  }
   350  
   351  func (fp *Plan_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   352  	return fp.WithIValue(value)
   353  }
   354  
   355  func (fp *Plan_FieldTerminalPath) WithIArrayOfValues(values interface{}) Plan_FieldPathArrayOfValues {
   356  	fpaov := &Plan_FieldTerminalPathArrayOfValues{Plan_FieldTerminalPath: *fp}
   357  	switch fp.selector {
   358  	case Plan_FieldPathSelectorName:
   359  		return &Plan_FieldTerminalPathArrayOfValues{Plan_FieldTerminalPath: *fp, values: values.([]*Name)}
   360  	case Plan_FieldPathSelectorMetadata:
   361  		return &Plan_FieldTerminalPathArrayOfValues{Plan_FieldTerminalPath: *fp, values: values.([]*meta.Meta)}
   362  	case Plan_FieldPathSelectorDisplayName:
   363  		return &Plan_FieldTerminalPathArrayOfValues{Plan_FieldTerminalPath: *fp, values: values.([]string)}
   364  	case Plan_FieldPathSelectorService:
   365  		return &Plan_FieldTerminalPathArrayOfValues{Plan_FieldTerminalPath: *fp, values: values.([]*meta_service.Reference)}
   366  	case Plan_FieldPathSelectorResourceLimits:
   367  		return &Plan_FieldTerminalPathArrayOfValues{Plan_FieldTerminalPath: *fp, values: values.([][]*Plan_LimitValue)}
   368  	case Plan_FieldPathSelectorPlanLevel:
   369  		return &Plan_FieldTerminalPathArrayOfValues{Plan_FieldTerminalPath: *fp, values: values.([]Plan_PlanLevel)}
   370  	case Plan_FieldPathSelectorBusinessTier:
   371  		return &Plan_FieldTerminalPathArrayOfValues{Plan_FieldTerminalPath: *fp, values: values.([]iam_iam_common.BusinessTier)}
   372  	case Plan_FieldPathSelectorGeneration:
   373  		return &Plan_FieldTerminalPathArrayOfValues{Plan_FieldTerminalPath: *fp, values: values.([]int64)}
   374  	default:
   375  		panic(fmt.Sprintf("Invalid selector for Plan: %d", fp.selector))
   376  	}
   377  	return fpaov
   378  }
   379  
   380  func (fp *Plan_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   381  	return fp.WithIArrayOfValues(values)
   382  }
   383  
   384  func (fp *Plan_FieldTerminalPath) WithIArrayItemValue(value interface{}) Plan_FieldPathArrayItemValue {
   385  	switch fp.selector {
   386  	case Plan_FieldPathSelectorResourceLimits:
   387  		return &Plan_FieldTerminalPathArrayItemValue{Plan_FieldTerminalPath: *fp, value: value.(*Plan_LimitValue)}
   388  	default:
   389  		panic(fmt.Sprintf("Invalid selector for Plan: %d", fp.selector))
   390  	}
   391  }
   392  
   393  func (fp *Plan_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   394  	return fp.WithIArrayItemValue(value)
   395  }
   396  
   397  type Plan_FieldSubPath struct {
   398  	selector Plan_FieldPathSelector
   399  	subPath  gotenobject.FieldPath
   400  }
   401  
   402  var _ Plan_FieldPath = (*Plan_FieldSubPath)(nil)
   403  
   404  func (fps *Plan_FieldSubPath) Selector() Plan_FieldPathSelector {
   405  	return fps.selector
   406  }
   407  func (fps *Plan_FieldSubPath) AsMetadataSubPath() (meta.Meta_FieldPath, bool) {
   408  	res, ok := fps.subPath.(meta.Meta_FieldPath)
   409  	return res, ok
   410  }
   411  func (fps *Plan_FieldSubPath) AsResourceLimitsSubPath() (PlanLimitValue_FieldPath, bool) {
   412  	res, ok := fps.subPath.(PlanLimitValue_FieldPath)
   413  	return res, ok
   414  }
   415  
   416  // String returns path representation in proto convention
   417  func (fps *Plan_FieldSubPath) String() string {
   418  	return fps.selector.String() + "." + fps.subPath.String()
   419  }
   420  
   421  // JSONString returns path representation is JSON convention
   422  func (fps *Plan_FieldSubPath) JSONString() string {
   423  	return strcase.ToLowerCamel(fps.selector.String()) + "." + fps.subPath.JSONString()
   424  }
   425  
   426  // Get returns all values pointed by selected field from source Plan
   427  func (fps *Plan_FieldSubPath) Get(source *Plan) (values []interface{}) {
   428  	switch fps.selector {
   429  	case Plan_FieldPathSelectorMetadata:
   430  		values = append(values, fps.subPath.GetRaw(source.GetMetadata())...)
   431  	case Plan_FieldPathSelectorResourceLimits:
   432  		for _, item := range source.GetResourceLimits() {
   433  			values = append(values, fps.subPath.GetRaw(item)...)
   434  		}
   435  	default:
   436  		panic(fmt.Sprintf("Invalid selector for Plan: %d", fps.selector))
   437  	}
   438  	return
   439  }
   440  
   441  func (fps *Plan_FieldSubPath) GetRaw(source proto.Message) []interface{} {
   442  	return fps.Get(source.(*Plan))
   443  }
   444  
   445  // GetSingle returns value of selected field from source Plan
   446  func (fps *Plan_FieldSubPath) GetSingle(source *Plan) (interface{}, bool) {
   447  	switch fps.selector {
   448  	case Plan_FieldPathSelectorMetadata:
   449  		if source.GetMetadata() == nil {
   450  			return nil, false
   451  		}
   452  		return fps.subPath.GetSingleRaw(source.GetMetadata())
   453  	case Plan_FieldPathSelectorResourceLimits:
   454  		if len(source.GetResourceLimits()) == 0 {
   455  			return nil, false
   456  		}
   457  		return fps.subPath.GetSingleRaw(source.GetResourceLimits()[0])
   458  	default:
   459  		panic(fmt.Sprintf("Invalid selector for Plan: %d", fps.selector))
   460  	}
   461  }
   462  
   463  func (fps *Plan_FieldSubPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   464  	return fps.GetSingle(source.(*Plan))
   465  }
   466  
   467  // GetDefault returns a default value of the field type
   468  func (fps *Plan_FieldSubPath) GetDefault() interface{} {
   469  	return fps.subPath.GetDefault()
   470  }
   471  
   472  func (fps *Plan_FieldSubPath) ClearValue(item *Plan) {
   473  	if item != nil {
   474  		switch fps.selector {
   475  		case Plan_FieldPathSelectorMetadata:
   476  			fps.subPath.ClearValueRaw(item.Metadata)
   477  		case Plan_FieldPathSelectorResourceLimits:
   478  			for _, subItem := range item.ResourceLimits {
   479  				fps.subPath.ClearValueRaw(subItem)
   480  			}
   481  		default:
   482  			panic(fmt.Sprintf("Invalid selector for Plan: %d", fps.selector))
   483  		}
   484  	}
   485  }
   486  
   487  func (fps *Plan_FieldSubPath) ClearValueRaw(item proto.Message) {
   488  	fps.ClearValue(item.(*Plan))
   489  }
   490  
   491  // IsLeaf - whether field path is holds simple value
   492  func (fps *Plan_FieldSubPath) IsLeaf() bool {
   493  	return fps.subPath.IsLeaf()
   494  }
   495  
   496  func (fps *Plan_FieldSubPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   497  	iPaths := []gotenobject.FieldPath{&Plan_FieldTerminalPath{selector: fps.selector}}
   498  	iPaths = append(iPaths, fps.subPath.SplitIntoTerminalIPaths()...)
   499  	return iPaths
   500  }
   501  
   502  func (fps *Plan_FieldSubPath) WithIValue(value interface{}) Plan_FieldPathValue {
   503  	return &Plan_FieldSubPathValue{fps, fps.subPath.WithRawIValue(value)}
   504  }
   505  
   506  func (fps *Plan_FieldSubPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   507  	return fps.WithIValue(value)
   508  }
   509  
   510  func (fps *Plan_FieldSubPath) WithIArrayOfValues(values interface{}) Plan_FieldPathArrayOfValues {
   511  	return &Plan_FieldSubPathArrayOfValues{fps, fps.subPath.WithRawIArrayOfValues(values)}
   512  }
   513  
   514  func (fps *Plan_FieldSubPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   515  	return fps.WithIArrayOfValues(values)
   516  }
   517  
   518  func (fps *Plan_FieldSubPath) WithIArrayItemValue(value interface{}) Plan_FieldPathArrayItemValue {
   519  	return &Plan_FieldSubPathArrayItemValue{fps, fps.subPath.WithRawIArrayItemValue(value)}
   520  }
   521  
   522  func (fps *Plan_FieldSubPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   523  	return fps.WithIArrayItemValue(value)
   524  }
   525  
   526  // Plan_FieldPathValue allows storing values for Plan fields according to their type
   527  type Plan_FieldPathValue interface {
   528  	Plan_FieldPath
   529  	gotenobject.FieldPathValue
   530  	SetTo(target **Plan)
   531  	CompareWith(*Plan) (cmp int, comparable bool)
   532  }
   533  
   534  func ParsePlan_FieldPathValue(pathStr, valueStr string) (Plan_FieldPathValue, error) {
   535  	fp, err := ParsePlan_FieldPath(pathStr)
   536  	if err != nil {
   537  		return nil, err
   538  	}
   539  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
   540  	if err != nil {
   541  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Plan field path value from %s: %v", valueStr, err)
   542  	}
   543  	return fpv.(Plan_FieldPathValue), nil
   544  }
   545  
   546  func MustParsePlan_FieldPathValue(pathStr, valueStr string) Plan_FieldPathValue {
   547  	fpv, err := ParsePlan_FieldPathValue(pathStr, valueStr)
   548  	if err != nil {
   549  		panic(err)
   550  	}
   551  	return fpv
   552  }
   553  
   554  type Plan_FieldTerminalPathValue struct {
   555  	Plan_FieldTerminalPath
   556  	value interface{}
   557  }
   558  
   559  var _ Plan_FieldPathValue = (*Plan_FieldTerminalPathValue)(nil)
   560  
   561  // GetRawValue returns raw value stored under selected path for 'Plan' as interface{}
   562  func (fpv *Plan_FieldTerminalPathValue) GetRawValue() interface{} {
   563  	return fpv.value
   564  }
   565  func (fpv *Plan_FieldTerminalPathValue) AsNameValue() (*Name, bool) {
   566  	res, ok := fpv.value.(*Name)
   567  	return res, ok
   568  }
   569  func (fpv *Plan_FieldTerminalPathValue) AsMetadataValue() (*meta.Meta, bool) {
   570  	res, ok := fpv.value.(*meta.Meta)
   571  	return res, ok
   572  }
   573  func (fpv *Plan_FieldTerminalPathValue) AsDisplayNameValue() (string, bool) {
   574  	res, ok := fpv.value.(string)
   575  	return res, ok
   576  }
   577  func (fpv *Plan_FieldTerminalPathValue) AsServiceValue() (*meta_service.Reference, bool) {
   578  	res, ok := fpv.value.(*meta_service.Reference)
   579  	return res, ok
   580  }
   581  func (fpv *Plan_FieldTerminalPathValue) AsResourceLimitsValue() ([]*Plan_LimitValue, bool) {
   582  	res, ok := fpv.value.([]*Plan_LimitValue)
   583  	return res, ok
   584  }
   585  func (fpv *Plan_FieldTerminalPathValue) AsPlanLevelValue() (Plan_PlanLevel, bool) {
   586  	res, ok := fpv.value.(Plan_PlanLevel)
   587  	return res, ok
   588  }
   589  func (fpv *Plan_FieldTerminalPathValue) AsBusinessTierValue() (iam_iam_common.BusinessTier, bool) {
   590  	res, ok := fpv.value.(iam_iam_common.BusinessTier)
   591  	return res, ok
   592  }
   593  func (fpv *Plan_FieldTerminalPathValue) AsGenerationValue() (int64, bool) {
   594  	res, ok := fpv.value.(int64)
   595  	return res, ok
   596  }
   597  
   598  // SetTo stores value for selected field for object Plan
   599  func (fpv *Plan_FieldTerminalPathValue) SetTo(target **Plan) {
   600  	if *target == nil {
   601  		*target = new(Plan)
   602  	}
   603  	switch fpv.selector {
   604  	case Plan_FieldPathSelectorName:
   605  		(*target).Name = fpv.value.(*Name)
   606  	case Plan_FieldPathSelectorMetadata:
   607  		(*target).Metadata = fpv.value.(*meta.Meta)
   608  	case Plan_FieldPathSelectorDisplayName:
   609  		(*target).DisplayName = fpv.value.(string)
   610  	case Plan_FieldPathSelectorService:
   611  		(*target).Service = fpv.value.(*meta_service.Reference)
   612  	case Plan_FieldPathSelectorResourceLimits:
   613  		(*target).ResourceLimits = fpv.value.([]*Plan_LimitValue)
   614  	case Plan_FieldPathSelectorPlanLevel:
   615  		(*target).PlanLevel = fpv.value.(Plan_PlanLevel)
   616  	case Plan_FieldPathSelectorBusinessTier:
   617  		(*target).BusinessTier = fpv.value.(iam_iam_common.BusinessTier)
   618  	case Plan_FieldPathSelectorGeneration:
   619  		(*target).Generation = fpv.value.(int64)
   620  	default:
   621  		panic(fmt.Sprintf("Invalid selector for Plan: %d", fpv.selector))
   622  	}
   623  }
   624  
   625  func (fpv *Plan_FieldTerminalPathValue) SetToRaw(target proto.Message) {
   626  	typedObject := target.(*Plan)
   627  	fpv.SetTo(&typedObject)
   628  }
   629  
   630  // CompareWith compares value in the 'Plan_FieldTerminalPathValue' with the value under path in 'Plan'.
   631  func (fpv *Plan_FieldTerminalPathValue) CompareWith(source *Plan) (int, bool) {
   632  	switch fpv.selector {
   633  	case Plan_FieldPathSelectorName:
   634  		leftValue := fpv.value.(*Name)
   635  		rightValue := source.GetName()
   636  		if leftValue == nil {
   637  			if rightValue != nil {
   638  				return -1, true
   639  			}
   640  			return 0, true
   641  		}
   642  		if rightValue == nil {
   643  			return 1, true
   644  		}
   645  		if leftValue.String() == rightValue.String() {
   646  			return 0, true
   647  		} else if leftValue.String() < rightValue.String() {
   648  			return -1, true
   649  		} else {
   650  			return 1, true
   651  		}
   652  	case Plan_FieldPathSelectorMetadata:
   653  		return 0, false
   654  	case Plan_FieldPathSelectorDisplayName:
   655  		leftValue := fpv.value.(string)
   656  		rightValue := source.GetDisplayName()
   657  		if (leftValue) == (rightValue) {
   658  			return 0, true
   659  		} else if (leftValue) < (rightValue) {
   660  			return -1, true
   661  		} else {
   662  			return 1, true
   663  		}
   664  	case Plan_FieldPathSelectorService:
   665  		leftValue := fpv.value.(*meta_service.Reference)
   666  		rightValue := source.GetService()
   667  		if leftValue == nil {
   668  			if rightValue != nil {
   669  				return -1, true
   670  			}
   671  			return 0, true
   672  		}
   673  		if rightValue == nil {
   674  			return 1, true
   675  		}
   676  		if leftValue.String() == rightValue.String() {
   677  			return 0, true
   678  		} else if leftValue.String() < rightValue.String() {
   679  			return -1, true
   680  		} else {
   681  			return 1, true
   682  		}
   683  	case Plan_FieldPathSelectorResourceLimits:
   684  		return 0, false
   685  	case Plan_FieldPathSelectorPlanLevel:
   686  		leftValue := fpv.value.(Plan_PlanLevel)
   687  		rightValue := source.GetPlanLevel()
   688  		if (leftValue) == (rightValue) {
   689  			return 0, true
   690  		} else if (leftValue) < (rightValue) {
   691  			return -1, true
   692  		} else {
   693  			return 1, true
   694  		}
   695  	case Plan_FieldPathSelectorBusinessTier:
   696  		leftValue := fpv.value.(iam_iam_common.BusinessTier)
   697  		rightValue := source.GetBusinessTier()
   698  		if (leftValue) == (rightValue) {
   699  			return 0, true
   700  		} else if (leftValue) < (rightValue) {
   701  			return -1, true
   702  		} else {
   703  			return 1, true
   704  		}
   705  	case Plan_FieldPathSelectorGeneration:
   706  		leftValue := fpv.value.(int64)
   707  		rightValue := source.GetGeneration()
   708  		if (leftValue) == (rightValue) {
   709  			return 0, true
   710  		} else if (leftValue) < (rightValue) {
   711  			return -1, true
   712  		} else {
   713  			return 1, true
   714  		}
   715  	default:
   716  		panic(fmt.Sprintf("Invalid selector for Plan: %d", fpv.selector))
   717  	}
   718  }
   719  
   720  func (fpv *Plan_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
   721  	return fpv.CompareWith(source.(*Plan))
   722  }
   723  
   724  type Plan_FieldSubPathValue struct {
   725  	Plan_FieldPath
   726  	subPathValue gotenobject.FieldPathValue
   727  }
   728  
   729  var _ Plan_FieldPathValue = (*Plan_FieldSubPathValue)(nil)
   730  
   731  func (fpvs *Plan_FieldSubPathValue) AsMetadataPathValue() (meta.Meta_FieldPathValue, bool) {
   732  	res, ok := fpvs.subPathValue.(meta.Meta_FieldPathValue)
   733  	return res, ok
   734  }
   735  func (fpvs *Plan_FieldSubPathValue) AsResourceLimitsPathValue() (PlanLimitValue_FieldPathValue, bool) {
   736  	res, ok := fpvs.subPathValue.(PlanLimitValue_FieldPathValue)
   737  	return res, ok
   738  }
   739  
   740  func (fpvs *Plan_FieldSubPathValue) SetTo(target **Plan) {
   741  	if *target == nil {
   742  		*target = new(Plan)
   743  	}
   744  	switch fpvs.Selector() {
   745  	case Plan_FieldPathSelectorMetadata:
   746  		fpvs.subPathValue.(meta.Meta_FieldPathValue).SetTo(&(*target).Metadata)
   747  	case Plan_FieldPathSelectorResourceLimits:
   748  		panic("FieldPath setter is unsupported for array subpaths")
   749  	default:
   750  		panic(fmt.Sprintf("Invalid selector for Plan: %d", fpvs.Selector()))
   751  	}
   752  }
   753  
   754  func (fpvs *Plan_FieldSubPathValue) SetToRaw(target proto.Message) {
   755  	typedObject := target.(*Plan)
   756  	fpvs.SetTo(&typedObject)
   757  }
   758  
   759  func (fpvs *Plan_FieldSubPathValue) GetRawValue() interface{} {
   760  	return fpvs.subPathValue.GetRawValue()
   761  }
   762  
   763  func (fpvs *Plan_FieldSubPathValue) CompareWith(source *Plan) (int, bool) {
   764  	switch fpvs.Selector() {
   765  	case Plan_FieldPathSelectorMetadata:
   766  		return fpvs.subPathValue.(meta.Meta_FieldPathValue).CompareWith(source.GetMetadata())
   767  	case Plan_FieldPathSelectorResourceLimits:
   768  		return 0, false // repeated field
   769  	default:
   770  		panic(fmt.Sprintf("Invalid selector for Plan: %d", fpvs.Selector()))
   771  	}
   772  }
   773  
   774  func (fpvs *Plan_FieldSubPathValue) CompareWithRaw(source proto.Message) (int, bool) {
   775  	return fpvs.CompareWith(source.(*Plan))
   776  }
   777  
   778  // Plan_FieldPathArrayItemValue allows storing single item in Path-specific values for Plan according to their type
   779  // Present only for array (repeated) types.
   780  type Plan_FieldPathArrayItemValue interface {
   781  	gotenobject.FieldPathArrayItemValue
   782  	Plan_FieldPath
   783  	ContainsValue(*Plan) bool
   784  }
   785  
   786  // ParsePlan_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
   787  func ParsePlan_FieldPathArrayItemValue(pathStr, valueStr string) (Plan_FieldPathArrayItemValue, error) {
   788  	fp, err := ParsePlan_FieldPath(pathStr)
   789  	if err != nil {
   790  		return nil, err
   791  	}
   792  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
   793  	if err != nil {
   794  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Plan field path array item value from %s: %v", valueStr, err)
   795  	}
   796  	return fpaiv.(Plan_FieldPathArrayItemValue), nil
   797  }
   798  
   799  func MustParsePlan_FieldPathArrayItemValue(pathStr, valueStr string) Plan_FieldPathArrayItemValue {
   800  	fpaiv, err := ParsePlan_FieldPathArrayItemValue(pathStr, valueStr)
   801  	if err != nil {
   802  		panic(err)
   803  	}
   804  	return fpaiv
   805  }
   806  
   807  type Plan_FieldTerminalPathArrayItemValue struct {
   808  	Plan_FieldTerminalPath
   809  	value interface{}
   810  }
   811  
   812  var _ Plan_FieldPathArrayItemValue = (*Plan_FieldTerminalPathArrayItemValue)(nil)
   813  
   814  // GetRawValue returns stored element value for array in object Plan as interface{}
   815  func (fpaiv *Plan_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
   816  	return fpaiv.value
   817  }
   818  func (fpaiv *Plan_FieldTerminalPathArrayItemValue) AsResourceLimitsItemValue() (*Plan_LimitValue, bool) {
   819  	res, ok := fpaiv.value.(*Plan_LimitValue)
   820  	return res, ok
   821  }
   822  
   823  func (fpaiv *Plan_FieldTerminalPathArrayItemValue) GetSingle(source *Plan) (interface{}, bool) {
   824  	return nil, false
   825  }
   826  
   827  func (fpaiv *Plan_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
   828  	return fpaiv.GetSingle(source.(*Plan))
   829  }
   830  
   831  // Contains returns a boolean indicating if value that is being held is present in given 'Plan'
   832  func (fpaiv *Plan_FieldTerminalPathArrayItemValue) ContainsValue(source *Plan) bool {
   833  	slice := fpaiv.Plan_FieldTerminalPath.Get(source)
   834  	for _, v := range slice {
   835  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
   836  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
   837  				return true
   838  			}
   839  		} else if reflect.DeepEqual(v, fpaiv.value) {
   840  			return true
   841  		}
   842  	}
   843  	return false
   844  }
   845  
   846  type Plan_FieldSubPathArrayItemValue struct {
   847  	Plan_FieldPath
   848  	subPathItemValue gotenobject.FieldPathArrayItemValue
   849  }
   850  
   851  // GetRawValue returns stored array item value
   852  func (fpaivs *Plan_FieldSubPathArrayItemValue) GetRawItemValue() interface{} {
   853  	return fpaivs.subPathItemValue.GetRawItemValue()
   854  }
   855  func (fpaivs *Plan_FieldSubPathArrayItemValue) AsMetadataPathItemValue() (meta.Meta_FieldPathArrayItemValue, bool) {
   856  	res, ok := fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue)
   857  	return res, ok
   858  }
   859  func (fpaivs *Plan_FieldSubPathArrayItemValue) AsResourceLimitsPathItemValue() (PlanLimitValue_FieldPathArrayItemValue, bool) {
   860  	res, ok := fpaivs.subPathItemValue.(PlanLimitValue_FieldPathArrayItemValue)
   861  	return res, ok
   862  }
   863  
   864  // Contains returns a boolean indicating if value that is being held is present in given 'Plan'
   865  func (fpaivs *Plan_FieldSubPathArrayItemValue) ContainsValue(source *Plan) bool {
   866  	switch fpaivs.Selector() {
   867  	case Plan_FieldPathSelectorMetadata:
   868  		return fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue).ContainsValue(source.GetMetadata())
   869  	case Plan_FieldPathSelectorResourceLimits:
   870  		return false // repeated/map field
   871  	default:
   872  		panic(fmt.Sprintf("Invalid selector for Plan: %d", fpaivs.Selector()))
   873  	}
   874  }
   875  
   876  // Plan_FieldPathArrayOfValues allows storing slice of values for Plan fields according to their type
   877  type Plan_FieldPathArrayOfValues interface {
   878  	gotenobject.FieldPathArrayOfValues
   879  	Plan_FieldPath
   880  }
   881  
   882  func ParsePlan_FieldPathArrayOfValues(pathStr, valuesStr string) (Plan_FieldPathArrayOfValues, error) {
   883  	fp, err := ParsePlan_FieldPath(pathStr)
   884  	if err != nil {
   885  		return nil, err
   886  	}
   887  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
   888  	if err != nil {
   889  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Plan field path array of values from %s: %v", valuesStr, err)
   890  	}
   891  	return fpaov.(Plan_FieldPathArrayOfValues), nil
   892  }
   893  
   894  func MustParsePlan_FieldPathArrayOfValues(pathStr, valuesStr string) Plan_FieldPathArrayOfValues {
   895  	fpaov, err := ParsePlan_FieldPathArrayOfValues(pathStr, valuesStr)
   896  	if err != nil {
   897  		panic(err)
   898  	}
   899  	return fpaov
   900  }
   901  
   902  type Plan_FieldTerminalPathArrayOfValues struct {
   903  	Plan_FieldTerminalPath
   904  	values interface{}
   905  }
   906  
   907  var _ Plan_FieldPathArrayOfValues = (*Plan_FieldTerminalPathArrayOfValues)(nil)
   908  
   909  func (fpaov *Plan_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
   910  	switch fpaov.selector {
   911  	case Plan_FieldPathSelectorName:
   912  		for _, v := range fpaov.values.([]*Name) {
   913  			values = append(values, v)
   914  		}
   915  	case Plan_FieldPathSelectorMetadata:
   916  		for _, v := range fpaov.values.([]*meta.Meta) {
   917  			values = append(values, v)
   918  		}
   919  	case Plan_FieldPathSelectorDisplayName:
   920  		for _, v := range fpaov.values.([]string) {
   921  			values = append(values, v)
   922  		}
   923  	case Plan_FieldPathSelectorService:
   924  		for _, v := range fpaov.values.([]*meta_service.Reference) {
   925  			values = append(values, v)
   926  		}
   927  	case Plan_FieldPathSelectorResourceLimits:
   928  		for _, v := range fpaov.values.([][]*Plan_LimitValue) {
   929  			values = append(values, v)
   930  		}
   931  	case Plan_FieldPathSelectorPlanLevel:
   932  		for _, v := range fpaov.values.([]Plan_PlanLevel) {
   933  			values = append(values, v)
   934  		}
   935  	case Plan_FieldPathSelectorBusinessTier:
   936  		for _, v := range fpaov.values.([]iam_iam_common.BusinessTier) {
   937  			values = append(values, v)
   938  		}
   939  	case Plan_FieldPathSelectorGeneration:
   940  		for _, v := range fpaov.values.([]int64) {
   941  			values = append(values, v)
   942  		}
   943  	}
   944  	return
   945  }
   946  func (fpaov *Plan_FieldTerminalPathArrayOfValues) AsNameArrayOfValues() ([]*Name, bool) {
   947  	res, ok := fpaov.values.([]*Name)
   948  	return res, ok
   949  }
   950  func (fpaov *Plan_FieldTerminalPathArrayOfValues) AsMetadataArrayOfValues() ([]*meta.Meta, bool) {
   951  	res, ok := fpaov.values.([]*meta.Meta)
   952  	return res, ok
   953  }
   954  func (fpaov *Plan_FieldTerminalPathArrayOfValues) AsDisplayNameArrayOfValues() ([]string, bool) {
   955  	res, ok := fpaov.values.([]string)
   956  	return res, ok
   957  }
   958  func (fpaov *Plan_FieldTerminalPathArrayOfValues) AsServiceArrayOfValues() ([]*meta_service.Reference, bool) {
   959  	res, ok := fpaov.values.([]*meta_service.Reference)
   960  	return res, ok
   961  }
   962  func (fpaov *Plan_FieldTerminalPathArrayOfValues) AsResourceLimitsArrayOfValues() ([][]*Plan_LimitValue, bool) {
   963  	res, ok := fpaov.values.([][]*Plan_LimitValue)
   964  	return res, ok
   965  }
   966  func (fpaov *Plan_FieldTerminalPathArrayOfValues) AsPlanLevelArrayOfValues() ([]Plan_PlanLevel, bool) {
   967  	res, ok := fpaov.values.([]Plan_PlanLevel)
   968  	return res, ok
   969  }
   970  func (fpaov *Plan_FieldTerminalPathArrayOfValues) AsBusinessTierArrayOfValues() ([]iam_iam_common.BusinessTier, bool) {
   971  	res, ok := fpaov.values.([]iam_iam_common.BusinessTier)
   972  	return res, ok
   973  }
   974  func (fpaov *Plan_FieldTerminalPathArrayOfValues) AsGenerationArrayOfValues() ([]int64, bool) {
   975  	res, ok := fpaov.values.([]int64)
   976  	return res, ok
   977  }
   978  
   979  type Plan_FieldSubPathArrayOfValues struct {
   980  	Plan_FieldPath
   981  	subPathArrayOfValues gotenobject.FieldPathArrayOfValues
   982  }
   983  
   984  var _ Plan_FieldPathArrayOfValues = (*Plan_FieldSubPathArrayOfValues)(nil)
   985  
   986  func (fpsaov *Plan_FieldSubPathArrayOfValues) GetRawValues() []interface{} {
   987  	return fpsaov.subPathArrayOfValues.GetRawValues()
   988  }
   989  func (fpsaov *Plan_FieldSubPathArrayOfValues) AsMetadataPathArrayOfValues() (meta.Meta_FieldPathArrayOfValues, bool) {
   990  	res, ok := fpsaov.subPathArrayOfValues.(meta.Meta_FieldPathArrayOfValues)
   991  	return res, ok
   992  }
   993  func (fpsaov *Plan_FieldSubPathArrayOfValues) AsResourceLimitsPathArrayOfValues() (PlanLimitValue_FieldPathArrayOfValues, bool) {
   994  	res, ok := fpsaov.subPathArrayOfValues.(PlanLimitValue_FieldPathArrayOfValues)
   995  	return res, ok
   996  }
   997  
   998  // FieldPath provides implementation to handle
   999  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  1000  type PlanLimitValue_FieldPath interface {
  1001  	gotenobject.FieldPath
  1002  	Selector() PlanLimitValue_FieldPathSelector
  1003  	Get(source *Plan_LimitValue) []interface{}
  1004  	GetSingle(source *Plan_LimitValue) (interface{}, bool)
  1005  	ClearValue(item *Plan_LimitValue)
  1006  
  1007  	// Those methods build corresponding PlanLimitValue_FieldPathValue
  1008  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  1009  	WithIValue(value interface{}) PlanLimitValue_FieldPathValue
  1010  	WithIArrayOfValues(values interface{}) PlanLimitValue_FieldPathArrayOfValues
  1011  	WithIArrayItemValue(value interface{}) PlanLimitValue_FieldPathArrayItemValue
  1012  }
  1013  
  1014  type PlanLimitValue_FieldPathSelector int32
  1015  
  1016  const (
  1017  	PlanLimitValue_FieldPathSelectorResource PlanLimitValue_FieldPathSelector = 0
  1018  	PlanLimitValue_FieldPathSelectorValue    PlanLimitValue_FieldPathSelector = 1
  1019  )
  1020  
  1021  func (s PlanLimitValue_FieldPathSelector) String() string {
  1022  	switch s {
  1023  	case PlanLimitValue_FieldPathSelectorResource:
  1024  		return "resource"
  1025  	case PlanLimitValue_FieldPathSelectorValue:
  1026  		return "value"
  1027  	default:
  1028  		panic(fmt.Sprintf("Invalid selector for Plan_LimitValue: %d", s))
  1029  	}
  1030  }
  1031  
  1032  func BuildPlanLimitValue_FieldPath(fp gotenobject.RawFieldPath) (PlanLimitValue_FieldPath, error) {
  1033  	if len(fp) == 0 {
  1034  		return nil, status.Error(codes.InvalidArgument, "empty field path for object Plan_LimitValue")
  1035  	}
  1036  	if len(fp) == 1 {
  1037  		switch fp[0] {
  1038  		case "resource":
  1039  			return &PlanLimitValue_FieldTerminalPath{selector: PlanLimitValue_FieldPathSelectorResource}, nil
  1040  		case "value":
  1041  			return &PlanLimitValue_FieldTerminalPath{selector: PlanLimitValue_FieldPathSelectorValue}, nil
  1042  		}
  1043  	}
  1044  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Plan_LimitValue", fp)
  1045  }
  1046  
  1047  func ParsePlanLimitValue_FieldPath(rawField string) (PlanLimitValue_FieldPath, error) {
  1048  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  1049  	if err != nil {
  1050  		return nil, err
  1051  	}
  1052  	return BuildPlanLimitValue_FieldPath(fp)
  1053  }
  1054  
  1055  func MustParsePlanLimitValue_FieldPath(rawField string) PlanLimitValue_FieldPath {
  1056  	fp, err := ParsePlanLimitValue_FieldPath(rawField)
  1057  	if err != nil {
  1058  		panic(err)
  1059  	}
  1060  	return fp
  1061  }
  1062  
  1063  type PlanLimitValue_FieldTerminalPath struct {
  1064  	selector PlanLimitValue_FieldPathSelector
  1065  }
  1066  
  1067  var _ PlanLimitValue_FieldPath = (*PlanLimitValue_FieldTerminalPath)(nil)
  1068  
  1069  func (fp *PlanLimitValue_FieldTerminalPath) Selector() PlanLimitValue_FieldPathSelector {
  1070  	return fp.selector
  1071  }
  1072  
  1073  // String returns path representation in proto convention
  1074  func (fp *PlanLimitValue_FieldTerminalPath) String() string {
  1075  	return fp.selector.String()
  1076  }
  1077  
  1078  // JSONString returns path representation is JSON convention
  1079  func (fp *PlanLimitValue_FieldTerminalPath) JSONString() string {
  1080  	return strcase.ToLowerCamel(fp.String())
  1081  }
  1082  
  1083  // Get returns all values pointed by specific field from source Plan_LimitValue
  1084  func (fp *PlanLimitValue_FieldTerminalPath) Get(source *Plan_LimitValue) (values []interface{}) {
  1085  	if source != nil {
  1086  		switch fp.selector {
  1087  		case PlanLimitValue_FieldPathSelectorResource:
  1088  			if source.Resource != nil {
  1089  				values = append(values, source.Resource)
  1090  			}
  1091  		case PlanLimitValue_FieldPathSelectorValue:
  1092  			values = append(values, source.Value)
  1093  		default:
  1094  			panic(fmt.Sprintf("Invalid selector for Plan_LimitValue: %d", fp.selector))
  1095  		}
  1096  	}
  1097  	return
  1098  }
  1099  
  1100  func (fp *PlanLimitValue_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  1101  	return fp.Get(source.(*Plan_LimitValue))
  1102  }
  1103  
  1104  // GetSingle returns value pointed by specific field of from source Plan_LimitValue
  1105  func (fp *PlanLimitValue_FieldTerminalPath) GetSingle(source *Plan_LimitValue) (interface{}, bool) {
  1106  	switch fp.selector {
  1107  	case PlanLimitValue_FieldPathSelectorResource:
  1108  		res := source.GetResource()
  1109  		return res, res != nil
  1110  	case PlanLimitValue_FieldPathSelectorValue:
  1111  		return source.GetValue(), source != nil
  1112  	default:
  1113  		panic(fmt.Sprintf("Invalid selector for Plan_LimitValue: %d", fp.selector))
  1114  	}
  1115  }
  1116  
  1117  func (fp *PlanLimitValue_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1118  	return fp.GetSingle(source.(*Plan_LimitValue))
  1119  }
  1120  
  1121  // GetDefault returns a default value of the field type
  1122  func (fp *PlanLimitValue_FieldTerminalPath) GetDefault() interface{} {
  1123  	switch fp.selector {
  1124  	case PlanLimitValue_FieldPathSelectorResource:
  1125  		return (*meta_resource.Reference)(nil)
  1126  	case PlanLimitValue_FieldPathSelectorValue:
  1127  		return int64(0)
  1128  	default:
  1129  		panic(fmt.Sprintf("Invalid selector for Plan_LimitValue: %d", fp.selector))
  1130  	}
  1131  }
  1132  
  1133  func (fp *PlanLimitValue_FieldTerminalPath) ClearValue(item *Plan_LimitValue) {
  1134  	if item != nil {
  1135  		switch fp.selector {
  1136  		case PlanLimitValue_FieldPathSelectorResource:
  1137  			item.Resource = nil
  1138  		case PlanLimitValue_FieldPathSelectorValue:
  1139  			item.Value = int64(0)
  1140  		default:
  1141  			panic(fmt.Sprintf("Invalid selector for Plan_LimitValue: %d", fp.selector))
  1142  		}
  1143  	}
  1144  }
  1145  
  1146  func (fp *PlanLimitValue_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  1147  	fp.ClearValue(item.(*Plan_LimitValue))
  1148  }
  1149  
  1150  // IsLeaf - whether field path is holds simple value
  1151  func (fp *PlanLimitValue_FieldTerminalPath) IsLeaf() bool {
  1152  	return fp.selector == PlanLimitValue_FieldPathSelectorResource ||
  1153  		fp.selector == PlanLimitValue_FieldPathSelectorValue
  1154  }
  1155  
  1156  func (fp *PlanLimitValue_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  1157  	return []gotenobject.FieldPath{fp}
  1158  }
  1159  
  1160  func (fp *PlanLimitValue_FieldTerminalPath) WithIValue(value interface{}) PlanLimitValue_FieldPathValue {
  1161  	switch fp.selector {
  1162  	case PlanLimitValue_FieldPathSelectorResource:
  1163  		return &PlanLimitValue_FieldTerminalPathValue{PlanLimitValue_FieldTerminalPath: *fp, value: value.(*meta_resource.Reference)}
  1164  	case PlanLimitValue_FieldPathSelectorValue:
  1165  		return &PlanLimitValue_FieldTerminalPathValue{PlanLimitValue_FieldTerminalPath: *fp, value: value.(int64)}
  1166  	default:
  1167  		panic(fmt.Sprintf("Invalid selector for Plan_LimitValue: %d", fp.selector))
  1168  	}
  1169  }
  1170  
  1171  func (fp *PlanLimitValue_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  1172  	return fp.WithIValue(value)
  1173  }
  1174  
  1175  func (fp *PlanLimitValue_FieldTerminalPath) WithIArrayOfValues(values interface{}) PlanLimitValue_FieldPathArrayOfValues {
  1176  	fpaov := &PlanLimitValue_FieldTerminalPathArrayOfValues{PlanLimitValue_FieldTerminalPath: *fp}
  1177  	switch fp.selector {
  1178  	case PlanLimitValue_FieldPathSelectorResource:
  1179  		return &PlanLimitValue_FieldTerminalPathArrayOfValues{PlanLimitValue_FieldTerminalPath: *fp, values: values.([]*meta_resource.Reference)}
  1180  	case PlanLimitValue_FieldPathSelectorValue:
  1181  		return &PlanLimitValue_FieldTerminalPathArrayOfValues{PlanLimitValue_FieldTerminalPath: *fp, values: values.([]int64)}
  1182  	default:
  1183  		panic(fmt.Sprintf("Invalid selector for Plan_LimitValue: %d", fp.selector))
  1184  	}
  1185  	return fpaov
  1186  }
  1187  
  1188  func (fp *PlanLimitValue_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  1189  	return fp.WithIArrayOfValues(values)
  1190  }
  1191  
  1192  func (fp *PlanLimitValue_FieldTerminalPath) WithIArrayItemValue(value interface{}) PlanLimitValue_FieldPathArrayItemValue {
  1193  	switch fp.selector {
  1194  	default:
  1195  		panic(fmt.Sprintf("Invalid selector for Plan_LimitValue: %d", fp.selector))
  1196  	}
  1197  }
  1198  
  1199  func (fp *PlanLimitValue_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  1200  	return fp.WithIArrayItemValue(value)
  1201  }
  1202  
  1203  // PlanLimitValue_FieldPathValue allows storing values for LimitValue fields according to their type
  1204  type PlanLimitValue_FieldPathValue interface {
  1205  	PlanLimitValue_FieldPath
  1206  	gotenobject.FieldPathValue
  1207  	SetTo(target **Plan_LimitValue)
  1208  	CompareWith(*Plan_LimitValue) (cmp int, comparable bool)
  1209  }
  1210  
  1211  func ParsePlanLimitValue_FieldPathValue(pathStr, valueStr string) (PlanLimitValue_FieldPathValue, error) {
  1212  	fp, err := ParsePlanLimitValue_FieldPath(pathStr)
  1213  	if err != nil {
  1214  		return nil, err
  1215  	}
  1216  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  1217  	if err != nil {
  1218  		return nil, status.Errorf(codes.InvalidArgument, "error parsing LimitValue field path value from %s: %v", valueStr, err)
  1219  	}
  1220  	return fpv.(PlanLimitValue_FieldPathValue), nil
  1221  }
  1222  
  1223  func MustParsePlanLimitValue_FieldPathValue(pathStr, valueStr string) PlanLimitValue_FieldPathValue {
  1224  	fpv, err := ParsePlanLimitValue_FieldPathValue(pathStr, valueStr)
  1225  	if err != nil {
  1226  		panic(err)
  1227  	}
  1228  	return fpv
  1229  }
  1230  
  1231  type PlanLimitValue_FieldTerminalPathValue struct {
  1232  	PlanLimitValue_FieldTerminalPath
  1233  	value interface{}
  1234  }
  1235  
  1236  var _ PlanLimitValue_FieldPathValue = (*PlanLimitValue_FieldTerminalPathValue)(nil)
  1237  
  1238  // GetRawValue returns raw value stored under selected path for 'LimitValue' as interface{}
  1239  func (fpv *PlanLimitValue_FieldTerminalPathValue) GetRawValue() interface{} {
  1240  	return fpv.value
  1241  }
  1242  func (fpv *PlanLimitValue_FieldTerminalPathValue) AsResourceValue() (*meta_resource.Reference, bool) {
  1243  	res, ok := fpv.value.(*meta_resource.Reference)
  1244  	return res, ok
  1245  }
  1246  func (fpv *PlanLimitValue_FieldTerminalPathValue) AsValueValue() (int64, bool) {
  1247  	res, ok := fpv.value.(int64)
  1248  	return res, ok
  1249  }
  1250  
  1251  // SetTo stores value for selected field for object LimitValue
  1252  func (fpv *PlanLimitValue_FieldTerminalPathValue) SetTo(target **Plan_LimitValue) {
  1253  	if *target == nil {
  1254  		*target = new(Plan_LimitValue)
  1255  	}
  1256  	switch fpv.selector {
  1257  	case PlanLimitValue_FieldPathSelectorResource:
  1258  		(*target).Resource = fpv.value.(*meta_resource.Reference)
  1259  	case PlanLimitValue_FieldPathSelectorValue:
  1260  		(*target).Value = fpv.value.(int64)
  1261  	default:
  1262  		panic(fmt.Sprintf("Invalid selector for Plan_LimitValue: %d", fpv.selector))
  1263  	}
  1264  }
  1265  
  1266  func (fpv *PlanLimitValue_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  1267  	typedObject := target.(*Plan_LimitValue)
  1268  	fpv.SetTo(&typedObject)
  1269  }
  1270  
  1271  // CompareWith compares value in the 'PlanLimitValue_FieldTerminalPathValue' with the value under path in 'Plan_LimitValue'.
  1272  func (fpv *PlanLimitValue_FieldTerminalPathValue) CompareWith(source *Plan_LimitValue) (int, bool) {
  1273  	switch fpv.selector {
  1274  	case PlanLimitValue_FieldPathSelectorResource:
  1275  		leftValue := fpv.value.(*meta_resource.Reference)
  1276  		rightValue := source.GetResource()
  1277  		if leftValue == nil {
  1278  			if rightValue != nil {
  1279  				return -1, true
  1280  			}
  1281  			return 0, true
  1282  		}
  1283  		if rightValue == nil {
  1284  			return 1, true
  1285  		}
  1286  		if leftValue.String() == rightValue.String() {
  1287  			return 0, true
  1288  		} else if leftValue.String() < rightValue.String() {
  1289  			return -1, true
  1290  		} else {
  1291  			return 1, true
  1292  		}
  1293  	case PlanLimitValue_FieldPathSelectorValue:
  1294  		leftValue := fpv.value.(int64)
  1295  		rightValue := source.GetValue()
  1296  		if (leftValue) == (rightValue) {
  1297  			return 0, true
  1298  		} else if (leftValue) < (rightValue) {
  1299  			return -1, true
  1300  		} else {
  1301  			return 1, true
  1302  		}
  1303  	default:
  1304  		panic(fmt.Sprintf("Invalid selector for Plan_LimitValue: %d", fpv.selector))
  1305  	}
  1306  }
  1307  
  1308  func (fpv *PlanLimitValue_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  1309  	return fpv.CompareWith(source.(*Plan_LimitValue))
  1310  }
  1311  
  1312  // PlanLimitValue_FieldPathArrayItemValue allows storing single item in Path-specific values for LimitValue according to their type
  1313  // Present only for array (repeated) types.
  1314  type PlanLimitValue_FieldPathArrayItemValue interface {
  1315  	gotenobject.FieldPathArrayItemValue
  1316  	PlanLimitValue_FieldPath
  1317  	ContainsValue(*Plan_LimitValue) bool
  1318  }
  1319  
  1320  // ParsePlanLimitValue_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  1321  func ParsePlanLimitValue_FieldPathArrayItemValue(pathStr, valueStr string) (PlanLimitValue_FieldPathArrayItemValue, error) {
  1322  	fp, err := ParsePlanLimitValue_FieldPath(pathStr)
  1323  	if err != nil {
  1324  		return nil, err
  1325  	}
  1326  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  1327  	if err != nil {
  1328  		return nil, status.Errorf(codes.InvalidArgument, "error parsing LimitValue field path array item value from %s: %v", valueStr, err)
  1329  	}
  1330  	return fpaiv.(PlanLimitValue_FieldPathArrayItemValue), nil
  1331  }
  1332  
  1333  func MustParsePlanLimitValue_FieldPathArrayItemValue(pathStr, valueStr string) PlanLimitValue_FieldPathArrayItemValue {
  1334  	fpaiv, err := ParsePlanLimitValue_FieldPathArrayItemValue(pathStr, valueStr)
  1335  	if err != nil {
  1336  		panic(err)
  1337  	}
  1338  	return fpaiv
  1339  }
  1340  
  1341  type PlanLimitValue_FieldTerminalPathArrayItemValue struct {
  1342  	PlanLimitValue_FieldTerminalPath
  1343  	value interface{}
  1344  }
  1345  
  1346  var _ PlanLimitValue_FieldPathArrayItemValue = (*PlanLimitValue_FieldTerminalPathArrayItemValue)(nil)
  1347  
  1348  // GetRawValue returns stored element value for array in object Plan_LimitValue as interface{}
  1349  func (fpaiv *PlanLimitValue_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  1350  	return fpaiv.value
  1351  }
  1352  
  1353  func (fpaiv *PlanLimitValue_FieldTerminalPathArrayItemValue) GetSingle(source *Plan_LimitValue) (interface{}, bool) {
  1354  	return nil, false
  1355  }
  1356  
  1357  func (fpaiv *PlanLimitValue_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1358  	return fpaiv.GetSingle(source.(*Plan_LimitValue))
  1359  }
  1360  
  1361  // Contains returns a boolean indicating if value that is being held is present in given 'LimitValue'
  1362  func (fpaiv *PlanLimitValue_FieldTerminalPathArrayItemValue) ContainsValue(source *Plan_LimitValue) bool {
  1363  	slice := fpaiv.PlanLimitValue_FieldTerminalPath.Get(source)
  1364  	for _, v := range slice {
  1365  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  1366  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  1367  				return true
  1368  			}
  1369  		} else if reflect.DeepEqual(v, fpaiv.value) {
  1370  			return true
  1371  		}
  1372  	}
  1373  	return false
  1374  }
  1375  
  1376  // PlanLimitValue_FieldPathArrayOfValues allows storing slice of values for LimitValue fields according to their type
  1377  type PlanLimitValue_FieldPathArrayOfValues interface {
  1378  	gotenobject.FieldPathArrayOfValues
  1379  	PlanLimitValue_FieldPath
  1380  }
  1381  
  1382  func ParsePlanLimitValue_FieldPathArrayOfValues(pathStr, valuesStr string) (PlanLimitValue_FieldPathArrayOfValues, error) {
  1383  	fp, err := ParsePlanLimitValue_FieldPath(pathStr)
  1384  	if err != nil {
  1385  		return nil, err
  1386  	}
  1387  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  1388  	if err != nil {
  1389  		return nil, status.Errorf(codes.InvalidArgument, "error parsing LimitValue field path array of values from %s: %v", valuesStr, err)
  1390  	}
  1391  	return fpaov.(PlanLimitValue_FieldPathArrayOfValues), nil
  1392  }
  1393  
  1394  func MustParsePlanLimitValue_FieldPathArrayOfValues(pathStr, valuesStr string) PlanLimitValue_FieldPathArrayOfValues {
  1395  	fpaov, err := ParsePlanLimitValue_FieldPathArrayOfValues(pathStr, valuesStr)
  1396  	if err != nil {
  1397  		panic(err)
  1398  	}
  1399  	return fpaov
  1400  }
  1401  
  1402  type PlanLimitValue_FieldTerminalPathArrayOfValues struct {
  1403  	PlanLimitValue_FieldTerminalPath
  1404  	values interface{}
  1405  }
  1406  
  1407  var _ PlanLimitValue_FieldPathArrayOfValues = (*PlanLimitValue_FieldTerminalPathArrayOfValues)(nil)
  1408  
  1409  func (fpaov *PlanLimitValue_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  1410  	switch fpaov.selector {
  1411  	case PlanLimitValue_FieldPathSelectorResource:
  1412  		for _, v := range fpaov.values.([]*meta_resource.Reference) {
  1413  			values = append(values, v)
  1414  		}
  1415  	case PlanLimitValue_FieldPathSelectorValue:
  1416  		for _, v := range fpaov.values.([]int64) {
  1417  			values = append(values, v)
  1418  		}
  1419  	}
  1420  	return
  1421  }
  1422  func (fpaov *PlanLimitValue_FieldTerminalPathArrayOfValues) AsResourceArrayOfValues() ([]*meta_resource.Reference, bool) {
  1423  	res, ok := fpaov.values.([]*meta_resource.Reference)
  1424  	return res, ok
  1425  }
  1426  func (fpaov *PlanLimitValue_FieldTerminalPathArrayOfValues) AsValueArrayOfValues() ([]int64, bool) {
  1427  	res, ok := fpaov.values.([]int64)
  1428  	return res, ok
  1429  }