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

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/devices/proto/v1alpha2/project.proto
     3  // DO NOT EDIT!!!
     4  
     5  package project
     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  	meta "github.com/cloudwan/goten-sdk/types/meta"
    27  	multi_region_policy "github.com/cloudwan/goten-sdk/types/multi_region_policy"
    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  	_ = &meta.Meta{}
    51  	_ = &multi_region_policy.MultiRegionPolicy{}
    52  )
    53  
    54  // FieldPath provides implementation to handle
    55  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
    56  type Project_FieldPath interface {
    57  	gotenobject.FieldPath
    58  	Selector() Project_FieldPathSelector
    59  	Get(source *Project) []interface{}
    60  	GetSingle(source *Project) (interface{}, bool)
    61  	ClearValue(item *Project)
    62  
    63  	// Those methods build corresponding Project_FieldPathValue
    64  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
    65  	WithIValue(value interface{}) Project_FieldPathValue
    66  	WithIArrayOfValues(values interface{}) Project_FieldPathArrayOfValues
    67  	WithIArrayItemValue(value interface{}) Project_FieldPathArrayItemValue
    68  }
    69  
    70  type Project_FieldPathSelector int32
    71  
    72  const (
    73  	Project_FieldPathSelectorName              Project_FieldPathSelector = 0
    74  	Project_FieldPathSelectorMetadata          Project_FieldPathSelector = 1
    75  	Project_FieldPathSelectorMultiRegionPolicy Project_FieldPathSelector = 2
    76  )
    77  
    78  func (s Project_FieldPathSelector) String() string {
    79  	switch s {
    80  	case Project_FieldPathSelectorName:
    81  		return "name"
    82  	case Project_FieldPathSelectorMetadata:
    83  		return "metadata"
    84  	case Project_FieldPathSelectorMultiRegionPolicy:
    85  		return "multi_region_policy"
    86  	default:
    87  		panic(fmt.Sprintf("Invalid selector for Project: %d", s))
    88  	}
    89  }
    90  
    91  func BuildProject_FieldPath(fp gotenobject.RawFieldPath) (Project_FieldPath, error) {
    92  	if len(fp) == 0 {
    93  		return nil, status.Error(codes.InvalidArgument, "empty field path for object Project")
    94  	}
    95  	if len(fp) == 1 {
    96  		switch fp[0] {
    97  		case "name":
    98  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorName}, nil
    99  		case "metadata":
   100  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorMetadata}, nil
   101  		case "multi_region_policy", "multiRegionPolicy", "multi-region-policy":
   102  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorMultiRegionPolicy}, nil
   103  		}
   104  	} else {
   105  		switch fp[0] {
   106  		case "metadata":
   107  			if subpath, err := meta.BuildMeta_FieldPath(fp[1:]); err != nil {
   108  				return nil, err
   109  			} else {
   110  				return &Project_FieldSubPath{selector: Project_FieldPathSelectorMetadata, subPath: subpath}, nil
   111  			}
   112  		case "multi_region_policy", "multiRegionPolicy", "multi-region-policy":
   113  			if subpath, err := multi_region_policy.BuildMultiRegionPolicy_FieldPath(fp[1:]); err != nil {
   114  				return nil, err
   115  			} else {
   116  				return &Project_FieldSubPath{selector: Project_FieldPathSelectorMultiRegionPolicy, subPath: subpath}, nil
   117  			}
   118  		}
   119  	}
   120  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Project", fp)
   121  }
   122  
   123  func ParseProject_FieldPath(rawField string) (Project_FieldPath, error) {
   124  	fp, err := gotenobject.ParseRawFieldPath(rawField)
   125  	if err != nil {
   126  		return nil, err
   127  	}
   128  	return BuildProject_FieldPath(fp)
   129  }
   130  
   131  func MustParseProject_FieldPath(rawField string) Project_FieldPath {
   132  	fp, err := ParseProject_FieldPath(rawField)
   133  	if err != nil {
   134  		panic(err)
   135  	}
   136  	return fp
   137  }
   138  
   139  type Project_FieldTerminalPath struct {
   140  	selector Project_FieldPathSelector
   141  }
   142  
   143  var _ Project_FieldPath = (*Project_FieldTerminalPath)(nil)
   144  
   145  func (fp *Project_FieldTerminalPath) Selector() Project_FieldPathSelector {
   146  	return fp.selector
   147  }
   148  
   149  // String returns path representation in proto convention
   150  func (fp *Project_FieldTerminalPath) String() string {
   151  	return fp.selector.String()
   152  }
   153  
   154  // JSONString returns path representation is JSON convention
   155  func (fp *Project_FieldTerminalPath) JSONString() string {
   156  	return strcase.ToLowerCamel(fp.String())
   157  }
   158  
   159  // Get returns all values pointed by specific field from source Project
   160  func (fp *Project_FieldTerminalPath) Get(source *Project) (values []interface{}) {
   161  	if source != nil {
   162  		switch fp.selector {
   163  		case Project_FieldPathSelectorName:
   164  			if source.Name != nil {
   165  				values = append(values, source.Name)
   166  			}
   167  		case Project_FieldPathSelectorMetadata:
   168  			if source.Metadata != nil {
   169  				values = append(values, source.Metadata)
   170  			}
   171  		case Project_FieldPathSelectorMultiRegionPolicy:
   172  			if source.MultiRegionPolicy != nil {
   173  				values = append(values, source.MultiRegionPolicy)
   174  			}
   175  		default:
   176  			panic(fmt.Sprintf("Invalid selector for Project: %d", fp.selector))
   177  		}
   178  	}
   179  	return
   180  }
   181  
   182  func (fp *Project_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
   183  	return fp.Get(source.(*Project))
   184  }
   185  
   186  // GetSingle returns value pointed by specific field of from source Project
   187  func (fp *Project_FieldTerminalPath) GetSingle(source *Project) (interface{}, bool) {
   188  	switch fp.selector {
   189  	case Project_FieldPathSelectorName:
   190  		res := source.GetName()
   191  		return res, res != nil
   192  	case Project_FieldPathSelectorMetadata:
   193  		res := source.GetMetadata()
   194  		return res, res != nil
   195  	case Project_FieldPathSelectorMultiRegionPolicy:
   196  		res := source.GetMultiRegionPolicy()
   197  		return res, res != nil
   198  	default:
   199  		panic(fmt.Sprintf("Invalid selector for Project: %d", fp.selector))
   200  	}
   201  }
   202  
   203  func (fp *Project_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   204  	return fp.GetSingle(source.(*Project))
   205  }
   206  
   207  // GetDefault returns a default value of the field type
   208  func (fp *Project_FieldTerminalPath) GetDefault() interface{} {
   209  	switch fp.selector {
   210  	case Project_FieldPathSelectorName:
   211  		return (*Name)(nil)
   212  	case Project_FieldPathSelectorMetadata:
   213  		return (*meta.Meta)(nil)
   214  	case Project_FieldPathSelectorMultiRegionPolicy:
   215  		return (*multi_region_policy.MultiRegionPolicy)(nil)
   216  	default:
   217  		panic(fmt.Sprintf("Invalid selector for Project: %d", fp.selector))
   218  	}
   219  }
   220  
   221  func (fp *Project_FieldTerminalPath) ClearValue(item *Project) {
   222  	if item != nil {
   223  		switch fp.selector {
   224  		case Project_FieldPathSelectorName:
   225  			item.Name = nil
   226  		case Project_FieldPathSelectorMetadata:
   227  			item.Metadata = nil
   228  		case Project_FieldPathSelectorMultiRegionPolicy:
   229  			item.MultiRegionPolicy = nil
   230  		default:
   231  			panic(fmt.Sprintf("Invalid selector for Project: %d", fp.selector))
   232  		}
   233  	}
   234  }
   235  
   236  func (fp *Project_FieldTerminalPath) ClearValueRaw(item proto.Message) {
   237  	fp.ClearValue(item.(*Project))
   238  }
   239  
   240  // IsLeaf - whether field path is holds simple value
   241  func (fp *Project_FieldTerminalPath) IsLeaf() bool {
   242  	return fp.selector == Project_FieldPathSelectorName
   243  }
   244  
   245  func (fp *Project_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   246  	return []gotenobject.FieldPath{fp}
   247  }
   248  
   249  func (fp *Project_FieldTerminalPath) WithIValue(value interface{}) Project_FieldPathValue {
   250  	switch fp.selector {
   251  	case Project_FieldPathSelectorName:
   252  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.(*Name)}
   253  	case Project_FieldPathSelectorMetadata:
   254  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.(*meta.Meta)}
   255  	case Project_FieldPathSelectorMultiRegionPolicy:
   256  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.(*multi_region_policy.MultiRegionPolicy)}
   257  	default:
   258  		panic(fmt.Sprintf("Invalid selector for Project: %d", fp.selector))
   259  	}
   260  }
   261  
   262  func (fp *Project_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   263  	return fp.WithIValue(value)
   264  }
   265  
   266  func (fp *Project_FieldTerminalPath) WithIArrayOfValues(values interface{}) Project_FieldPathArrayOfValues {
   267  	fpaov := &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp}
   268  	switch fp.selector {
   269  	case Project_FieldPathSelectorName:
   270  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([]*Name)}
   271  	case Project_FieldPathSelectorMetadata:
   272  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([]*meta.Meta)}
   273  	case Project_FieldPathSelectorMultiRegionPolicy:
   274  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([]*multi_region_policy.MultiRegionPolicy)}
   275  	default:
   276  		panic(fmt.Sprintf("Invalid selector for Project: %d", fp.selector))
   277  	}
   278  	return fpaov
   279  }
   280  
   281  func (fp *Project_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   282  	return fp.WithIArrayOfValues(values)
   283  }
   284  
   285  func (fp *Project_FieldTerminalPath) WithIArrayItemValue(value interface{}) Project_FieldPathArrayItemValue {
   286  	switch fp.selector {
   287  	default:
   288  		panic(fmt.Sprintf("Invalid selector for Project: %d", fp.selector))
   289  	}
   290  }
   291  
   292  func (fp *Project_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   293  	return fp.WithIArrayItemValue(value)
   294  }
   295  
   296  type Project_FieldSubPath struct {
   297  	selector Project_FieldPathSelector
   298  	subPath  gotenobject.FieldPath
   299  }
   300  
   301  var _ Project_FieldPath = (*Project_FieldSubPath)(nil)
   302  
   303  func (fps *Project_FieldSubPath) Selector() Project_FieldPathSelector {
   304  	return fps.selector
   305  }
   306  func (fps *Project_FieldSubPath) AsMetadataSubPath() (meta.Meta_FieldPath, bool) {
   307  	res, ok := fps.subPath.(meta.Meta_FieldPath)
   308  	return res, ok
   309  }
   310  func (fps *Project_FieldSubPath) AsMultiRegionPolicySubPath() (multi_region_policy.MultiRegionPolicy_FieldPath, bool) {
   311  	res, ok := fps.subPath.(multi_region_policy.MultiRegionPolicy_FieldPath)
   312  	return res, ok
   313  }
   314  
   315  // String returns path representation in proto convention
   316  func (fps *Project_FieldSubPath) String() string {
   317  	return fps.selector.String() + "." + fps.subPath.String()
   318  }
   319  
   320  // JSONString returns path representation is JSON convention
   321  func (fps *Project_FieldSubPath) JSONString() string {
   322  	return strcase.ToLowerCamel(fps.selector.String()) + "." + fps.subPath.JSONString()
   323  }
   324  
   325  // Get returns all values pointed by selected field from source Project
   326  func (fps *Project_FieldSubPath) Get(source *Project) (values []interface{}) {
   327  	switch fps.selector {
   328  	case Project_FieldPathSelectorMetadata:
   329  		values = append(values, fps.subPath.GetRaw(source.GetMetadata())...)
   330  	case Project_FieldPathSelectorMultiRegionPolicy:
   331  		values = append(values, fps.subPath.GetRaw(source.GetMultiRegionPolicy())...)
   332  	default:
   333  		panic(fmt.Sprintf("Invalid selector for Project: %d", fps.selector))
   334  	}
   335  	return
   336  }
   337  
   338  func (fps *Project_FieldSubPath) GetRaw(source proto.Message) []interface{} {
   339  	return fps.Get(source.(*Project))
   340  }
   341  
   342  // GetSingle returns value of selected field from source Project
   343  func (fps *Project_FieldSubPath) GetSingle(source *Project) (interface{}, bool) {
   344  	switch fps.selector {
   345  	case Project_FieldPathSelectorMetadata:
   346  		if source.GetMetadata() == nil {
   347  			return nil, false
   348  		}
   349  		return fps.subPath.GetSingleRaw(source.GetMetadata())
   350  	case Project_FieldPathSelectorMultiRegionPolicy:
   351  		if source.GetMultiRegionPolicy() == nil {
   352  			return nil, false
   353  		}
   354  		return fps.subPath.GetSingleRaw(source.GetMultiRegionPolicy())
   355  	default:
   356  		panic(fmt.Sprintf("Invalid selector for Project: %d", fps.selector))
   357  	}
   358  }
   359  
   360  func (fps *Project_FieldSubPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   361  	return fps.GetSingle(source.(*Project))
   362  }
   363  
   364  // GetDefault returns a default value of the field type
   365  func (fps *Project_FieldSubPath) GetDefault() interface{} {
   366  	return fps.subPath.GetDefault()
   367  }
   368  
   369  func (fps *Project_FieldSubPath) ClearValue(item *Project) {
   370  	if item != nil {
   371  		switch fps.selector {
   372  		case Project_FieldPathSelectorMetadata:
   373  			fps.subPath.ClearValueRaw(item.Metadata)
   374  		case Project_FieldPathSelectorMultiRegionPolicy:
   375  			fps.subPath.ClearValueRaw(item.MultiRegionPolicy)
   376  		default:
   377  			panic(fmt.Sprintf("Invalid selector for Project: %d", fps.selector))
   378  		}
   379  	}
   380  }
   381  
   382  func (fps *Project_FieldSubPath) ClearValueRaw(item proto.Message) {
   383  	fps.ClearValue(item.(*Project))
   384  }
   385  
   386  // IsLeaf - whether field path is holds simple value
   387  func (fps *Project_FieldSubPath) IsLeaf() bool {
   388  	return fps.subPath.IsLeaf()
   389  }
   390  
   391  func (fps *Project_FieldSubPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   392  	iPaths := []gotenobject.FieldPath{&Project_FieldTerminalPath{selector: fps.selector}}
   393  	iPaths = append(iPaths, fps.subPath.SplitIntoTerminalIPaths()...)
   394  	return iPaths
   395  }
   396  
   397  func (fps *Project_FieldSubPath) WithIValue(value interface{}) Project_FieldPathValue {
   398  	return &Project_FieldSubPathValue{fps, fps.subPath.WithRawIValue(value)}
   399  }
   400  
   401  func (fps *Project_FieldSubPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   402  	return fps.WithIValue(value)
   403  }
   404  
   405  func (fps *Project_FieldSubPath) WithIArrayOfValues(values interface{}) Project_FieldPathArrayOfValues {
   406  	return &Project_FieldSubPathArrayOfValues{fps, fps.subPath.WithRawIArrayOfValues(values)}
   407  }
   408  
   409  func (fps *Project_FieldSubPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   410  	return fps.WithIArrayOfValues(values)
   411  }
   412  
   413  func (fps *Project_FieldSubPath) WithIArrayItemValue(value interface{}) Project_FieldPathArrayItemValue {
   414  	return &Project_FieldSubPathArrayItemValue{fps, fps.subPath.WithRawIArrayItemValue(value)}
   415  }
   416  
   417  func (fps *Project_FieldSubPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   418  	return fps.WithIArrayItemValue(value)
   419  }
   420  
   421  // Project_FieldPathValue allows storing values for Project fields according to their type
   422  type Project_FieldPathValue interface {
   423  	Project_FieldPath
   424  	gotenobject.FieldPathValue
   425  	SetTo(target **Project)
   426  	CompareWith(*Project) (cmp int, comparable bool)
   427  }
   428  
   429  func ParseProject_FieldPathValue(pathStr, valueStr string) (Project_FieldPathValue, error) {
   430  	fp, err := ParseProject_FieldPath(pathStr)
   431  	if err != nil {
   432  		return nil, err
   433  	}
   434  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
   435  	if err != nil {
   436  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Project field path value from %s: %v", valueStr, err)
   437  	}
   438  	return fpv.(Project_FieldPathValue), nil
   439  }
   440  
   441  func MustParseProject_FieldPathValue(pathStr, valueStr string) Project_FieldPathValue {
   442  	fpv, err := ParseProject_FieldPathValue(pathStr, valueStr)
   443  	if err != nil {
   444  		panic(err)
   445  	}
   446  	return fpv
   447  }
   448  
   449  type Project_FieldTerminalPathValue struct {
   450  	Project_FieldTerminalPath
   451  	value interface{}
   452  }
   453  
   454  var _ Project_FieldPathValue = (*Project_FieldTerminalPathValue)(nil)
   455  
   456  // GetRawValue returns raw value stored under selected path for 'Project' as interface{}
   457  func (fpv *Project_FieldTerminalPathValue) GetRawValue() interface{} {
   458  	return fpv.value
   459  }
   460  func (fpv *Project_FieldTerminalPathValue) AsNameValue() (*Name, bool) {
   461  	res, ok := fpv.value.(*Name)
   462  	return res, ok
   463  }
   464  func (fpv *Project_FieldTerminalPathValue) AsMetadataValue() (*meta.Meta, bool) {
   465  	res, ok := fpv.value.(*meta.Meta)
   466  	return res, ok
   467  }
   468  func (fpv *Project_FieldTerminalPathValue) AsMultiRegionPolicyValue() (*multi_region_policy.MultiRegionPolicy, bool) {
   469  	res, ok := fpv.value.(*multi_region_policy.MultiRegionPolicy)
   470  	return res, ok
   471  }
   472  
   473  // SetTo stores value for selected field for object Project
   474  func (fpv *Project_FieldTerminalPathValue) SetTo(target **Project) {
   475  	if *target == nil {
   476  		*target = new(Project)
   477  	}
   478  	switch fpv.selector {
   479  	case Project_FieldPathSelectorName:
   480  		(*target).Name = fpv.value.(*Name)
   481  	case Project_FieldPathSelectorMetadata:
   482  		(*target).Metadata = fpv.value.(*meta.Meta)
   483  	case Project_FieldPathSelectorMultiRegionPolicy:
   484  		(*target).MultiRegionPolicy = fpv.value.(*multi_region_policy.MultiRegionPolicy)
   485  	default:
   486  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpv.selector))
   487  	}
   488  }
   489  
   490  func (fpv *Project_FieldTerminalPathValue) SetToRaw(target proto.Message) {
   491  	typedObject := target.(*Project)
   492  	fpv.SetTo(&typedObject)
   493  }
   494  
   495  // CompareWith compares value in the 'Project_FieldTerminalPathValue' with the value under path in 'Project'.
   496  func (fpv *Project_FieldTerminalPathValue) CompareWith(source *Project) (int, bool) {
   497  	switch fpv.selector {
   498  	case Project_FieldPathSelectorName:
   499  		leftValue := fpv.value.(*Name)
   500  		rightValue := source.GetName()
   501  		if leftValue == nil {
   502  			if rightValue != nil {
   503  				return -1, true
   504  			}
   505  			return 0, true
   506  		}
   507  		if rightValue == nil {
   508  			return 1, true
   509  		}
   510  		if leftValue.String() == rightValue.String() {
   511  			return 0, true
   512  		} else if leftValue.String() < rightValue.String() {
   513  			return -1, true
   514  		} else {
   515  			return 1, true
   516  		}
   517  	case Project_FieldPathSelectorMetadata:
   518  		return 0, false
   519  	case Project_FieldPathSelectorMultiRegionPolicy:
   520  		return 0, false
   521  	default:
   522  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpv.selector))
   523  	}
   524  }
   525  
   526  func (fpv *Project_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
   527  	return fpv.CompareWith(source.(*Project))
   528  }
   529  
   530  type Project_FieldSubPathValue struct {
   531  	Project_FieldPath
   532  	subPathValue gotenobject.FieldPathValue
   533  }
   534  
   535  var _ Project_FieldPathValue = (*Project_FieldSubPathValue)(nil)
   536  
   537  func (fpvs *Project_FieldSubPathValue) AsMetadataPathValue() (meta.Meta_FieldPathValue, bool) {
   538  	res, ok := fpvs.subPathValue.(meta.Meta_FieldPathValue)
   539  	return res, ok
   540  }
   541  func (fpvs *Project_FieldSubPathValue) AsMultiRegionPolicyPathValue() (multi_region_policy.MultiRegionPolicy_FieldPathValue, bool) {
   542  	res, ok := fpvs.subPathValue.(multi_region_policy.MultiRegionPolicy_FieldPathValue)
   543  	return res, ok
   544  }
   545  
   546  func (fpvs *Project_FieldSubPathValue) SetTo(target **Project) {
   547  	if *target == nil {
   548  		*target = new(Project)
   549  	}
   550  	switch fpvs.Selector() {
   551  	case Project_FieldPathSelectorMetadata:
   552  		fpvs.subPathValue.(meta.Meta_FieldPathValue).SetTo(&(*target).Metadata)
   553  	case Project_FieldPathSelectorMultiRegionPolicy:
   554  		fpvs.subPathValue.(multi_region_policy.MultiRegionPolicy_FieldPathValue).SetTo(&(*target).MultiRegionPolicy)
   555  	default:
   556  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpvs.Selector()))
   557  	}
   558  }
   559  
   560  func (fpvs *Project_FieldSubPathValue) SetToRaw(target proto.Message) {
   561  	typedObject := target.(*Project)
   562  	fpvs.SetTo(&typedObject)
   563  }
   564  
   565  func (fpvs *Project_FieldSubPathValue) GetRawValue() interface{} {
   566  	return fpvs.subPathValue.GetRawValue()
   567  }
   568  
   569  func (fpvs *Project_FieldSubPathValue) CompareWith(source *Project) (int, bool) {
   570  	switch fpvs.Selector() {
   571  	case Project_FieldPathSelectorMetadata:
   572  		return fpvs.subPathValue.(meta.Meta_FieldPathValue).CompareWith(source.GetMetadata())
   573  	case Project_FieldPathSelectorMultiRegionPolicy:
   574  		return fpvs.subPathValue.(multi_region_policy.MultiRegionPolicy_FieldPathValue).CompareWith(source.GetMultiRegionPolicy())
   575  	default:
   576  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpvs.Selector()))
   577  	}
   578  }
   579  
   580  func (fpvs *Project_FieldSubPathValue) CompareWithRaw(source proto.Message) (int, bool) {
   581  	return fpvs.CompareWith(source.(*Project))
   582  }
   583  
   584  // Project_FieldPathArrayItemValue allows storing single item in Path-specific values for Project according to their type
   585  // Present only for array (repeated) types.
   586  type Project_FieldPathArrayItemValue interface {
   587  	gotenobject.FieldPathArrayItemValue
   588  	Project_FieldPath
   589  	ContainsValue(*Project) bool
   590  }
   591  
   592  // ParseProject_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
   593  func ParseProject_FieldPathArrayItemValue(pathStr, valueStr string) (Project_FieldPathArrayItemValue, error) {
   594  	fp, err := ParseProject_FieldPath(pathStr)
   595  	if err != nil {
   596  		return nil, err
   597  	}
   598  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
   599  	if err != nil {
   600  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Project field path array item value from %s: %v", valueStr, err)
   601  	}
   602  	return fpaiv.(Project_FieldPathArrayItemValue), nil
   603  }
   604  
   605  func MustParseProject_FieldPathArrayItemValue(pathStr, valueStr string) Project_FieldPathArrayItemValue {
   606  	fpaiv, err := ParseProject_FieldPathArrayItemValue(pathStr, valueStr)
   607  	if err != nil {
   608  		panic(err)
   609  	}
   610  	return fpaiv
   611  }
   612  
   613  type Project_FieldTerminalPathArrayItemValue struct {
   614  	Project_FieldTerminalPath
   615  	value interface{}
   616  }
   617  
   618  var _ Project_FieldPathArrayItemValue = (*Project_FieldTerminalPathArrayItemValue)(nil)
   619  
   620  // GetRawValue returns stored element value for array in object Project as interface{}
   621  func (fpaiv *Project_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
   622  	return fpaiv.value
   623  }
   624  
   625  func (fpaiv *Project_FieldTerminalPathArrayItemValue) GetSingle(source *Project) (interface{}, bool) {
   626  	return nil, false
   627  }
   628  
   629  func (fpaiv *Project_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
   630  	return fpaiv.GetSingle(source.(*Project))
   631  }
   632  
   633  // Contains returns a boolean indicating if value that is being held is present in given 'Project'
   634  func (fpaiv *Project_FieldTerminalPathArrayItemValue) ContainsValue(source *Project) bool {
   635  	slice := fpaiv.Project_FieldTerminalPath.Get(source)
   636  	for _, v := range slice {
   637  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
   638  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
   639  				return true
   640  			}
   641  		} else if reflect.DeepEqual(v, fpaiv.value) {
   642  			return true
   643  		}
   644  	}
   645  	return false
   646  }
   647  
   648  type Project_FieldSubPathArrayItemValue struct {
   649  	Project_FieldPath
   650  	subPathItemValue gotenobject.FieldPathArrayItemValue
   651  }
   652  
   653  // GetRawValue returns stored array item value
   654  func (fpaivs *Project_FieldSubPathArrayItemValue) GetRawItemValue() interface{} {
   655  	return fpaivs.subPathItemValue.GetRawItemValue()
   656  }
   657  func (fpaivs *Project_FieldSubPathArrayItemValue) AsMetadataPathItemValue() (meta.Meta_FieldPathArrayItemValue, bool) {
   658  	res, ok := fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue)
   659  	return res, ok
   660  }
   661  func (fpaivs *Project_FieldSubPathArrayItemValue) AsMultiRegionPolicyPathItemValue() (multi_region_policy.MultiRegionPolicy_FieldPathArrayItemValue, bool) {
   662  	res, ok := fpaivs.subPathItemValue.(multi_region_policy.MultiRegionPolicy_FieldPathArrayItemValue)
   663  	return res, ok
   664  }
   665  
   666  // Contains returns a boolean indicating if value that is being held is present in given 'Project'
   667  func (fpaivs *Project_FieldSubPathArrayItemValue) ContainsValue(source *Project) bool {
   668  	switch fpaivs.Selector() {
   669  	case Project_FieldPathSelectorMetadata:
   670  		return fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue).ContainsValue(source.GetMetadata())
   671  	case Project_FieldPathSelectorMultiRegionPolicy:
   672  		return fpaivs.subPathItemValue.(multi_region_policy.MultiRegionPolicy_FieldPathArrayItemValue).ContainsValue(source.GetMultiRegionPolicy())
   673  	default:
   674  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpaivs.Selector()))
   675  	}
   676  }
   677  
   678  // Project_FieldPathArrayOfValues allows storing slice of values for Project fields according to their type
   679  type Project_FieldPathArrayOfValues interface {
   680  	gotenobject.FieldPathArrayOfValues
   681  	Project_FieldPath
   682  }
   683  
   684  func ParseProject_FieldPathArrayOfValues(pathStr, valuesStr string) (Project_FieldPathArrayOfValues, error) {
   685  	fp, err := ParseProject_FieldPath(pathStr)
   686  	if err != nil {
   687  		return nil, err
   688  	}
   689  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
   690  	if err != nil {
   691  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Project field path array of values from %s: %v", valuesStr, err)
   692  	}
   693  	return fpaov.(Project_FieldPathArrayOfValues), nil
   694  }
   695  
   696  func MustParseProject_FieldPathArrayOfValues(pathStr, valuesStr string) Project_FieldPathArrayOfValues {
   697  	fpaov, err := ParseProject_FieldPathArrayOfValues(pathStr, valuesStr)
   698  	if err != nil {
   699  		panic(err)
   700  	}
   701  	return fpaov
   702  }
   703  
   704  type Project_FieldTerminalPathArrayOfValues struct {
   705  	Project_FieldTerminalPath
   706  	values interface{}
   707  }
   708  
   709  var _ Project_FieldPathArrayOfValues = (*Project_FieldTerminalPathArrayOfValues)(nil)
   710  
   711  func (fpaov *Project_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
   712  	switch fpaov.selector {
   713  	case Project_FieldPathSelectorName:
   714  		for _, v := range fpaov.values.([]*Name) {
   715  			values = append(values, v)
   716  		}
   717  	case Project_FieldPathSelectorMetadata:
   718  		for _, v := range fpaov.values.([]*meta.Meta) {
   719  			values = append(values, v)
   720  		}
   721  	case Project_FieldPathSelectorMultiRegionPolicy:
   722  		for _, v := range fpaov.values.([]*multi_region_policy.MultiRegionPolicy) {
   723  			values = append(values, v)
   724  		}
   725  	}
   726  	return
   727  }
   728  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsNameArrayOfValues() ([]*Name, bool) {
   729  	res, ok := fpaov.values.([]*Name)
   730  	return res, ok
   731  }
   732  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsMetadataArrayOfValues() ([]*meta.Meta, bool) {
   733  	res, ok := fpaov.values.([]*meta.Meta)
   734  	return res, ok
   735  }
   736  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsMultiRegionPolicyArrayOfValues() ([]*multi_region_policy.MultiRegionPolicy, bool) {
   737  	res, ok := fpaov.values.([]*multi_region_policy.MultiRegionPolicy)
   738  	return res, ok
   739  }
   740  
   741  type Project_FieldSubPathArrayOfValues struct {
   742  	Project_FieldPath
   743  	subPathArrayOfValues gotenobject.FieldPathArrayOfValues
   744  }
   745  
   746  var _ Project_FieldPathArrayOfValues = (*Project_FieldSubPathArrayOfValues)(nil)
   747  
   748  func (fpsaov *Project_FieldSubPathArrayOfValues) GetRawValues() []interface{} {
   749  	return fpsaov.subPathArrayOfValues.GetRawValues()
   750  }
   751  func (fpsaov *Project_FieldSubPathArrayOfValues) AsMetadataPathArrayOfValues() (meta.Meta_FieldPathArrayOfValues, bool) {
   752  	res, ok := fpsaov.subPathArrayOfValues.(meta.Meta_FieldPathArrayOfValues)
   753  	return res, ok
   754  }
   755  func (fpsaov *Project_FieldSubPathArrayOfValues) AsMultiRegionPolicyPathArrayOfValues() (multi_region_policy.MultiRegionPolicy_FieldPathArrayOfValues, bool) {
   756  	res, ok := fpsaov.subPathArrayOfValues.(multi_region_policy.MultiRegionPolicy_FieldPathArrayOfValues)
   757  	return res, ok
   758  }