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