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