github.com/cloudwan/edgelq-sdk@v1.15.4/iam/resources/v1alpha2/group_member/group_member.pb.namebuilder.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  	gotenresource "github.com/cloudwan/goten-sdk/runtime/resource"
     9  )
    10  
    11  // proto imports
    12  import (
    13  	group "github.com/cloudwan/edgelq-sdk/iam/resources/v1alpha2/group"
    14  	meta "github.com/cloudwan/goten-sdk/types/meta"
    15  )
    16  
    17  // make sure we're using proto imports
    18  var (
    19  	_ = &group.Group{}
    20  	_ = &meta.Meta{}
    21  )
    22  
    23  const (
    24  	NamePattern_Group              = "groups/{group}/groupMembers/{group_member}"
    25  	NamePattern_Project_Group      = "projects/{project}/groups/{group}/groupMembers/{group_member}"
    26  	NamePattern_Organization_Group = "organizations/{organization}/groups/{group}/groupMembers/{group_member}"
    27  )
    28  
    29  type NamePattern struct {
    30  	Pattern gotenresource.NamePattern `firestore:"pattern"`
    31  }
    32  
    33  type NameBuilder struct {
    34  	nameObj Name
    35  }
    36  
    37  func NewNameBuilder() *NameBuilder {
    38  	return &NameBuilder{
    39  		nameObj: Name{
    40  			GroupMemberId: gotenresource.WildcardId,
    41  			ParentName: ParentName{
    42  				NamePattern: NamePattern{
    43  					// Set default pattern - just first.
    44  					Pattern: NamePattern_Group,
    45  				},
    46  			},
    47  		},
    48  	}
    49  }
    50  
    51  func (b *NameBuilder) Name() *Name {
    52  	copied := b.nameObj
    53  	return &copied
    54  }
    55  
    56  func (b *NameBuilder) Reference() *Reference {
    57  	return b.nameObj.AsReference()
    58  }
    59  
    60  func (b *NameBuilder) Parent() *ParentName {
    61  	copied := b.nameObj.ParentName
    62  	return &copied
    63  }
    64  
    65  func (b *NameBuilder) ParentReference() *ParentReference {
    66  	return b.nameObj.ParentName.AsReference()
    67  }
    68  
    69  func (b *NameBuilder) SetId(id string) *NameBuilder {
    70  	b.nameObj.GroupMemberId = id
    71  	return b
    72  }
    73  
    74  func (b *NameBuilder) SetGroup(parent *group.Name) *NameBuilder {
    75  	parentName := &b.nameObj.ParentName
    76  
    77  	switch parent.Pattern {
    78  	case group.NamePattern_Nil:
    79  		parentName.Pattern = NamePattern_Group
    80  	case group.NamePattern_Project:
    81  		parentName.Pattern = NamePattern_Project_Group
    82  	case group.NamePattern_Organization:
    83  		parentName.Pattern = NamePattern_Organization_Group
    84  	}
    85  	parentName.GroupId = parent.GroupId
    86  	parentName.ProjectId = parent.ProjectId
    87  	parentName.OrganizationId = parent.OrganizationId
    88  	return b
    89  }
    90  
    91  func (b *NameBuilder) SetGroupId(id string) *NameBuilder {
    92  	parentName := &b.nameObj.ParentName
    93  	parentName.GroupId = id
    94  
    95  	// Set pattern if something matches for this set of IDs
    96  	if parentName.GroupId != "" {
    97  		parentName.Pattern = NamePattern_Group
    98  	}
    99  	if parentName.ProjectId != "" && parentName.GroupId != "" {
   100  		parentName.Pattern = NamePattern_Project_Group
   101  	}
   102  	if parentName.OrganizationId != "" && parentName.GroupId != "" {
   103  		parentName.Pattern = NamePattern_Organization_Group
   104  	}
   105  	return b
   106  }
   107  
   108  func (b *NameBuilder) SetProjectId(id string) *NameBuilder {
   109  	parentName := &b.nameObj.ParentName
   110  	parentName.ProjectId = id
   111  
   112  	// Set pattern if something matches for this set of IDs
   113  	if parentName.ProjectId != "" && parentName.GroupId != "" {
   114  		parentName.Pattern = NamePattern_Project_Group
   115  	}
   116  	return b
   117  }
   118  
   119  func (b *NameBuilder) SetOrganizationId(id string) *NameBuilder {
   120  	parentName := &b.nameObj.ParentName
   121  	parentName.OrganizationId = id
   122  
   123  	// Set pattern if something matches for this set of IDs
   124  	if parentName.OrganizationId != "" && parentName.GroupId != "" {
   125  		parentName.Pattern = NamePattern_Organization_Group
   126  	}
   127  	return b
   128  }