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

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