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