github.com/cloudwan/edgelq-sdk@v1.15.4/limits/resources/v1/plan/plan.pb.fieldmask.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 "strings" 10 11 "google.golang.org/grpc/codes" 12 "google.golang.org/grpc/status" 13 "google.golang.org/protobuf/proto" 14 preflect "google.golang.org/protobuf/reflect/protoreflect" 15 googlefieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" 16 17 gotenobject "github.com/cloudwan/goten-sdk/runtime/object" 18 ) 19 20 // proto imports 21 import ( 22 iam_iam_common "github.com/cloudwan/edgelq-sdk/iam/resources/v1/common" 23 iam_organization "github.com/cloudwan/edgelq-sdk/iam/resources/v1/organization" 24 meta_resource "github.com/cloudwan/goten-sdk/meta-service/resources/v1/resource" 25 meta_service "github.com/cloudwan/goten-sdk/meta-service/resources/v1/service" 26 meta "github.com/cloudwan/goten-sdk/types/meta" 27 ) 28 29 // ensure the imports are used 30 var ( 31 _ = new(json.Marshaler) 32 _ = strings.Builder{} 33 34 _ = codes.NotFound 35 _ = status.Status{} 36 _ = new(proto.Message) 37 _ = new(preflect.Message) 38 _ = googlefieldmaskpb.FieldMask{} 39 40 _ = new(gotenobject.FieldMask) 41 ) 42 43 // make sure we're using proto imports 44 var ( 45 _ = &iam_iam_common.PCR{} 46 _ = &iam_organization.Organization{} 47 _ = &meta_resource.Resource{} 48 _ = &meta_service.Service{} 49 _ = &meta.Meta{} 50 ) 51 52 type Plan_FieldMask struct { 53 Paths []Plan_FieldPath 54 } 55 56 func FullPlan_FieldMask() *Plan_FieldMask { 57 res := &Plan_FieldMask{} 58 res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorName}) 59 res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorMetadata}) 60 res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorDisplayName}) 61 res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorService}) 62 res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorResourceLimits}) 63 res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorPlanLevel}) 64 res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorBusinessTier}) 65 res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorGeneration}) 66 return res 67 } 68 69 func (fieldMask *Plan_FieldMask) String() string { 70 if fieldMask == nil { 71 return "<nil>" 72 } 73 pathsStr := make([]string, 0, len(fieldMask.Paths)) 74 for _, path := range fieldMask.Paths { 75 pathsStr = append(pathsStr, path.String()) 76 } 77 return strings.Join(pathsStr, ", ") 78 } 79 80 func (fieldMask *Plan_FieldMask) IsFull() bool { 81 if fieldMask == nil { 82 return false 83 } 84 presentSelectors := make([]bool, 8) 85 for _, path := range fieldMask.Paths { 86 if asFinal, ok := path.(*Plan_FieldTerminalPath); ok { 87 presentSelectors[int(asFinal.selector)] = true 88 } 89 } 90 for _, flag := range presentSelectors { 91 if !flag { 92 return false 93 } 94 } 95 return true 96 } 97 98 func (fieldMask *Plan_FieldMask) ProtoReflect() preflect.Message { 99 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 100 return ParsePlan_FieldPath(raw) 101 }) 102 } 103 104 func (fieldMask *Plan_FieldMask) ProtoMessage() {} 105 106 func (fieldMask *Plan_FieldMask) Reset() { 107 if fieldMask != nil { 108 fieldMask.Paths = nil 109 } 110 } 111 112 func (fieldMask *Plan_FieldMask) Subtract(other *Plan_FieldMask) *Plan_FieldMask { 113 result := &Plan_FieldMask{} 114 removedSelectors := make([]bool, 8) 115 otherSubMasks := map[Plan_FieldPathSelector]gotenobject.FieldMask{ 116 Plan_FieldPathSelectorMetadata: &meta.Meta_FieldMask{}, 117 Plan_FieldPathSelectorResourceLimits: &Plan_LimitValue_FieldMask{}, 118 } 119 mySubMasks := map[Plan_FieldPathSelector]gotenobject.FieldMask{ 120 Plan_FieldPathSelectorMetadata: &meta.Meta_FieldMask{}, 121 Plan_FieldPathSelectorResourceLimits: &Plan_LimitValue_FieldMask{}, 122 } 123 124 for _, path := range other.GetPaths() { 125 switch tp := path.(type) { 126 case *Plan_FieldTerminalPath: 127 removedSelectors[int(tp.selector)] = true 128 case *Plan_FieldSubPath: 129 otherSubMasks[tp.selector].AppendRawPath(tp.subPath) 130 } 131 } 132 for _, path := range fieldMask.GetPaths() { 133 if !removedSelectors[int(path.Selector())] { 134 if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 { 135 if tp, ok := path.(*Plan_FieldTerminalPath); ok { 136 switch tp.selector { 137 case Plan_FieldPathSelectorMetadata: 138 mySubMasks[Plan_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask() 139 case Plan_FieldPathSelectorResourceLimits: 140 mySubMasks[Plan_FieldPathSelectorResourceLimits] = FullPlan_LimitValue_FieldMask() 141 } 142 } else if tp, ok := path.(*Plan_FieldSubPath); ok { 143 mySubMasks[tp.selector].AppendRawPath(tp.subPath) 144 } 145 } else { 146 result.Paths = append(result.Paths, path) 147 } 148 } 149 } 150 for selector, mySubMask := range mySubMasks { 151 if mySubMask.PathsCount() > 0 { 152 for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() { 153 result.Paths = append(result.Paths, &Plan_FieldSubPath{selector: selector, subPath: allowedPath}) 154 } 155 } 156 } 157 158 if len(result.Paths) == 0 { 159 return nil 160 } 161 return result 162 } 163 164 func (fieldMask *Plan_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 165 return fieldMask.Subtract(other.(*Plan_FieldMask)) 166 } 167 168 // FilterInputFields generates copy of field paths with output_only field paths removed 169 func (fieldMask *Plan_FieldMask) FilterInputFields() *Plan_FieldMask { 170 result := &Plan_FieldMask{} 171 for _, path := range fieldMask.Paths { 172 switch path.Selector() { 173 case Plan_FieldPathSelectorGeneration: 174 case Plan_FieldPathSelectorMetadata: 175 if _, ok := path.(*Plan_FieldTerminalPath); ok { 176 for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths { 177 result.Paths = append(result.Paths, &Plan_FieldSubPath{selector: path.Selector(), subPath: subpath}) 178 } 179 } else if sub, ok := path.(*Plan_FieldSubPath); ok { 180 selectedMask := &meta.Meta_FieldMask{ 181 Paths: []meta.Meta_FieldPath{sub.subPath.(meta.Meta_FieldPath)}, 182 } 183 for _, allowedPath := range selectedMask.FilterInputFields().Paths { 184 result.Paths = append(result.Paths, &Plan_FieldSubPath{selector: Plan_FieldPathSelectorMetadata, subPath: allowedPath}) 185 } 186 } 187 default: 188 result.Paths = append(result.Paths, path) 189 } 190 } 191 return result 192 } 193 194 // ToFieldMask is used for proto conversions 195 func (fieldMask *Plan_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 196 protoFieldMask := &googlefieldmaskpb.FieldMask{} 197 for _, path := range fieldMask.Paths { 198 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 199 } 200 return protoFieldMask 201 } 202 203 func (fieldMask *Plan_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 204 if fieldMask == nil { 205 return status.Error(codes.Internal, "target field mask is nil") 206 } 207 fieldMask.Paths = make([]Plan_FieldPath, 0, len(protoFieldMask.Paths)) 208 for _, strPath := range protoFieldMask.Paths { 209 path, err := ParsePlan_FieldPath(strPath) 210 if err != nil { 211 return err 212 } 213 fieldMask.Paths = append(fieldMask.Paths, path) 214 } 215 return nil 216 } 217 218 // implement methods required by customType 219 func (fieldMask Plan_FieldMask) Marshal() ([]byte, error) { 220 protoFieldMask := fieldMask.ToProtoFieldMask() 221 return proto.Marshal(protoFieldMask) 222 } 223 224 func (fieldMask *Plan_FieldMask) Unmarshal(data []byte) error { 225 protoFieldMask := &googlefieldmaskpb.FieldMask{} 226 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 227 return err 228 } 229 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 230 return err 231 } 232 return nil 233 } 234 235 func (fieldMask *Plan_FieldMask) Size() int { 236 return proto.Size(fieldMask.ToProtoFieldMask()) 237 } 238 239 func (fieldMask Plan_FieldMask) MarshalJSON() ([]byte, error) { 240 return json.Marshal(fieldMask.ToProtoFieldMask()) 241 } 242 243 func (fieldMask *Plan_FieldMask) UnmarshalJSON(data []byte) error { 244 protoFieldMask := &googlefieldmaskpb.FieldMask{} 245 if err := json.Unmarshal(data, protoFieldMask); err != nil { 246 return err 247 } 248 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 249 return err 250 } 251 return nil 252 } 253 254 func (fieldMask *Plan_FieldMask) AppendPath(path Plan_FieldPath) { 255 fieldMask.Paths = append(fieldMask.Paths, path) 256 } 257 258 func (fieldMask *Plan_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 259 fieldMask.Paths = append(fieldMask.Paths, path.(Plan_FieldPath)) 260 } 261 262 func (fieldMask *Plan_FieldMask) GetPaths() []Plan_FieldPath { 263 if fieldMask == nil { 264 return nil 265 } 266 return fieldMask.Paths 267 } 268 269 func (fieldMask *Plan_FieldMask) GetRawPaths() []gotenobject.FieldPath { 270 if fieldMask == nil { 271 return nil 272 } 273 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 274 for _, path := range fieldMask.Paths { 275 rawPaths = append(rawPaths, path) 276 } 277 return rawPaths 278 } 279 280 func (fieldMask *Plan_FieldMask) SetFromCliFlag(raw string) error { 281 path, err := ParsePlan_FieldPath(raw) 282 if err != nil { 283 return err 284 } 285 fieldMask.Paths = append(fieldMask.Paths, path) 286 return nil 287 } 288 289 func (fieldMask *Plan_FieldMask) Set(target, source *Plan) { 290 for _, path := range fieldMask.Paths { 291 val, _ := path.GetSingle(source) 292 // if val is nil, then field does not exist in source, skip 293 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 294 if val != nil { 295 path.WithIValue(val).SetTo(&target) 296 } 297 } 298 } 299 300 func (fieldMask *Plan_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 301 fieldMask.Set(target.(*Plan), source.(*Plan)) 302 } 303 304 func (fieldMask *Plan_FieldMask) Project(source *Plan) *Plan { 305 if source == nil { 306 return nil 307 } 308 if fieldMask == nil { 309 return source 310 } 311 result := &Plan{} 312 metadataMask := &meta.Meta_FieldMask{} 313 wholeMetadataAccepted := false 314 resourceLimitsMask := &Plan_LimitValue_FieldMask{} 315 wholeResourceLimitsAccepted := false 316 317 for _, p := range fieldMask.Paths { 318 switch tp := p.(type) { 319 case *Plan_FieldTerminalPath: 320 switch tp.selector { 321 case Plan_FieldPathSelectorName: 322 result.Name = source.Name 323 case Plan_FieldPathSelectorMetadata: 324 result.Metadata = source.Metadata 325 wholeMetadataAccepted = true 326 case Plan_FieldPathSelectorDisplayName: 327 result.DisplayName = source.DisplayName 328 case Plan_FieldPathSelectorService: 329 result.Service = source.Service 330 case Plan_FieldPathSelectorResourceLimits: 331 result.ResourceLimits = source.ResourceLimits 332 wholeResourceLimitsAccepted = true 333 case Plan_FieldPathSelectorPlanLevel: 334 result.PlanLevel = source.PlanLevel 335 case Plan_FieldPathSelectorBusinessTier: 336 result.BusinessTier = source.BusinessTier 337 case Plan_FieldPathSelectorGeneration: 338 result.Generation = source.Generation 339 } 340 case *Plan_FieldSubPath: 341 switch tp.selector { 342 case Plan_FieldPathSelectorMetadata: 343 metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath)) 344 case Plan_FieldPathSelectorResourceLimits: 345 resourceLimitsMask.AppendPath(tp.subPath.(PlanLimitValue_FieldPath)) 346 } 347 } 348 } 349 if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 { 350 result.Metadata = metadataMask.Project(source.GetMetadata()) 351 } 352 if wholeResourceLimitsAccepted == false && len(resourceLimitsMask.Paths) > 0 { 353 for _, sourceItem := range source.GetResourceLimits() { 354 result.ResourceLimits = append(result.ResourceLimits, resourceLimitsMask.Project(sourceItem)) 355 } 356 } 357 return result 358 } 359 360 func (fieldMask *Plan_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 361 return fieldMask.Project(source.(*Plan)) 362 } 363 364 func (fieldMask *Plan_FieldMask) PathsCount() int { 365 if fieldMask == nil { 366 return 0 367 } 368 return len(fieldMask.Paths) 369 } 370 371 type Plan_LimitValue_FieldMask struct { 372 Paths []PlanLimitValue_FieldPath 373 } 374 375 func FullPlan_LimitValue_FieldMask() *Plan_LimitValue_FieldMask { 376 res := &Plan_LimitValue_FieldMask{} 377 res.Paths = append(res.Paths, &PlanLimitValue_FieldTerminalPath{selector: PlanLimitValue_FieldPathSelectorResource}) 378 res.Paths = append(res.Paths, &PlanLimitValue_FieldTerminalPath{selector: PlanLimitValue_FieldPathSelectorValue}) 379 return res 380 } 381 382 func (fieldMask *Plan_LimitValue_FieldMask) String() string { 383 if fieldMask == nil { 384 return "<nil>" 385 } 386 pathsStr := make([]string, 0, len(fieldMask.Paths)) 387 for _, path := range fieldMask.Paths { 388 pathsStr = append(pathsStr, path.String()) 389 } 390 return strings.Join(pathsStr, ", ") 391 } 392 393 func (fieldMask *Plan_LimitValue_FieldMask) IsFull() bool { 394 if fieldMask == nil { 395 return false 396 } 397 presentSelectors := make([]bool, 2) 398 for _, path := range fieldMask.Paths { 399 if asFinal, ok := path.(*PlanLimitValue_FieldTerminalPath); ok { 400 presentSelectors[int(asFinal.selector)] = true 401 } 402 } 403 for _, flag := range presentSelectors { 404 if !flag { 405 return false 406 } 407 } 408 return true 409 } 410 411 func (fieldMask *Plan_LimitValue_FieldMask) ProtoReflect() preflect.Message { 412 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 413 return ParsePlanLimitValue_FieldPath(raw) 414 }) 415 } 416 417 func (fieldMask *Plan_LimitValue_FieldMask) ProtoMessage() {} 418 419 func (fieldMask *Plan_LimitValue_FieldMask) Reset() { 420 if fieldMask != nil { 421 fieldMask.Paths = nil 422 } 423 } 424 425 func (fieldMask *Plan_LimitValue_FieldMask) Subtract(other *Plan_LimitValue_FieldMask) *Plan_LimitValue_FieldMask { 426 result := &Plan_LimitValue_FieldMask{} 427 removedSelectors := make([]bool, 2) 428 429 for _, path := range other.GetPaths() { 430 switch tp := path.(type) { 431 case *PlanLimitValue_FieldTerminalPath: 432 removedSelectors[int(tp.selector)] = true 433 } 434 } 435 for _, path := range fieldMask.GetPaths() { 436 if !removedSelectors[int(path.Selector())] { 437 result.Paths = append(result.Paths, path) 438 } 439 } 440 441 if len(result.Paths) == 0 { 442 return nil 443 } 444 return result 445 } 446 447 func (fieldMask *Plan_LimitValue_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 448 return fieldMask.Subtract(other.(*Plan_LimitValue_FieldMask)) 449 } 450 451 // FilterInputFields generates copy of field paths with output_only field paths removed 452 func (fieldMask *Plan_LimitValue_FieldMask) FilterInputFields() *Plan_LimitValue_FieldMask { 453 result := &Plan_LimitValue_FieldMask{} 454 result.Paths = append(result.Paths, fieldMask.Paths...) 455 return result 456 } 457 458 // ToFieldMask is used for proto conversions 459 func (fieldMask *Plan_LimitValue_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 460 protoFieldMask := &googlefieldmaskpb.FieldMask{} 461 for _, path := range fieldMask.Paths { 462 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 463 } 464 return protoFieldMask 465 } 466 467 func (fieldMask *Plan_LimitValue_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 468 if fieldMask == nil { 469 return status.Error(codes.Internal, "target field mask is nil") 470 } 471 fieldMask.Paths = make([]PlanLimitValue_FieldPath, 0, len(protoFieldMask.Paths)) 472 for _, strPath := range protoFieldMask.Paths { 473 path, err := ParsePlanLimitValue_FieldPath(strPath) 474 if err != nil { 475 return err 476 } 477 fieldMask.Paths = append(fieldMask.Paths, path) 478 } 479 return nil 480 } 481 482 // implement methods required by customType 483 func (fieldMask Plan_LimitValue_FieldMask) Marshal() ([]byte, error) { 484 protoFieldMask := fieldMask.ToProtoFieldMask() 485 return proto.Marshal(protoFieldMask) 486 } 487 488 func (fieldMask *Plan_LimitValue_FieldMask) Unmarshal(data []byte) error { 489 protoFieldMask := &googlefieldmaskpb.FieldMask{} 490 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 491 return err 492 } 493 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 494 return err 495 } 496 return nil 497 } 498 499 func (fieldMask *Plan_LimitValue_FieldMask) Size() int { 500 return proto.Size(fieldMask.ToProtoFieldMask()) 501 } 502 503 func (fieldMask Plan_LimitValue_FieldMask) MarshalJSON() ([]byte, error) { 504 return json.Marshal(fieldMask.ToProtoFieldMask()) 505 } 506 507 func (fieldMask *Plan_LimitValue_FieldMask) UnmarshalJSON(data []byte) error { 508 protoFieldMask := &googlefieldmaskpb.FieldMask{} 509 if err := json.Unmarshal(data, protoFieldMask); err != nil { 510 return err 511 } 512 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 513 return err 514 } 515 return nil 516 } 517 518 func (fieldMask *Plan_LimitValue_FieldMask) AppendPath(path PlanLimitValue_FieldPath) { 519 fieldMask.Paths = append(fieldMask.Paths, path) 520 } 521 522 func (fieldMask *Plan_LimitValue_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 523 fieldMask.Paths = append(fieldMask.Paths, path.(PlanLimitValue_FieldPath)) 524 } 525 526 func (fieldMask *Plan_LimitValue_FieldMask) GetPaths() []PlanLimitValue_FieldPath { 527 if fieldMask == nil { 528 return nil 529 } 530 return fieldMask.Paths 531 } 532 533 func (fieldMask *Plan_LimitValue_FieldMask) GetRawPaths() []gotenobject.FieldPath { 534 if fieldMask == nil { 535 return nil 536 } 537 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 538 for _, path := range fieldMask.Paths { 539 rawPaths = append(rawPaths, path) 540 } 541 return rawPaths 542 } 543 544 func (fieldMask *Plan_LimitValue_FieldMask) SetFromCliFlag(raw string) error { 545 path, err := ParsePlanLimitValue_FieldPath(raw) 546 if err != nil { 547 return err 548 } 549 fieldMask.Paths = append(fieldMask.Paths, path) 550 return nil 551 } 552 553 func (fieldMask *Plan_LimitValue_FieldMask) Set(target, source *Plan_LimitValue) { 554 for _, path := range fieldMask.Paths { 555 val, _ := path.GetSingle(source) 556 // if val is nil, then field does not exist in source, skip 557 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 558 if val != nil { 559 path.WithIValue(val).SetTo(&target) 560 } 561 } 562 } 563 564 func (fieldMask *Plan_LimitValue_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 565 fieldMask.Set(target.(*Plan_LimitValue), source.(*Plan_LimitValue)) 566 } 567 568 func (fieldMask *Plan_LimitValue_FieldMask) Project(source *Plan_LimitValue) *Plan_LimitValue { 569 if source == nil { 570 return nil 571 } 572 if fieldMask == nil { 573 return source 574 } 575 result := &Plan_LimitValue{} 576 577 for _, p := range fieldMask.Paths { 578 switch tp := p.(type) { 579 case *PlanLimitValue_FieldTerminalPath: 580 switch tp.selector { 581 case PlanLimitValue_FieldPathSelectorResource: 582 result.Resource = source.Resource 583 case PlanLimitValue_FieldPathSelectorValue: 584 result.Value = source.Value 585 } 586 } 587 } 588 return result 589 } 590 591 func (fieldMask *Plan_LimitValue_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 592 return fieldMask.Project(source.(*Plan_LimitValue)) 593 } 594 595 func (fieldMask *Plan_LimitValue_FieldMask) PathsCount() int { 596 if fieldMask == nil { 597 return 0 598 } 599 return len(fieldMask.Paths) 600 }