github.com/cloudwan/edgelq-sdk@v1.15.4/limits/resources/v1/plan/plan.pb.fieldpath.go (about) 1 // Code generated by protoc-gen-goten-object 2 // File: edgelq/limits/proto/v1/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/v1/common" 27 iam_organization "github.com/cloudwan/edgelq-sdk/iam/resources/v1/organization" 28 meta_resource "github.com/cloudwan/goten-sdk/meta-service/resources/v1/resource" 29 meta_service "github.com/cloudwan/goten-sdk/meta-service/resources/v1/service" 30 meta "github.com/cloudwan/goten-sdk/types/meta" 31 ) 32 33 // ensure the imports are used 34 var ( 35 _ = new(json.Marshaler) 36 _ = new(fmt.Stringer) 37 _ = reflect.DeepEqual 38 _ = strings.Builder{} 39 _ = time.Second 40 41 _ = strcase.ToLowerCamel 42 _ = codes.NotFound 43 _ = status.Status{} 44 _ = protojson.UnmarshalOptions{} 45 _ = new(proto.Message) 46 _ = protoregistry.GlobalTypes 47 48 _ = new(gotenobject.FieldPath) 49 ) 50 51 // make sure we're using proto imports 52 var ( 53 _ = &iam_iam_common.PCR{} 54 _ = &iam_organization.Organization{} 55 _ = &meta_resource.Resource{} 56 _ = &meta_service.Service{} 57 _ = &meta.Meta{} 58 ) 59 60 // FieldPath provides implementation to handle 61 // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto 62 type Plan_FieldPath interface { 63 gotenobject.FieldPath 64 Selector() Plan_FieldPathSelector 65 Get(source *Plan) []interface{} 66 GetSingle(source *Plan) (interface{}, bool) 67 ClearValue(item *Plan) 68 69 // Those methods build corresponding Plan_FieldPathValue 70 // (or array of values) and holds passed value. Panics if injected type is incorrect. 71 WithIValue(value interface{}) Plan_FieldPathValue 72 WithIArrayOfValues(values interface{}) Plan_FieldPathArrayOfValues 73 WithIArrayItemValue(value interface{}) Plan_FieldPathArrayItemValue 74 } 75 76 type Plan_FieldPathSelector int32 77 78 const ( 79 Plan_FieldPathSelectorName Plan_FieldPathSelector = 0 80 Plan_FieldPathSelectorMetadata Plan_FieldPathSelector = 1 81 Plan_FieldPathSelectorDisplayName Plan_FieldPathSelector = 2 82 Plan_FieldPathSelectorService Plan_FieldPathSelector = 3 83 Plan_FieldPathSelectorResourceLimits Plan_FieldPathSelector = 4 84 Plan_FieldPathSelectorPlanLevel Plan_FieldPathSelector = 5 85 Plan_FieldPathSelectorBusinessTier Plan_FieldPathSelector = 6 86 Plan_FieldPathSelectorGeneration Plan_FieldPathSelector = 7 87 ) 88 89 func (s Plan_FieldPathSelector) String() string { 90 switch s { 91 case Plan_FieldPathSelectorName: 92 return "name" 93 case Plan_FieldPathSelectorMetadata: 94 return "metadata" 95 case Plan_FieldPathSelectorDisplayName: 96 return "display_name" 97 case Plan_FieldPathSelectorService: 98 return "service" 99 case Plan_FieldPathSelectorResourceLimits: 100 return "resource_limits" 101 case Plan_FieldPathSelectorPlanLevel: 102 return "plan_level" 103 case Plan_FieldPathSelectorBusinessTier: 104 return "business_tier" 105 case Plan_FieldPathSelectorGeneration: 106 return "generation" 107 default: 108 panic(fmt.Sprintf("Invalid selector for Plan: %d", s)) 109 } 110 } 111 112 func BuildPlan_FieldPath(fp gotenobject.RawFieldPath) (Plan_FieldPath, error) { 113 if len(fp) == 0 { 114 return nil, status.Error(codes.InvalidArgument, "empty field path for object Plan") 115 } 116 if len(fp) == 1 { 117 switch fp[0] { 118 case "name": 119 return &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorName}, nil 120 case "metadata": 121 return &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorMetadata}, nil 122 case "display_name", "displayName", "display-name": 123 return &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorDisplayName}, nil 124 case "service": 125 return &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorService}, nil 126 case "resource_limits", "resourceLimits", "resource-limits": 127 return &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorResourceLimits}, nil 128 case "plan_level", "planLevel", "plan-level": 129 return &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorPlanLevel}, nil 130 case "business_tier", "businessTier", "business-tier": 131 return &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorBusinessTier}, nil 132 case "generation": 133 return &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorGeneration}, nil 134 } 135 } else { 136 switch fp[0] { 137 case "metadata": 138 if subpath, err := meta.BuildMeta_FieldPath(fp[1:]); err != nil { 139 return nil, err 140 } else { 141 return &Plan_FieldSubPath{selector: Plan_FieldPathSelectorMetadata, subPath: subpath}, nil 142 } 143 case "resource_limits", "resourceLimits", "resource-limits": 144 if subpath, err := BuildPlanLimitValue_FieldPath(fp[1:]); err != nil { 145 return nil, err 146 } else { 147 return &Plan_FieldSubPath{selector: Plan_FieldPathSelectorResourceLimits, subPath: subpath}, nil 148 } 149 } 150 } 151 return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Plan", fp) 152 } 153 154 func ParsePlan_FieldPath(rawField string) (Plan_FieldPath, error) { 155 fp, err := gotenobject.ParseRawFieldPath(rawField) 156 if err != nil { 157 return nil, err 158 } 159 return BuildPlan_FieldPath(fp) 160 } 161 162 func MustParsePlan_FieldPath(rawField string) Plan_FieldPath { 163 fp, err := ParsePlan_FieldPath(rawField) 164 if err != nil { 165 panic(err) 166 } 167 return fp 168 } 169 170 type Plan_FieldTerminalPath struct { 171 selector Plan_FieldPathSelector 172 } 173 174 var _ Plan_FieldPath = (*Plan_FieldTerminalPath)(nil) 175 176 func (fp *Plan_FieldTerminalPath) Selector() Plan_FieldPathSelector { 177 return fp.selector 178 } 179 180 // String returns path representation in proto convention 181 func (fp *Plan_FieldTerminalPath) String() string { 182 return fp.selector.String() 183 } 184 185 // JSONString returns path representation is JSON convention 186 func (fp *Plan_FieldTerminalPath) JSONString() string { 187 return strcase.ToLowerCamel(fp.String()) 188 } 189 190 // Get returns all values pointed by specific field from source Plan 191 func (fp *Plan_FieldTerminalPath) Get(source *Plan) (values []interface{}) { 192 if source != nil { 193 switch fp.selector { 194 case Plan_FieldPathSelectorName: 195 if source.Name != nil { 196 values = append(values, source.Name) 197 } 198 case Plan_FieldPathSelectorMetadata: 199 if source.Metadata != nil { 200 values = append(values, source.Metadata) 201 } 202 case Plan_FieldPathSelectorDisplayName: 203 values = append(values, source.DisplayName) 204 case Plan_FieldPathSelectorService: 205 if source.Service != nil { 206 values = append(values, source.Service) 207 } 208 case Plan_FieldPathSelectorResourceLimits: 209 for _, value := range source.GetResourceLimits() { 210 values = append(values, value) 211 } 212 case Plan_FieldPathSelectorPlanLevel: 213 values = append(values, source.PlanLevel) 214 case Plan_FieldPathSelectorBusinessTier: 215 values = append(values, source.BusinessTier) 216 case Plan_FieldPathSelectorGeneration: 217 values = append(values, source.Generation) 218 default: 219 panic(fmt.Sprintf("Invalid selector for Plan: %d", fp.selector)) 220 } 221 } 222 return 223 } 224 225 func (fp *Plan_FieldTerminalPath) GetRaw(source proto.Message) []interface{} { 226 return fp.Get(source.(*Plan)) 227 } 228 229 // GetSingle returns value pointed by specific field of from source Plan 230 func (fp *Plan_FieldTerminalPath) GetSingle(source *Plan) (interface{}, bool) { 231 switch fp.selector { 232 case Plan_FieldPathSelectorName: 233 res := source.GetName() 234 return res, res != nil 235 case Plan_FieldPathSelectorMetadata: 236 res := source.GetMetadata() 237 return res, res != nil 238 case Plan_FieldPathSelectorDisplayName: 239 return source.GetDisplayName(), source != nil 240 case Plan_FieldPathSelectorService: 241 res := source.GetService() 242 return res, res != nil 243 case Plan_FieldPathSelectorResourceLimits: 244 res := source.GetResourceLimits() 245 return res, res != nil 246 case Plan_FieldPathSelectorPlanLevel: 247 return source.GetPlanLevel(), source != nil 248 case Plan_FieldPathSelectorBusinessTier: 249 return source.GetBusinessTier(), source != nil 250 case Plan_FieldPathSelectorGeneration: 251 return source.GetGeneration(), source != nil 252 default: 253 panic(fmt.Sprintf("Invalid selector for Plan: %d", fp.selector)) 254 } 255 } 256 257 func (fp *Plan_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) { 258 return fp.GetSingle(source.(*Plan)) 259 } 260 261 // GetDefault returns a default value of the field type 262 func (fp *Plan_FieldTerminalPath) GetDefault() interface{} { 263 switch fp.selector { 264 case Plan_FieldPathSelectorName: 265 return (*Name)(nil) 266 case Plan_FieldPathSelectorMetadata: 267 return (*meta.Meta)(nil) 268 case Plan_FieldPathSelectorDisplayName: 269 return "" 270 case Plan_FieldPathSelectorService: 271 return (*meta_service.Reference)(nil) 272 case Plan_FieldPathSelectorResourceLimits: 273 return ([]*Plan_LimitValue)(nil) 274 case Plan_FieldPathSelectorPlanLevel: 275 return Plan_UNDEFINED 276 case Plan_FieldPathSelectorBusinessTier: 277 return iam_iam_common.BusinessTier_UNDEFINED 278 case Plan_FieldPathSelectorGeneration: 279 return int64(0) 280 default: 281 panic(fmt.Sprintf("Invalid selector for Plan: %d", fp.selector)) 282 } 283 } 284 285 func (fp *Plan_FieldTerminalPath) ClearValue(item *Plan) { 286 if item != nil { 287 switch fp.selector { 288 case Plan_FieldPathSelectorName: 289 item.Name = nil 290 case Plan_FieldPathSelectorMetadata: 291 item.Metadata = nil 292 case Plan_FieldPathSelectorDisplayName: 293 item.DisplayName = "" 294 case Plan_FieldPathSelectorService: 295 item.Service = nil 296 case Plan_FieldPathSelectorResourceLimits: 297 item.ResourceLimits = nil 298 case Plan_FieldPathSelectorPlanLevel: 299 item.PlanLevel = Plan_UNDEFINED 300 case Plan_FieldPathSelectorBusinessTier: 301 item.BusinessTier = iam_iam_common.BusinessTier_UNDEFINED 302 case Plan_FieldPathSelectorGeneration: 303 item.Generation = int64(0) 304 default: 305 panic(fmt.Sprintf("Invalid selector for Plan: %d", fp.selector)) 306 } 307 } 308 } 309 310 func (fp *Plan_FieldTerminalPath) ClearValueRaw(item proto.Message) { 311 fp.ClearValue(item.(*Plan)) 312 } 313 314 // IsLeaf - whether field path is holds simple value 315 func (fp *Plan_FieldTerminalPath) IsLeaf() bool { 316 return fp.selector == Plan_FieldPathSelectorName || 317 fp.selector == Plan_FieldPathSelectorDisplayName || 318 fp.selector == Plan_FieldPathSelectorService || 319 fp.selector == Plan_FieldPathSelectorPlanLevel || 320 fp.selector == Plan_FieldPathSelectorBusinessTier || 321 fp.selector == Plan_FieldPathSelectorGeneration 322 } 323 324 func (fp *Plan_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath { 325 return []gotenobject.FieldPath{fp} 326 } 327 328 func (fp *Plan_FieldTerminalPath) WithIValue(value interface{}) Plan_FieldPathValue { 329 switch fp.selector { 330 case Plan_FieldPathSelectorName: 331 return &Plan_FieldTerminalPathValue{Plan_FieldTerminalPath: *fp, value: value.(*Name)} 332 case Plan_FieldPathSelectorMetadata: 333 return &Plan_FieldTerminalPathValue{Plan_FieldTerminalPath: *fp, value: value.(*meta.Meta)} 334 case Plan_FieldPathSelectorDisplayName: 335 return &Plan_FieldTerminalPathValue{Plan_FieldTerminalPath: *fp, value: value.(string)} 336 case Plan_FieldPathSelectorService: 337 return &Plan_FieldTerminalPathValue{Plan_FieldTerminalPath: *fp, value: value.(*meta_service.Reference)} 338 case Plan_FieldPathSelectorResourceLimits: 339 return &Plan_FieldTerminalPathValue{Plan_FieldTerminalPath: *fp, value: value.([]*Plan_LimitValue)} 340 case Plan_FieldPathSelectorPlanLevel: 341 return &Plan_FieldTerminalPathValue{Plan_FieldTerminalPath: *fp, value: value.(Plan_PlanLevel)} 342 case Plan_FieldPathSelectorBusinessTier: 343 return &Plan_FieldTerminalPathValue{Plan_FieldTerminalPath: *fp, value: value.(iam_iam_common.BusinessTier)} 344 case Plan_FieldPathSelectorGeneration: 345 return &Plan_FieldTerminalPathValue{Plan_FieldTerminalPath: *fp, value: value.(int64)} 346 default: 347 panic(fmt.Sprintf("Invalid selector for Plan: %d", fp.selector)) 348 } 349 } 350 351 func (fp *Plan_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue { 352 return fp.WithIValue(value) 353 } 354 355 func (fp *Plan_FieldTerminalPath) WithIArrayOfValues(values interface{}) Plan_FieldPathArrayOfValues { 356 fpaov := &Plan_FieldTerminalPathArrayOfValues{Plan_FieldTerminalPath: *fp} 357 switch fp.selector { 358 case Plan_FieldPathSelectorName: 359 return &Plan_FieldTerminalPathArrayOfValues{Plan_FieldTerminalPath: *fp, values: values.([]*Name)} 360 case Plan_FieldPathSelectorMetadata: 361 return &Plan_FieldTerminalPathArrayOfValues{Plan_FieldTerminalPath: *fp, values: values.([]*meta.Meta)} 362 case Plan_FieldPathSelectorDisplayName: 363 return &Plan_FieldTerminalPathArrayOfValues{Plan_FieldTerminalPath: *fp, values: values.([]string)} 364 case Plan_FieldPathSelectorService: 365 return &Plan_FieldTerminalPathArrayOfValues{Plan_FieldTerminalPath: *fp, values: values.([]*meta_service.Reference)} 366 case Plan_FieldPathSelectorResourceLimits: 367 return &Plan_FieldTerminalPathArrayOfValues{Plan_FieldTerminalPath: *fp, values: values.([][]*Plan_LimitValue)} 368 case Plan_FieldPathSelectorPlanLevel: 369 return &Plan_FieldTerminalPathArrayOfValues{Plan_FieldTerminalPath: *fp, values: values.([]Plan_PlanLevel)} 370 case Plan_FieldPathSelectorBusinessTier: 371 return &Plan_FieldTerminalPathArrayOfValues{Plan_FieldTerminalPath: *fp, values: values.([]iam_iam_common.BusinessTier)} 372 case Plan_FieldPathSelectorGeneration: 373 return &Plan_FieldTerminalPathArrayOfValues{Plan_FieldTerminalPath: *fp, values: values.([]int64)} 374 default: 375 panic(fmt.Sprintf("Invalid selector for Plan: %d", fp.selector)) 376 } 377 return fpaov 378 } 379 380 func (fp *Plan_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues { 381 return fp.WithIArrayOfValues(values) 382 } 383 384 func (fp *Plan_FieldTerminalPath) WithIArrayItemValue(value interface{}) Plan_FieldPathArrayItemValue { 385 switch fp.selector { 386 case Plan_FieldPathSelectorResourceLimits: 387 return &Plan_FieldTerminalPathArrayItemValue{Plan_FieldTerminalPath: *fp, value: value.(*Plan_LimitValue)} 388 default: 389 panic(fmt.Sprintf("Invalid selector for Plan: %d", fp.selector)) 390 } 391 } 392 393 func (fp *Plan_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue { 394 return fp.WithIArrayItemValue(value) 395 } 396 397 type Plan_FieldSubPath struct { 398 selector Plan_FieldPathSelector 399 subPath gotenobject.FieldPath 400 } 401 402 var _ Plan_FieldPath = (*Plan_FieldSubPath)(nil) 403 404 func (fps *Plan_FieldSubPath) Selector() Plan_FieldPathSelector { 405 return fps.selector 406 } 407 func (fps *Plan_FieldSubPath) AsMetadataSubPath() (meta.Meta_FieldPath, bool) { 408 res, ok := fps.subPath.(meta.Meta_FieldPath) 409 return res, ok 410 } 411 func (fps *Plan_FieldSubPath) AsResourceLimitsSubPath() (PlanLimitValue_FieldPath, bool) { 412 res, ok := fps.subPath.(PlanLimitValue_FieldPath) 413 return res, ok 414 } 415 416 // String returns path representation in proto convention 417 func (fps *Plan_FieldSubPath) String() string { 418 return fps.selector.String() + "." + fps.subPath.String() 419 } 420 421 // JSONString returns path representation is JSON convention 422 func (fps *Plan_FieldSubPath) JSONString() string { 423 return strcase.ToLowerCamel(fps.selector.String()) + "." + fps.subPath.JSONString() 424 } 425 426 // Get returns all values pointed by selected field from source Plan 427 func (fps *Plan_FieldSubPath) Get(source *Plan) (values []interface{}) { 428 switch fps.selector { 429 case Plan_FieldPathSelectorMetadata: 430 values = append(values, fps.subPath.GetRaw(source.GetMetadata())...) 431 case Plan_FieldPathSelectorResourceLimits: 432 for _, item := range source.GetResourceLimits() { 433 values = append(values, fps.subPath.GetRaw(item)...) 434 } 435 default: 436 panic(fmt.Sprintf("Invalid selector for Plan: %d", fps.selector)) 437 } 438 return 439 } 440 441 func (fps *Plan_FieldSubPath) GetRaw(source proto.Message) []interface{} { 442 return fps.Get(source.(*Plan)) 443 } 444 445 // GetSingle returns value of selected field from source Plan 446 func (fps *Plan_FieldSubPath) GetSingle(source *Plan) (interface{}, bool) { 447 switch fps.selector { 448 case Plan_FieldPathSelectorMetadata: 449 if source.GetMetadata() == nil { 450 return nil, false 451 } 452 return fps.subPath.GetSingleRaw(source.GetMetadata()) 453 case Plan_FieldPathSelectorResourceLimits: 454 if len(source.GetResourceLimits()) == 0 { 455 return nil, false 456 } 457 return fps.subPath.GetSingleRaw(source.GetResourceLimits()[0]) 458 default: 459 panic(fmt.Sprintf("Invalid selector for Plan: %d", fps.selector)) 460 } 461 } 462 463 func (fps *Plan_FieldSubPath) GetSingleRaw(source proto.Message) (interface{}, bool) { 464 return fps.GetSingle(source.(*Plan)) 465 } 466 467 // GetDefault returns a default value of the field type 468 func (fps *Plan_FieldSubPath) GetDefault() interface{} { 469 return fps.subPath.GetDefault() 470 } 471 472 func (fps *Plan_FieldSubPath) ClearValue(item *Plan) { 473 if item != nil { 474 switch fps.selector { 475 case Plan_FieldPathSelectorMetadata: 476 fps.subPath.ClearValueRaw(item.Metadata) 477 case Plan_FieldPathSelectorResourceLimits: 478 for _, subItem := range item.ResourceLimits { 479 fps.subPath.ClearValueRaw(subItem) 480 } 481 default: 482 panic(fmt.Sprintf("Invalid selector for Plan: %d", fps.selector)) 483 } 484 } 485 } 486 487 func (fps *Plan_FieldSubPath) ClearValueRaw(item proto.Message) { 488 fps.ClearValue(item.(*Plan)) 489 } 490 491 // IsLeaf - whether field path is holds simple value 492 func (fps *Plan_FieldSubPath) IsLeaf() bool { 493 return fps.subPath.IsLeaf() 494 } 495 496 func (fps *Plan_FieldSubPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath { 497 iPaths := []gotenobject.FieldPath{&Plan_FieldTerminalPath{selector: fps.selector}} 498 iPaths = append(iPaths, fps.subPath.SplitIntoTerminalIPaths()...) 499 return iPaths 500 } 501 502 func (fps *Plan_FieldSubPath) WithIValue(value interface{}) Plan_FieldPathValue { 503 return &Plan_FieldSubPathValue{fps, fps.subPath.WithRawIValue(value)} 504 } 505 506 func (fps *Plan_FieldSubPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue { 507 return fps.WithIValue(value) 508 } 509 510 func (fps *Plan_FieldSubPath) WithIArrayOfValues(values interface{}) Plan_FieldPathArrayOfValues { 511 return &Plan_FieldSubPathArrayOfValues{fps, fps.subPath.WithRawIArrayOfValues(values)} 512 } 513 514 func (fps *Plan_FieldSubPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues { 515 return fps.WithIArrayOfValues(values) 516 } 517 518 func (fps *Plan_FieldSubPath) WithIArrayItemValue(value interface{}) Plan_FieldPathArrayItemValue { 519 return &Plan_FieldSubPathArrayItemValue{fps, fps.subPath.WithRawIArrayItemValue(value)} 520 } 521 522 func (fps *Plan_FieldSubPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue { 523 return fps.WithIArrayItemValue(value) 524 } 525 526 // Plan_FieldPathValue allows storing values for Plan fields according to their type 527 type Plan_FieldPathValue interface { 528 Plan_FieldPath 529 gotenobject.FieldPathValue 530 SetTo(target **Plan) 531 CompareWith(*Plan) (cmp int, comparable bool) 532 } 533 534 func ParsePlan_FieldPathValue(pathStr, valueStr string) (Plan_FieldPathValue, error) { 535 fp, err := ParsePlan_FieldPath(pathStr) 536 if err != nil { 537 return nil, err 538 } 539 fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr) 540 if err != nil { 541 return nil, status.Errorf(codes.InvalidArgument, "error parsing Plan field path value from %s: %v", valueStr, err) 542 } 543 return fpv.(Plan_FieldPathValue), nil 544 } 545 546 func MustParsePlan_FieldPathValue(pathStr, valueStr string) Plan_FieldPathValue { 547 fpv, err := ParsePlan_FieldPathValue(pathStr, valueStr) 548 if err != nil { 549 panic(err) 550 } 551 return fpv 552 } 553 554 type Plan_FieldTerminalPathValue struct { 555 Plan_FieldTerminalPath 556 value interface{} 557 } 558 559 var _ Plan_FieldPathValue = (*Plan_FieldTerminalPathValue)(nil) 560 561 // GetRawValue returns raw value stored under selected path for 'Plan' as interface{} 562 func (fpv *Plan_FieldTerminalPathValue) GetRawValue() interface{} { 563 return fpv.value 564 } 565 func (fpv *Plan_FieldTerminalPathValue) AsNameValue() (*Name, bool) { 566 res, ok := fpv.value.(*Name) 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 func (fpv *Plan_FieldTerminalPathValue) AsDisplayNameValue() (string, bool) { 574 res, ok := fpv.value.(string) 575 return res, ok 576 } 577 func (fpv *Plan_FieldTerminalPathValue) AsServiceValue() (*meta_service.Reference, bool) { 578 res, ok := fpv.value.(*meta_service.Reference) 579 return res, ok 580 } 581 func (fpv *Plan_FieldTerminalPathValue) AsResourceLimitsValue() ([]*Plan_LimitValue, bool) { 582 res, ok := fpv.value.([]*Plan_LimitValue) 583 return res, ok 584 } 585 func (fpv *Plan_FieldTerminalPathValue) AsPlanLevelValue() (Plan_PlanLevel, bool) { 586 res, ok := fpv.value.(Plan_PlanLevel) 587 return res, ok 588 } 589 func (fpv *Plan_FieldTerminalPathValue) AsBusinessTierValue() (iam_iam_common.BusinessTier, bool) { 590 res, ok := fpv.value.(iam_iam_common.BusinessTier) 591 return res, ok 592 } 593 func (fpv *Plan_FieldTerminalPathValue) AsGenerationValue() (int64, bool) { 594 res, ok := fpv.value.(int64) 595 return res, ok 596 } 597 598 // SetTo stores value for selected field for object Plan 599 func (fpv *Plan_FieldTerminalPathValue) SetTo(target **Plan) { 600 if *target == nil { 601 *target = new(Plan) 602 } 603 switch fpv.selector { 604 case Plan_FieldPathSelectorName: 605 (*target).Name = fpv.value.(*Name) 606 case Plan_FieldPathSelectorMetadata: 607 (*target).Metadata = fpv.value.(*meta.Meta) 608 case Plan_FieldPathSelectorDisplayName: 609 (*target).DisplayName = fpv.value.(string) 610 case Plan_FieldPathSelectorService: 611 (*target).Service = fpv.value.(*meta_service.Reference) 612 case Plan_FieldPathSelectorResourceLimits: 613 (*target).ResourceLimits = fpv.value.([]*Plan_LimitValue) 614 case Plan_FieldPathSelectorPlanLevel: 615 (*target).PlanLevel = fpv.value.(Plan_PlanLevel) 616 case Plan_FieldPathSelectorBusinessTier: 617 (*target).BusinessTier = fpv.value.(iam_iam_common.BusinessTier) 618 case Plan_FieldPathSelectorGeneration: 619 (*target).Generation = fpv.value.(int64) 620 default: 621 panic(fmt.Sprintf("Invalid selector for Plan: %d", fpv.selector)) 622 } 623 } 624 625 func (fpv *Plan_FieldTerminalPathValue) SetToRaw(target proto.Message) { 626 typedObject := target.(*Plan) 627 fpv.SetTo(&typedObject) 628 } 629 630 // CompareWith compares value in the 'Plan_FieldTerminalPathValue' with the value under path in 'Plan'. 631 func (fpv *Plan_FieldTerminalPathValue) CompareWith(source *Plan) (int, bool) { 632 switch fpv.selector { 633 case Plan_FieldPathSelectorName: 634 leftValue := fpv.value.(*Name) 635 rightValue := source.GetName() 636 if leftValue == nil { 637 if rightValue != nil { 638 return -1, true 639 } 640 return 0, true 641 } 642 if rightValue == nil { 643 return 1, true 644 } 645 if leftValue.String() == rightValue.String() { 646 return 0, true 647 } else if leftValue.String() < rightValue.String() { 648 return -1, true 649 } else { 650 return 1, true 651 } 652 case Plan_FieldPathSelectorMetadata: 653 return 0, false 654 case Plan_FieldPathSelectorDisplayName: 655 leftValue := fpv.value.(string) 656 rightValue := source.GetDisplayName() 657 if (leftValue) == (rightValue) { 658 return 0, true 659 } else if (leftValue) < (rightValue) { 660 return -1, true 661 } else { 662 return 1, true 663 } 664 case Plan_FieldPathSelectorService: 665 leftValue := fpv.value.(*meta_service.Reference) 666 rightValue := source.GetService() 667 if leftValue == nil { 668 if rightValue != nil { 669 return -1, true 670 } 671 return 0, true 672 } 673 if rightValue == nil { 674 return 1, true 675 } 676 if leftValue.String() == rightValue.String() { 677 return 0, true 678 } else if leftValue.String() < rightValue.String() { 679 return -1, true 680 } else { 681 return 1, true 682 } 683 case Plan_FieldPathSelectorResourceLimits: 684 return 0, false 685 case Plan_FieldPathSelectorPlanLevel: 686 leftValue := fpv.value.(Plan_PlanLevel) 687 rightValue := source.GetPlanLevel() 688 if (leftValue) == (rightValue) { 689 return 0, true 690 } else if (leftValue) < (rightValue) { 691 return -1, true 692 } else { 693 return 1, true 694 } 695 case Plan_FieldPathSelectorBusinessTier: 696 leftValue := fpv.value.(iam_iam_common.BusinessTier) 697 rightValue := source.GetBusinessTier() 698 if (leftValue) == (rightValue) { 699 return 0, true 700 } else if (leftValue) < (rightValue) { 701 return -1, true 702 } else { 703 return 1, true 704 } 705 case Plan_FieldPathSelectorGeneration: 706 leftValue := fpv.value.(int64) 707 rightValue := source.GetGeneration() 708 if (leftValue) == (rightValue) { 709 return 0, true 710 } else if (leftValue) < (rightValue) { 711 return -1, true 712 } else { 713 return 1, true 714 } 715 default: 716 panic(fmt.Sprintf("Invalid selector for Plan: %d", fpv.selector)) 717 } 718 } 719 720 func (fpv *Plan_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) { 721 return fpv.CompareWith(source.(*Plan)) 722 } 723 724 type Plan_FieldSubPathValue struct { 725 Plan_FieldPath 726 subPathValue gotenobject.FieldPathValue 727 } 728 729 var _ Plan_FieldPathValue = (*Plan_FieldSubPathValue)(nil) 730 731 func (fpvs *Plan_FieldSubPathValue) AsMetadataPathValue() (meta.Meta_FieldPathValue, bool) { 732 res, ok := fpvs.subPathValue.(meta.Meta_FieldPathValue) 733 return res, ok 734 } 735 func (fpvs *Plan_FieldSubPathValue) AsResourceLimitsPathValue() (PlanLimitValue_FieldPathValue, bool) { 736 res, ok := fpvs.subPathValue.(PlanLimitValue_FieldPathValue) 737 return res, ok 738 } 739 740 func (fpvs *Plan_FieldSubPathValue) SetTo(target **Plan) { 741 if *target == nil { 742 *target = new(Plan) 743 } 744 switch fpvs.Selector() { 745 case Plan_FieldPathSelectorMetadata: 746 fpvs.subPathValue.(meta.Meta_FieldPathValue).SetTo(&(*target).Metadata) 747 case Plan_FieldPathSelectorResourceLimits: 748 panic("FieldPath setter is unsupported for array subpaths") 749 default: 750 panic(fmt.Sprintf("Invalid selector for Plan: %d", fpvs.Selector())) 751 } 752 } 753 754 func (fpvs *Plan_FieldSubPathValue) SetToRaw(target proto.Message) { 755 typedObject := target.(*Plan) 756 fpvs.SetTo(&typedObject) 757 } 758 759 func (fpvs *Plan_FieldSubPathValue) GetRawValue() interface{} { 760 return fpvs.subPathValue.GetRawValue() 761 } 762 763 func (fpvs *Plan_FieldSubPathValue) CompareWith(source *Plan) (int, bool) { 764 switch fpvs.Selector() { 765 case Plan_FieldPathSelectorMetadata: 766 return fpvs.subPathValue.(meta.Meta_FieldPathValue).CompareWith(source.GetMetadata()) 767 case Plan_FieldPathSelectorResourceLimits: 768 return 0, false // repeated field 769 default: 770 panic(fmt.Sprintf("Invalid selector for Plan: %d", fpvs.Selector())) 771 } 772 } 773 774 func (fpvs *Plan_FieldSubPathValue) CompareWithRaw(source proto.Message) (int, bool) { 775 return fpvs.CompareWith(source.(*Plan)) 776 } 777 778 // Plan_FieldPathArrayItemValue allows storing single item in Path-specific values for Plan according to their type 779 // Present only for array (repeated) types. 780 type Plan_FieldPathArrayItemValue interface { 781 gotenobject.FieldPathArrayItemValue 782 Plan_FieldPath 783 ContainsValue(*Plan) bool 784 } 785 786 // ParsePlan_FieldPathArrayItemValue parses string and JSON-encoded value to its Value 787 func ParsePlan_FieldPathArrayItemValue(pathStr, valueStr string) (Plan_FieldPathArrayItemValue, error) { 788 fp, err := ParsePlan_FieldPath(pathStr) 789 if err != nil { 790 return nil, err 791 } 792 fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr) 793 if err != nil { 794 return nil, status.Errorf(codes.InvalidArgument, "error parsing Plan field path array item value from %s: %v", valueStr, err) 795 } 796 return fpaiv.(Plan_FieldPathArrayItemValue), nil 797 } 798 799 func MustParsePlan_FieldPathArrayItemValue(pathStr, valueStr string) Plan_FieldPathArrayItemValue { 800 fpaiv, err := ParsePlan_FieldPathArrayItemValue(pathStr, valueStr) 801 if err != nil { 802 panic(err) 803 } 804 return fpaiv 805 } 806 807 type Plan_FieldTerminalPathArrayItemValue struct { 808 Plan_FieldTerminalPath 809 value interface{} 810 } 811 812 var _ Plan_FieldPathArrayItemValue = (*Plan_FieldTerminalPathArrayItemValue)(nil) 813 814 // GetRawValue returns stored element value for array in object Plan as interface{} 815 func (fpaiv *Plan_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} { 816 return fpaiv.value 817 } 818 func (fpaiv *Plan_FieldTerminalPathArrayItemValue) AsResourceLimitsItemValue() (*Plan_LimitValue, bool) { 819 res, ok := fpaiv.value.(*Plan_LimitValue) 820 return res, ok 821 } 822 823 func (fpaiv *Plan_FieldTerminalPathArrayItemValue) GetSingle(source *Plan) (interface{}, bool) { 824 return nil, false 825 } 826 827 func (fpaiv *Plan_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) { 828 return fpaiv.GetSingle(source.(*Plan)) 829 } 830 831 // Contains returns a boolean indicating if value that is being held is present in given 'Plan' 832 func (fpaiv *Plan_FieldTerminalPathArrayItemValue) ContainsValue(source *Plan) bool { 833 slice := fpaiv.Plan_FieldTerminalPath.Get(source) 834 for _, v := range slice { 835 if asProtoMsg, ok := fpaiv.value.(proto.Message); ok { 836 if proto.Equal(asProtoMsg, v.(proto.Message)) { 837 return true 838 } 839 } else if reflect.DeepEqual(v, fpaiv.value) { 840 return true 841 } 842 } 843 return false 844 } 845 846 type Plan_FieldSubPathArrayItemValue struct { 847 Plan_FieldPath 848 subPathItemValue gotenobject.FieldPathArrayItemValue 849 } 850 851 // GetRawValue returns stored array item value 852 func (fpaivs *Plan_FieldSubPathArrayItemValue) GetRawItemValue() interface{} { 853 return fpaivs.subPathItemValue.GetRawItemValue() 854 } 855 func (fpaivs *Plan_FieldSubPathArrayItemValue) AsMetadataPathItemValue() (meta.Meta_FieldPathArrayItemValue, bool) { 856 res, ok := fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue) 857 return res, ok 858 } 859 func (fpaivs *Plan_FieldSubPathArrayItemValue) AsResourceLimitsPathItemValue() (PlanLimitValue_FieldPathArrayItemValue, bool) { 860 res, ok := fpaivs.subPathItemValue.(PlanLimitValue_FieldPathArrayItemValue) 861 return res, ok 862 } 863 864 // Contains returns a boolean indicating if value that is being held is present in given 'Plan' 865 func (fpaivs *Plan_FieldSubPathArrayItemValue) ContainsValue(source *Plan) bool { 866 switch fpaivs.Selector() { 867 case Plan_FieldPathSelectorMetadata: 868 return fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue).ContainsValue(source.GetMetadata()) 869 case Plan_FieldPathSelectorResourceLimits: 870 return false // repeated/map field 871 default: 872 panic(fmt.Sprintf("Invalid selector for Plan: %d", fpaivs.Selector())) 873 } 874 } 875 876 // Plan_FieldPathArrayOfValues allows storing slice of values for Plan fields according to their type 877 type Plan_FieldPathArrayOfValues interface { 878 gotenobject.FieldPathArrayOfValues 879 Plan_FieldPath 880 } 881 882 func ParsePlan_FieldPathArrayOfValues(pathStr, valuesStr string) (Plan_FieldPathArrayOfValues, error) { 883 fp, err := ParsePlan_FieldPath(pathStr) 884 if err != nil { 885 return nil, err 886 } 887 fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr) 888 if err != nil { 889 return nil, status.Errorf(codes.InvalidArgument, "error parsing Plan field path array of values from %s: %v", valuesStr, err) 890 } 891 return fpaov.(Plan_FieldPathArrayOfValues), nil 892 } 893 894 func MustParsePlan_FieldPathArrayOfValues(pathStr, valuesStr string) Plan_FieldPathArrayOfValues { 895 fpaov, err := ParsePlan_FieldPathArrayOfValues(pathStr, valuesStr) 896 if err != nil { 897 panic(err) 898 } 899 return fpaov 900 } 901 902 type Plan_FieldTerminalPathArrayOfValues struct { 903 Plan_FieldTerminalPath 904 values interface{} 905 } 906 907 var _ Plan_FieldPathArrayOfValues = (*Plan_FieldTerminalPathArrayOfValues)(nil) 908 909 func (fpaov *Plan_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) { 910 switch fpaov.selector { 911 case Plan_FieldPathSelectorName: 912 for _, v := range fpaov.values.([]*Name) { 913 values = append(values, v) 914 } 915 case Plan_FieldPathSelectorMetadata: 916 for _, v := range fpaov.values.([]*meta.Meta) { 917 values = append(values, v) 918 } 919 case Plan_FieldPathSelectorDisplayName: 920 for _, v := range fpaov.values.([]string) { 921 values = append(values, v) 922 } 923 case Plan_FieldPathSelectorService: 924 for _, v := range fpaov.values.([]*meta_service.Reference) { 925 values = append(values, v) 926 } 927 case Plan_FieldPathSelectorResourceLimits: 928 for _, v := range fpaov.values.([][]*Plan_LimitValue) { 929 values = append(values, v) 930 } 931 case Plan_FieldPathSelectorPlanLevel: 932 for _, v := range fpaov.values.([]Plan_PlanLevel) { 933 values = append(values, v) 934 } 935 case Plan_FieldPathSelectorBusinessTier: 936 for _, v := range fpaov.values.([]iam_iam_common.BusinessTier) { 937 values = append(values, v) 938 } 939 case Plan_FieldPathSelectorGeneration: 940 for _, v := range fpaov.values.([]int64) { 941 values = append(values, v) 942 } 943 } 944 return 945 } 946 func (fpaov *Plan_FieldTerminalPathArrayOfValues) AsNameArrayOfValues() ([]*Name, bool) { 947 res, ok := fpaov.values.([]*Name) 948 return res, ok 949 } 950 func (fpaov *Plan_FieldTerminalPathArrayOfValues) AsMetadataArrayOfValues() ([]*meta.Meta, bool) { 951 res, ok := fpaov.values.([]*meta.Meta) 952 return res, ok 953 } 954 func (fpaov *Plan_FieldTerminalPathArrayOfValues) AsDisplayNameArrayOfValues() ([]string, bool) { 955 res, ok := fpaov.values.([]string) 956 return res, ok 957 } 958 func (fpaov *Plan_FieldTerminalPathArrayOfValues) AsServiceArrayOfValues() ([]*meta_service.Reference, bool) { 959 res, ok := fpaov.values.([]*meta_service.Reference) 960 return res, ok 961 } 962 func (fpaov *Plan_FieldTerminalPathArrayOfValues) AsResourceLimitsArrayOfValues() ([][]*Plan_LimitValue, bool) { 963 res, ok := fpaov.values.([][]*Plan_LimitValue) 964 return res, ok 965 } 966 func (fpaov *Plan_FieldTerminalPathArrayOfValues) AsPlanLevelArrayOfValues() ([]Plan_PlanLevel, bool) { 967 res, ok := fpaov.values.([]Plan_PlanLevel) 968 return res, ok 969 } 970 func (fpaov *Plan_FieldTerminalPathArrayOfValues) AsBusinessTierArrayOfValues() ([]iam_iam_common.BusinessTier, bool) { 971 res, ok := fpaov.values.([]iam_iam_common.BusinessTier) 972 return res, ok 973 } 974 func (fpaov *Plan_FieldTerminalPathArrayOfValues) AsGenerationArrayOfValues() ([]int64, bool) { 975 res, ok := fpaov.values.([]int64) 976 return res, ok 977 } 978 979 type Plan_FieldSubPathArrayOfValues struct { 980 Plan_FieldPath 981 subPathArrayOfValues gotenobject.FieldPathArrayOfValues 982 } 983 984 var _ Plan_FieldPathArrayOfValues = (*Plan_FieldSubPathArrayOfValues)(nil) 985 986 func (fpsaov *Plan_FieldSubPathArrayOfValues) GetRawValues() []interface{} { 987 return fpsaov.subPathArrayOfValues.GetRawValues() 988 } 989 func (fpsaov *Plan_FieldSubPathArrayOfValues) AsMetadataPathArrayOfValues() (meta.Meta_FieldPathArrayOfValues, bool) { 990 res, ok := fpsaov.subPathArrayOfValues.(meta.Meta_FieldPathArrayOfValues) 991 return res, ok 992 } 993 func (fpsaov *Plan_FieldSubPathArrayOfValues) AsResourceLimitsPathArrayOfValues() (PlanLimitValue_FieldPathArrayOfValues, bool) { 994 res, ok := fpsaov.subPathArrayOfValues.(PlanLimitValue_FieldPathArrayOfValues) 995 return res, ok 996 } 997 998 // FieldPath provides implementation to handle 999 // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto 1000 type PlanLimitValue_FieldPath interface { 1001 gotenobject.FieldPath 1002 Selector() PlanLimitValue_FieldPathSelector 1003 Get(source *Plan_LimitValue) []interface{} 1004 GetSingle(source *Plan_LimitValue) (interface{}, bool) 1005 ClearValue(item *Plan_LimitValue) 1006 1007 // Those methods build corresponding PlanLimitValue_FieldPathValue 1008 // (or array of values) and holds passed value. Panics if injected type is incorrect. 1009 WithIValue(value interface{}) PlanLimitValue_FieldPathValue 1010 WithIArrayOfValues(values interface{}) PlanLimitValue_FieldPathArrayOfValues 1011 WithIArrayItemValue(value interface{}) PlanLimitValue_FieldPathArrayItemValue 1012 } 1013 1014 type PlanLimitValue_FieldPathSelector int32 1015 1016 const ( 1017 PlanLimitValue_FieldPathSelectorResource PlanLimitValue_FieldPathSelector = 0 1018 PlanLimitValue_FieldPathSelectorValue PlanLimitValue_FieldPathSelector = 1 1019 ) 1020 1021 func (s PlanLimitValue_FieldPathSelector) String() string { 1022 switch s { 1023 case PlanLimitValue_FieldPathSelectorResource: 1024 return "resource" 1025 case PlanLimitValue_FieldPathSelectorValue: 1026 return "value" 1027 default: 1028 panic(fmt.Sprintf("Invalid selector for Plan_LimitValue: %d", s)) 1029 } 1030 } 1031 1032 func BuildPlanLimitValue_FieldPath(fp gotenobject.RawFieldPath) (PlanLimitValue_FieldPath, error) { 1033 if len(fp) == 0 { 1034 return nil, status.Error(codes.InvalidArgument, "empty field path for object Plan_LimitValue") 1035 } 1036 if len(fp) == 1 { 1037 switch fp[0] { 1038 case "resource": 1039 return &PlanLimitValue_FieldTerminalPath{selector: PlanLimitValue_FieldPathSelectorResource}, nil 1040 case "value": 1041 return &PlanLimitValue_FieldTerminalPath{selector: PlanLimitValue_FieldPathSelectorValue}, nil 1042 } 1043 } 1044 return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Plan_LimitValue", fp) 1045 } 1046 1047 func ParsePlanLimitValue_FieldPath(rawField string) (PlanLimitValue_FieldPath, error) { 1048 fp, err := gotenobject.ParseRawFieldPath(rawField) 1049 if err != nil { 1050 return nil, err 1051 } 1052 return BuildPlanLimitValue_FieldPath(fp) 1053 } 1054 1055 func MustParsePlanLimitValue_FieldPath(rawField string) PlanLimitValue_FieldPath { 1056 fp, err := ParsePlanLimitValue_FieldPath(rawField) 1057 if err != nil { 1058 panic(err) 1059 } 1060 return fp 1061 } 1062 1063 type PlanLimitValue_FieldTerminalPath struct { 1064 selector PlanLimitValue_FieldPathSelector 1065 } 1066 1067 var _ PlanLimitValue_FieldPath = (*PlanLimitValue_FieldTerminalPath)(nil) 1068 1069 func (fp *PlanLimitValue_FieldTerminalPath) Selector() PlanLimitValue_FieldPathSelector { 1070 return fp.selector 1071 } 1072 1073 // String returns path representation in proto convention 1074 func (fp *PlanLimitValue_FieldTerminalPath) String() string { 1075 return fp.selector.String() 1076 } 1077 1078 // JSONString returns path representation is JSON convention 1079 func (fp *PlanLimitValue_FieldTerminalPath) JSONString() string { 1080 return strcase.ToLowerCamel(fp.String()) 1081 } 1082 1083 // Get returns all values pointed by specific field from source Plan_LimitValue 1084 func (fp *PlanLimitValue_FieldTerminalPath) Get(source *Plan_LimitValue) (values []interface{}) { 1085 if source != nil { 1086 switch fp.selector { 1087 case PlanLimitValue_FieldPathSelectorResource: 1088 if source.Resource != nil { 1089 values = append(values, source.Resource) 1090 } 1091 case PlanLimitValue_FieldPathSelectorValue: 1092 values = append(values, source.Value) 1093 default: 1094 panic(fmt.Sprintf("Invalid selector for Plan_LimitValue: %d", fp.selector)) 1095 } 1096 } 1097 return 1098 } 1099 1100 func (fp *PlanLimitValue_FieldTerminalPath) GetRaw(source proto.Message) []interface{} { 1101 return fp.Get(source.(*Plan_LimitValue)) 1102 } 1103 1104 // GetSingle returns value pointed by specific field of from source Plan_LimitValue 1105 func (fp *PlanLimitValue_FieldTerminalPath) GetSingle(source *Plan_LimitValue) (interface{}, bool) { 1106 switch fp.selector { 1107 case PlanLimitValue_FieldPathSelectorResource: 1108 res := source.GetResource() 1109 return res, res != nil 1110 case PlanLimitValue_FieldPathSelectorValue: 1111 return source.GetValue(), source != nil 1112 default: 1113 panic(fmt.Sprintf("Invalid selector for Plan_LimitValue: %d", fp.selector)) 1114 } 1115 } 1116 1117 func (fp *PlanLimitValue_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) { 1118 return fp.GetSingle(source.(*Plan_LimitValue)) 1119 } 1120 1121 // GetDefault returns a default value of the field type 1122 func (fp *PlanLimitValue_FieldTerminalPath) GetDefault() interface{} { 1123 switch fp.selector { 1124 case PlanLimitValue_FieldPathSelectorResource: 1125 return (*meta_resource.Reference)(nil) 1126 case PlanLimitValue_FieldPathSelectorValue: 1127 return int64(0) 1128 default: 1129 panic(fmt.Sprintf("Invalid selector for Plan_LimitValue: %d", fp.selector)) 1130 } 1131 } 1132 1133 func (fp *PlanLimitValue_FieldTerminalPath) ClearValue(item *Plan_LimitValue) { 1134 if item != nil { 1135 switch fp.selector { 1136 case PlanLimitValue_FieldPathSelectorResource: 1137 item.Resource = nil 1138 case PlanLimitValue_FieldPathSelectorValue: 1139 item.Value = int64(0) 1140 default: 1141 panic(fmt.Sprintf("Invalid selector for Plan_LimitValue: %d", fp.selector)) 1142 } 1143 } 1144 } 1145 1146 func (fp *PlanLimitValue_FieldTerminalPath) ClearValueRaw(item proto.Message) { 1147 fp.ClearValue(item.(*Plan_LimitValue)) 1148 } 1149 1150 // IsLeaf - whether field path is holds simple value 1151 func (fp *PlanLimitValue_FieldTerminalPath) IsLeaf() bool { 1152 return fp.selector == PlanLimitValue_FieldPathSelectorResource || 1153 fp.selector == PlanLimitValue_FieldPathSelectorValue 1154 } 1155 1156 func (fp *PlanLimitValue_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath { 1157 return []gotenobject.FieldPath{fp} 1158 } 1159 1160 func (fp *PlanLimitValue_FieldTerminalPath) WithIValue(value interface{}) PlanLimitValue_FieldPathValue { 1161 switch fp.selector { 1162 case PlanLimitValue_FieldPathSelectorResource: 1163 return &PlanLimitValue_FieldTerminalPathValue{PlanLimitValue_FieldTerminalPath: *fp, value: value.(*meta_resource.Reference)} 1164 case PlanLimitValue_FieldPathSelectorValue: 1165 return &PlanLimitValue_FieldTerminalPathValue{PlanLimitValue_FieldTerminalPath: *fp, value: value.(int64)} 1166 default: 1167 panic(fmt.Sprintf("Invalid selector for Plan_LimitValue: %d", fp.selector)) 1168 } 1169 } 1170 1171 func (fp *PlanLimitValue_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue { 1172 return fp.WithIValue(value) 1173 } 1174 1175 func (fp *PlanLimitValue_FieldTerminalPath) WithIArrayOfValues(values interface{}) PlanLimitValue_FieldPathArrayOfValues { 1176 fpaov := &PlanLimitValue_FieldTerminalPathArrayOfValues{PlanLimitValue_FieldTerminalPath: *fp} 1177 switch fp.selector { 1178 case PlanLimitValue_FieldPathSelectorResource: 1179 return &PlanLimitValue_FieldTerminalPathArrayOfValues{PlanLimitValue_FieldTerminalPath: *fp, values: values.([]*meta_resource.Reference)} 1180 case PlanLimitValue_FieldPathSelectorValue: 1181 return &PlanLimitValue_FieldTerminalPathArrayOfValues{PlanLimitValue_FieldTerminalPath: *fp, values: values.([]int64)} 1182 default: 1183 panic(fmt.Sprintf("Invalid selector for Plan_LimitValue: %d", fp.selector)) 1184 } 1185 return fpaov 1186 } 1187 1188 func (fp *PlanLimitValue_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues { 1189 return fp.WithIArrayOfValues(values) 1190 } 1191 1192 func (fp *PlanLimitValue_FieldTerminalPath) WithIArrayItemValue(value interface{}) PlanLimitValue_FieldPathArrayItemValue { 1193 switch fp.selector { 1194 default: 1195 panic(fmt.Sprintf("Invalid selector for Plan_LimitValue: %d", fp.selector)) 1196 } 1197 } 1198 1199 func (fp *PlanLimitValue_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue { 1200 return fp.WithIArrayItemValue(value) 1201 } 1202 1203 // PlanLimitValue_FieldPathValue allows storing values for LimitValue fields according to their type 1204 type PlanLimitValue_FieldPathValue interface { 1205 PlanLimitValue_FieldPath 1206 gotenobject.FieldPathValue 1207 SetTo(target **Plan_LimitValue) 1208 CompareWith(*Plan_LimitValue) (cmp int, comparable bool) 1209 } 1210 1211 func ParsePlanLimitValue_FieldPathValue(pathStr, valueStr string) (PlanLimitValue_FieldPathValue, error) { 1212 fp, err := ParsePlanLimitValue_FieldPath(pathStr) 1213 if err != nil { 1214 return nil, err 1215 } 1216 fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr) 1217 if err != nil { 1218 return nil, status.Errorf(codes.InvalidArgument, "error parsing LimitValue field path value from %s: %v", valueStr, err) 1219 } 1220 return fpv.(PlanLimitValue_FieldPathValue), nil 1221 } 1222 1223 func MustParsePlanLimitValue_FieldPathValue(pathStr, valueStr string) PlanLimitValue_FieldPathValue { 1224 fpv, err := ParsePlanLimitValue_FieldPathValue(pathStr, valueStr) 1225 if err != nil { 1226 panic(err) 1227 } 1228 return fpv 1229 } 1230 1231 type PlanLimitValue_FieldTerminalPathValue struct { 1232 PlanLimitValue_FieldTerminalPath 1233 value interface{} 1234 } 1235 1236 var _ PlanLimitValue_FieldPathValue = (*PlanLimitValue_FieldTerminalPathValue)(nil) 1237 1238 // GetRawValue returns raw value stored under selected path for 'LimitValue' as interface{} 1239 func (fpv *PlanLimitValue_FieldTerminalPathValue) GetRawValue() interface{} { 1240 return fpv.value 1241 } 1242 func (fpv *PlanLimitValue_FieldTerminalPathValue) AsResourceValue() (*meta_resource.Reference, bool) { 1243 res, ok := fpv.value.(*meta_resource.Reference) 1244 return res, ok 1245 } 1246 func (fpv *PlanLimitValue_FieldTerminalPathValue) AsValueValue() (int64, bool) { 1247 res, ok := fpv.value.(int64) 1248 return res, ok 1249 } 1250 1251 // SetTo stores value for selected field for object LimitValue 1252 func (fpv *PlanLimitValue_FieldTerminalPathValue) SetTo(target **Plan_LimitValue) { 1253 if *target == nil { 1254 *target = new(Plan_LimitValue) 1255 } 1256 switch fpv.selector { 1257 case PlanLimitValue_FieldPathSelectorResource: 1258 (*target).Resource = fpv.value.(*meta_resource.Reference) 1259 case PlanLimitValue_FieldPathSelectorValue: 1260 (*target).Value = fpv.value.(int64) 1261 default: 1262 panic(fmt.Sprintf("Invalid selector for Plan_LimitValue: %d", fpv.selector)) 1263 } 1264 } 1265 1266 func (fpv *PlanLimitValue_FieldTerminalPathValue) SetToRaw(target proto.Message) { 1267 typedObject := target.(*Plan_LimitValue) 1268 fpv.SetTo(&typedObject) 1269 } 1270 1271 // CompareWith compares value in the 'PlanLimitValue_FieldTerminalPathValue' with the value under path in 'Plan_LimitValue'. 1272 func (fpv *PlanLimitValue_FieldTerminalPathValue) CompareWith(source *Plan_LimitValue) (int, bool) { 1273 switch fpv.selector { 1274 case PlanLimitValue_FieldPathSelectorResource: 1275 leftValue := fpv.value.(*meta_resource.Reference) 1276 rightValue := source.GetResource() 1277 if leftValue == nil { 1278 if rightValue != nil { 1279 return -1, true 1280 } 1281 return 0, true 1282 } 1283 if rightValue == nil { 1284 return 1, true 1285 } 1286 if leftValue.String() == rightValue.String() { 1287 return 0, true 1288 } else if leftValue.String() < rightValue.String() { 1289 return -1, true 1290 } else { 1291 return 1, true 1292 } 1293 case PlanLimitValue_FieldPathSelectorValue: 1294 leftValue := fpv.value.(int64) 1295 rightValue := source.GetValue() 1296 if (leftValue) == (rightValue) { 1297 return 0, true 1298 } else if (leftValue) < (rightValue) { 1299 return -1, true 1300 } else { 1301 return 1, true 1302 } 1303 default: 1304 panic(fmt.Sprintf("Invalid selector for Plan_LimitValue: %d", fpv.selector)) 1305 } 1306 } 1307 1308 func (fpv *PlanLimitValue_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) { 1309 return fpv.CompareWith(source.(*Plan_LimitValue)) 1310 } 1311 1312 // PlanLimitValue_FieldPathArrayItemValue allows storing single item in Path-specific values for LimitValue according to their type 1313 // Present only for array (repeated) types. 1314 type PlanLimitValue_FieldPathArrayItemValue interface { 1315 gotenobject.FieldPathArrayItemValue 1316 PlanLimitValue_FieldPath 1317 ContainsValue(*Plan_LimitValue) bool 1318 } 1319 1320 // ParsePlanLimitValue_FieldPathArrayItemValue parses string and JSON-encoded value to its Value 1321 func ParsePlanLimitValue_FieldPathArrayItemValue(pathStr, valueStr string) (PlanLimitValue_FieldPathArrayItemValue, error) { 1322 fp, err := ParsePlanLimitValue_FieldPath(pathStr) 1323 if err != nil { 1324 return nil, err 1325 } 1326 fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr) 1327 if err != nil { 1328 return nil, status.Errorf(codes.InvalidArgument, "error parsing LimitValue field path array item value from %s: %v", valueStr, err) 1329 } 1330 return fpaiv.(PlanLimitValue_FieldPathArrayItemValue), nil 1331 } 1332 1333 func MustParsePlanLimitValue_FieldPathArrayItemValue(pathStr, valueStr string) PlanLimitValue_FieldPathArrayItemValue { 1334 fpaiv, err := ParsePlanLimitValue_FieldPathArrayItemValue(pathStr, valueStr) 1335 if err != nil { 1336 panic(err) 1337 } 1338 return fpaiv 1339 } 1340 1341 type PlanLimitValue_FieldTerminalPathArrayItemValue struct { 1342 PlanLimitValue_FieldTerminalPath 1343 value interface{} 1344 } 1345 1346 var _ PlanLimitValue_FieldPathArrayItemValue = (*PlanLimitValue_FieldTerminalPathArrayItemValue)(nil) 1347 1348 // GetRawValue returns stored element value for array in object Plan_LimitValue as interface{} 1349 func (fpaiv *PlanLimitValue_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} { 1350 return fpaiv.value 1351 } 1352 1353 func (fpaiv *PlanLimitValue_FieldTerminalPathArrayItemValue) GetSingle(source *Plan_LimitValue) (interface{}, bool) { 1354 return nil, false 1355 } 1356 1357 func (fpaiv *PlanLimitValue_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) { 1358 return fpaiv.GetSingle(source.(*Plan_LimitValue)) 1359 } 1360 1361 // Contains returns a boolean indicating if value that is being held is present in given 'LimitValue' 1362 func (fpaiv *PlanLimitValue_FieldTerminalPathArrayItemValue) ContainsValue(source *Plan_LimitValue) bool { 1363 slice := fpaiv.PlanLimitValue_FieldTerminalPath.Get(source) 1364 for _, v := range slice { 1365 if asProtoMsg, ok := fpaiv.value.(proto.Message); ok { 1366 if proto.Equal(asProtoMsg, v.(proto.Message)) { 1367 return true 1368 } 1369 } else if reflect.DeepEqual(v, fpaiv.value) { 1370 return true 1371 } 1372 } 1373 return false 1374 } 1375 1376 // PlanLimitValue_FieldPathArrayOfValues allows storing slice of values for LimitValue fields according to their type 1377 type PlanLimitValue_FieldPathArrayOfValues interface { 1378 gotenobject.FieldPathArrayOfValues 1379 PlanLimitValue_FieldPath 1380 } 1381 1382 func ParsePlanLimitValue_FieldPathArrayOfValues(pathStr, valuesStr string) (PlanLimitValue_FieldPathArrayOfValues, error) { 1383 fp, err := ParsePlanLimitValue_FieldPath(pathStr) 1384 if err != nil { 1385 return nil, err 1386 } 1387 fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr) 1388 if err != nil { 1389 return nil, status.Errorf(codes.InvalidArgument, "error parsing LimitValue field path array of values from %s: %v", valuesStr, err) 1390 } 1391 return fpaov.(PlanLimitValue_FieldPathArrayOfValues), nil 1392 } 1393 1394 func MustParsePlanLimitValue_FieldPathArrayOfValues(pathStr, valuesStr string) PlanLimitValue_FieldPathArrayOfValues { 1395 fpaov, err := ParsePlanLimitValue_FieldPathArrayOfValues(pathStr, valuesStr) 1396 if err != nil { 1397 panic(err) 1398 } 1399 return fpaov 1400 } 1401 1402 type PlanLimitValue_FieldTerminalPathArrayOfValues struct { 1403 PlanLimitValue_FieldTerminalPath 1404 values interface{} 1405 } 1406 1407 var _ PlanLimitValue_FieldPathArrayOfValues = (*PlanLimitValue_FieldTerminalPathArrayOfValues)(nil) 1408 1409 func (fpaov *PlanLimitValue_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) { 1410 switch fpaov.selector { 1411 case PlanLimitValue_FieldPathSelectorResource: 1412 for _, v := range fpaov.values.([]*meta_resource.Reference) { 1413 values = append(values, v) 1414 } 1415 case PlanLimitValue_FieldPathSelectorValue: 1416 for _, v := range fpaov.values.([]int64) { 1417 values = append(values, v) 1418 } 1419 } 1420 return 1421 } 1422 func (fpaov *PlanLimitValue_FieldTerminalPathArrayOfValues) AsResourceArrayOfValues() ([]*meta_resource.Reference, bool) { 1423 res, ok := fpaov.values.([]*meta_resource.Reference) 1424 return res, ok 1425 } 1426 func (fpaov *PlanLimitValue_FieldTerminalPathArrayOfValues) AsValueArrayOfValues() ([]int64, bool) { 1427 res, ok := fpaov.values.([]int64) 1428 return res, ok 1429 }