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  }