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

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