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