ListMembers lists the members of an organization with pagination and optional filters.
(ctx context.Context, page int, pageSize int, opts *ListMembersOpts)
| 89 | |
| 90 | // ListMembers lists the members of an organization with pagination and optional filters. |
| 91 | func (action *MembershipList) ListMembers(ctx context.Context, page int, pageSize int, opts *ListMembersOpts) (*ListMembershipResult, error) { |
| 92 | if page < 1 { |
| 93 | return nil, fmt.Errorf("page must be greater or equal to 1") |
| 94 | } |
| 95 | if pageSize < 1 { |
| 96 | return nil, fmt.Errorf("page-size must be greater or equal to 1") |
| 97 | } |
| 98 | |
| 99 | client := pb.NewOrganizationServiceClient(action.cfg.CPConnection) |
| 100 | req := &pb.OrganizationServiceListMembershipsRequest{ |
| 101 | MembershipId: opts.MembershipID, |
| 102 | Name: opts.Name, |
| 103 | Email: opts.Email, |
| 104 | Pagination: &pb.OffsetPaginationRequest{ |
| 105 | Page: int32(page), |
| 106 | PageSize: int32(pageSize), |
| 107 | }, |
| 108 | } |
| 109 | |
| 110 | // If a role is specified, convert it to the protobuf enum |
| 111 | if opts.Role != nil { |
| 112 | casted := stringToPbRole(Role(*opts.Role)) |
| 113 | req.Role = &casted |
| 114 | } |
| 115 | |
| 116 | resp, err := client.ListMemberships(ctx, req) |
| 117 | if err != nil { |
| 118 | return nil, err |
| 119 | } |
| 120 | |
| 121 | result := make([]*MembershipItem, 0, len(resp.Result)) |
| 122 | for _, p := range resp.Result { |
| 123 | result = append(result, pbMembershipItemToAction(p)) |
| 124 | } |
| 125 | |
| 126 | return &ListMembershipResult{ |
| 127 | Memberships: result, |
| 128 | PaginationMeta: &OffsetPagination{ |
| 129 | Page: int(resp.GetPagination().GetPage()), |
| 130 | PageSize: int(resp.GetPagination().GetPageSize()), |
| 131 | TotalPages: int(resp.GetPagination().GetTotalPages()), |
| 132 | TotalCount: int(resp.GetPagination().GetTotalCount()), |
| 133 | }, |
| 134 | }, nil |
| 135 | } |
| 136 | |
| 137 | func pbOrgItemToAction(in *pb.OrgItem) *OrgItem { |
| 138 | i := &OrgItem{ |
nothing calls this directly
no test coverage detected