github.com/cloudwan/edgelq-sdk@v1.15.4/iam/resources/v1/condition/condition.pb.name.go (about) 1 // Code generated by protoc-gen-goten-resource 2 // Resource: Condition 3 // DO NOT EDIT!!! 4 5 package condition 6 7 import ( 8 "fmt" 9 "net/url" 10 "reflect" 11 "regexp" 12 "strings" 13 14 "google.golang.org/grpc/codes" 15 "google.golang.org/grpc/status" 16 "google.golang.org/protobuf/proto" 17 18 "github.com/cloudwan/goten-sdk/runtime/goten" 19 gotenresource "github.com/cloudwan/goten-sdk/runtime/resource" 20 ) 21 22 // proto imports 23 import ( 24 attestation_domain "github.com/cloudwan/edgelq-sdk/iam/resources/v1/attestation_domain" 25 organization "github.com/cloudwan/edgelq-sdk/iam/resources/v1/organization" 26 permission "github.com/cloudwan/edgelq-sdk/iam/resources/v1/permission" 27 project "github.com/cloudwan/edgelq-sdk/iam/resources/v1/project" 28 meta_service "github.com/cloudwan/goten-sdk/meta-service/resources/v1/service" 29 meta "github.com/cloudwan/goten-sdk/types/meta" 30 ) 31 32 // ensure the imports are used 33 var ( 34 _ = codes.NotFound 35 _ = new(fmt.Stringer) 36 _ = new(proto.Message) 37 _ = status.Status{} 38 _ = url.URL{} 39 _ = strings.Builder{} 40 41 _ = new(goten.GotenMessage) 42 _ = new(gotenresource.ListQuery) 43 ) 44 45 // make sure we're using proto imports 46 var ( 47 _ = &attestation_domain.AttestationDomain{} 48 _ = &organization.Organization{} 49 _ = &permission.Permission{} 50 _ = &project.Project{} 51 _ = &meta_service.Service{} 52 _ = &meta.Meta{} 53 ) 54 55 var condition_RegexpId = regexp.MustCompile("^(?P<condition_id>[a-z][a-z0-9\\-]{0,72}[a-z0-9])$") 56 var regexPath = regexp.MustCompile("^conditions/(?P<condition_id>-|[a-z][a-z0-9\\-]{0,72}[a-z0-9])$") 57 var regexPath_Project = regexp.MustCompile("^projects/(?P<project_id>-|[\\w][\\w.-]{0,127})/conditions/(?P<condition_id>-|[a-z][a-z0-9\\-]{0,72}[a-z0-9])$") 58 var regexPath_Organization = regexp.MustCompile("^organizations/(?P<organization_id>-|[\\w][\\w.-]{0,127})/conditions/(?P<condition_id>-|[a-z][a-z0-9\\-]{0,72}[a-z0-9])$") 59 var regexPath_Service = regexp.MustCompile("^services/(?P<service_id>-|[a-z][a-z0-9\\-.]{0,28}[a-z0-9])/conditions/(?P<condition_id>-|[a-z][a-z0-9\\-]{0,72}[a-z0-9])$") 60 61 func (r *Condition) MaybePopulateDefaults() error { 62 conditionInterface := interface{}(r) 63 if defaulter, ok := conditionInterface.(goten.Defaulter); ok { 64 return defaulter.PopulateDefaults() 65 } 66 return nil 67 } 68 69 type Name struct { 70 ParentName 71 ConditionId string `firestore:"conditionId"` 72 } 73 74 func ParseName(name string) (*Name, error) { 75 var matches []string 76 if matches = regexPath.FindStringSubmatch(name); matches != nil { 77 return NewNameBuilder(). 78 SetId(matches[1]). 79 Name(), nil 80 } 81 if matches = regexPath_Project.FindStringSubmatch(name); matches != nil { 82 return NewNameBuilder(). 83 SetProjectId(matches[1]). 84 SetId(matches[2]). 85 Name(), nil 86 } 87 if matches = regexPath_Organization.FindStringSubmatch(name); matches != nil { 88 return NewNameBuilder(). 89 SetOrganizationId(matches[1]). 90 SetId(matches[2]). 91 Name(), nil 92 } 93 if matches = regexPath_Service.FindStringSubmatch(name); matches != nil { 94 return NewNameBuilder(). 95 SetServiceId(matches[1]). 96 SetId(matches[2]). 97 Name(), nil 98 } 99 100 return nil, status.Errorf(codes.InvalidArgument, "unable to parse '%s' as Condition name", name) 101 } 102 103 func MustParseName(name string) *Name { 104 result, err := ParseName(name) 105 if err != nil { 106 panic(err) 107 } 108 return result 109 } 110 111 func ParseNameOrId(nameOrId string) (*Name, error) { 112 name, err := ParseName(nameOrId) 113 if err == nil { 114 return name, err 115 } 116 if condition_RegexpId.MatchString(nameOrId) { 117 return &Name{ConditionId: nameOrId}, nil 118 } else { 119 return nil, fmt.Errorf("unable to parse '%s' as Condition name or id", nameOrId) 120 } 121 } 122 123 func (name *Name) SetFromSegments(segments gotenresource.NameSegments) error { 124 if len(segments) == 0 { 125 return status.Errorf(codes.InvalidArgument, "No segments given for Condition name") 126 } 127 if err := name.ParentName.SetFromSegments(segments[:len(segments)-1]); err != nil { 128 return err 129 } 130 if segments[len(segments)-1].CollectionLowerJson != "conditions" { 131 return status.Errorf(codes.InvalidArgument, "unable to use segments %s to form Condition name", segments) 132 } 133 name.ConditionId = segments[len(segments)-1].Id 134 return nil 135 } 136 137 func (name *Name) GetProjectName() *project.Name { 138 if name == nil { 139 return nil 140 } 141 return name.ParentName.GetProjectName() 142 } 143 func (name *Name) GetOrganizationName() *organization.Name { 144 if name == nil { 145 return nil 146 } 147 return name.ParentName.GetOrganizationName() 148 } 149 func (name *Name) GetServiceName() *meta_service.Name { 150 if name == nil { 151 return nil 152 } 153 return name.ParentName.GetServiceName() 154 } 155 156 func (name *Name) IsSpecified() bool { 157 if name == nil || name.Pattern == "" || name.ConditionId == "" { 158 return false 159 } 160 return name.ParentName.IsSpecified() 161 } 162 163 func (name *Name) IsFullyQualified() bool { 164 if name == nil { 165 return false 166 } 167 if name.ParentName.IsFullyQualified() == false { 168 return false 169 } 170 if name.ConditionId == "" || name.ConditionId == gotenresource.WildcardId { 171 return false 172 } 173 return true 174 } 175 176 func (name *Name) FullyQualifiedName() (string, error) { 177 if !name.IsFullyQualified() { 178 return "", status.Errorf(codes.InvalidArgument, "Name for Condition is not fully qualified") 179 } 180 return fmt.Sprintf("//iam.edgelq.com/%s", name.String()), nil 181 } 182 183 func (name *Name) String() string { 184 if name == nil { 185 return "<nil>" 186 } 187 if valueStr, err := name.ProtoString(); err != nil { 188 panic(err) 189 } else { 190 return valueStr 191 } 192 } 193 194 func (name *Name) AsReference() *Reference { 195 return &Reference{Name: *name} 196 } 197 198 func (name *Name) AsRawReference() gotenresource.Reference { 199 return name.AsReference() 200 } 201 202 func (name *Name) GetResourceDescriptor() gotenresource.Descriptor { 203 return descriptor 204 } 205 206 func (name *Name) GetPattern() gotenresource.NamePattern { 207 if name == nil { 208 return "" 209 } 210 return name.Pattern 211 } 212 213 func (name *Name) GetIdParts() map[string]string { 214 if name != nil { 215 return map[string]string{ 216 "conditionId": name.ConditionId, 217 "projectId": name.ProjectId, 218 "organizationId": name.OrganizationId, 219 "serviceId": name.ServiceId, 220 } 221 } 222 return map[string]string{ 223 "conditionId": "", 224 "projectId": "", 225 "organizationId": "", 226 "serviceId": "", 227 } 228 } 229 230 func (name *Name) GetSegments() gotenresource.NameSegments { 231 if name == nil || name.Pattern == "" { 232 return nil 233 } 234 segments := name.ParentName.GetSegments() 235 return append(segments, gotenresource.NameSegment{ 236 CollectionLowerJson: "conditions", 237 Id: name.ConditionId, 238 }) 239 } 240 241 func (name *Name) GetIParentName() gotenresource.Name { 242 if name == nil { 243 return (*ParentName)(nil) 244 } 245 return &name.ParentName 246 } 247 248 func (name *Name) GetIUnderlyingParentName() gotenresource.Name { 249 if parentName := name.GetProjectName(); parentName != nil { 250 return parentName 251 } 252 if parentName := name.GetOrganizationName(); parentName != nil { 253 return parentName 254 } 255 if parentName := name.GetServiceName(); parentName != nil { 256 return parentName 257 } 258 return nil 259 } 260 261 // implement methods required by protobuf-go library for string-struct conversion 262 263 func (name *Name) ProtoString() (string, error) { 264 if name == nil { 265 return "", nil 266 } 267 result := "" 268 parentPrefix, err := name.ParentName.ProtoString() 269 if err != nil { 270 return "", err 271 } 272 if parentPrefix != "" { 273 result += parentPrefix + "/" 274 } 275 result += "conditions/" + name.ConditionId 276 return result, nil 277 } 278 279 func (name *Name) ParseProtoString(data string) error { 280 parsed, err := ParseName(data) 281 if err != nil { 282 return err 283 } 284 *name = *parsed 285 return nil 286 } 287 288 // GotenEqual returns true if other is of same type and paths are equal (implements goten.Equaler interface) 289 func (name *Name) GotenEqual(other interface{}) bool { 290 if other == nil { 291 return name == nil 292 } 293 other1, ok := other.(*Name) 294 if !ok { 295 other2, ok := other.(Name) 296 if ok { 297 other1 = &other2 298 } else { 299 return false 300 } 301 } 302 if other1 == nil { 303 return name == nil 304 } else if name == nil { 305 return false 306 } 307 if name.ParentName.GotenEqual(other1.ParentName) == false { 308 return false 309 } 310 if name.ConditionId != other1.ConditionId { 311 return false 312 } 313 314 return true 315 } 316 317 // Matches is same as GotenEqual, but also will accept "other" if name is wildcard. 318 func (name *Name) Matches(other interface{}) bool { 319 if other == nil { 320 return name == nil 321 } 322 other1, ok := other.(*Name) 323 if !ok { 324 other2, ok := other.(Name) 325 if ok { 326 other1 = &other2 327 } else { 328 return false 329 } 330 } 331 if other1 == nil { 332 return name == nil 333 } else if name == nil { 334 return false 335 } 336 if name.ParentName.Matches(other1.ParentName) == false { 337 return false 338 } 339 if name.ConditionId != other1.ConditionId { 340 return name.ConditionId == gotenresource.WildcardId 341 } 342 343 return true 344 } 345 346 // implement CustomTypeCliValue method 347 func (name *Name) SetFromCliFlag(raw string) error { 348 parsedName, err := ParseName(raw) 349 if err != nil { 350 return err 351 } 352 *name = *parsedName 353 return nil 354 } 355 356 type Reference struct { 357 Name 358 condition *Condition 359 } 360 361 func MakeReference(name *Name, condition *Condition) (*Reference, error) { 362 return &Reference{ 363 Name: *name, 364 condition: condition, 365 }, nil 366 } 367 368 func ParseReference(name string) (*Reference, error) { 369 parsedName, err := ParseName(name) 370 if err != nil { 371 return nil, err 372 } 373 return MakeReference(parsedName, nil) 374 } 375 376 func MustParseReference(name string) *Reference { 377 result, err := ParseReference(name) 378 if err != nil { 379 panic(err) 380 } 381 return result 382 } 383 384 func (ref *Reference) Resolve(resolved *Condition) { 385 ref.condition = resolved 386 } 387 388 func (ref *Reference) ResolveRaw(res gotenresource.Resource) error { 389 if res == nil { 390 ref.Resolve(nil) 391 return nil 392 } 393 if typedRes, ok := res.(*Condition); ok { 394 ref.Resolve(typedRes) 395 return nil 396 } 397 return status.Errorf(codes.Internal, "Invalid resource type for Condition: %s", reflect.TypeOf(res).Elem().Name()) 398 } 399 400 func (ref *Reference) Resolved() bool { 401 return ref != nil && ref.condition != nil 402 } 403 404 func (ref *Reference) ClearCached() { 405 ref.condition = nil 406 } 407 408 func (ref *Reference) GetCondition() *Condition { 409 if ref == nil { 410 return nil 411 } 412 return ref.condition 413 } 414 415 func (ref *Reference) GetRawResource() gotenresource.Resource { 416 if ref == nil { 417 return (*Condition)(nil) 418 } 419 return ref.condition 420 } 421 422 func (ref *Reference) IsFullyQualified() bool { 423 if ref == nil { 424 return false 425 } 426 return ref.Name.IsFullyQualified() 427 } 428 429 func (ref *Reference) IsSpecified() bool { 430 if ref == nil { 431 return false 432 } 433 return ref.Name.IsSpecified() 434 } 435 436 func (ref *Reference) FullyQualifiedName() (string, error) { 437 if !ref.IsFullyQualified() { 438 return "", status.Errorf(codes.InvalidArgument, "Name for Condition is not fully qualified") 439 } 440 return fmt.Sprintf("//iam.edgelq.com/%s", ref.String()), nil 441 } 442 443 func (ref *Reference) GetResourceDescriptor() gotenresource.Descriptor { 444 return descriptor 445 } 446 447 func (ref *Reference) GetPattern() gotenresource.NamePattern { 448 if ref == nil { 449 return "" 450 } 451 return ref.Pattern 452 } 453 454 func (ref *Reference) GetIdParts() map[string]string { 455 if ref != nil { 456 return ref.Name.GetIdParts() 457 } 458 return map[string]string{ 459 "conditionId": "", 460 "projectId": "", 461 "organizationId": "", 462 "serviceId": "", 463 } 464 } 465 466 func (ref *Reference) GetSegments() gotenresource.NameSegments { 467 if ref != nil { 468 return ref.Name.GetSegments() 469 } 470 return nil 471 } 472 473 func (ref *Reference) GetIParentName() gotenresource.Name { 474 if ref == nil { 475 return (*ParentName)(nil) 476 } 477 return ref.Name.GetIParentName() 478 } 479 480 func (ref *Reference) GetIUnderlyingParentName() gotenresource.Name { 481 if ref != nil { 482 return ref.Name.GetIUnderlyingParentName() 483 } 484 return nil 485 } 486 487 func (ref *Reference) String() string { 488 if ref == nil { 489 return "<nil>" 490 } 491 return ref.Name.String() 492 } 493 494 // implement methods required by protobuf-go library for string-struct conversion 495 496 func (ref *Reference) ProtoString() (string, error) { 497 if ref == nil { 498 return "", nil 499 } 500 return ref.Name.ProtoString() 501 } 502 503 func (ref *Reference) ParseProtoString(data string) error { 504 parsed, err := ParseReference(data) 505 if err != nil { 506 return err 507 } 508 *ref = *parsed 509 return nil 510 } 511 512 // GotenEqual returns true if other is of same type and paths are equal (implements goten.Equaler interface) 513 func (ref *Reference) GotenEqual(other interface{}) bool { 514 if other == nil { 515 return ref == nil 516 } 517 other1, ok := other.(*Reference) 518 if !ok { 519 other2, ok := other.(Reference) 520 if ok { 521 other1 = &other2 522 } else { 523 return false 524 } 525 } 526 if other1 == nil { 527 return ref == nil 528 } else if ref == nil { 529 return false 530 } 531 532 return ref.Name.GotenEqual(other1.Name) 533 } 534 535 // Matches is same as GotenEqual, but also will accept "other" if name is wildcard. 536 func (name *Reference) Matches(other interface{}) bool { 537 if other == nil { 538 return name == nil 539 } 540 other1, ok := other.(*Reference) 541 if !ok { 542 other2, ok := other.(Reference) 543 if ok { 544 other1 = &other2 545 } else { 546 return false 547 } 548 } 549 if other1 == nil { 550 return name == nil 551 } else if name == nil { 552 return false 553 } 554 return name.Name.Matches(&other1.Name) 555 } 556 557 // implement CustomTypeCliValue method 558 func (ref *Reference) SetFromCliFlag(raw string) error { 559 parsedRef, err := ParseReference(raw) 560 if err != nil { 561 return err 562 } 563 *ref = *parsedRef 564 return nil 565 }