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

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