@@ -187,9 +187,49 @@ func (api *API) listMembers(rw http.ResponseWriter, r *http.Request) {
187
187
// @Success 200 {object} []codersdk.OrganizationMemberWithUserData
188
188
// @Router /organizations/{organization}/paginated-members [get]
189
189
func (api * API ) paginatedMembers (rw http.ResponseWriter , r * http.Request ) {
190
- ctx := r .Context ()
190
+ var (
191
+ ctx = r .Context ()
192
+ organization = httpmw .OrganizationParam (r )
193
+ paginationParams , ok = parsePagination (rw , r )
194
+ )
195
+ if ! ok {
196
+ return
197
+ }
191
198
192
- resp := codersdk.PaginatedMembersResponse {}
199
+ paginatedMemberRows , err := api .Database .PaginatedOrganizationMembers (ctx , database.PaginatedOrganizationMembersParams {
200
+ OrganizationID : organization .ID ,
201
+ LimitOpt : int32 (paginationParams .Limit ),
202
+ OffsetOpt : int32 (paginationParams .Offset ),
203
+ })
204
+ if httpapi .Is404Error (err ) {
205
+ httpapi .ResourceNotFound (rw )
206
+ return
207
+ }
208
+ if err != nil {
209
+ httpapi .InternalServerError (rw , err )
210
+ return
211
+ }
212
+
213
+ memberRows := make ([]database.OrganizationMembersRow , len (paginatedMemberRows ))
214
+ for _ , pRow := range paginatedMemberRows {
215
+ row := database.OrganizationMembersRow {
216
+ OrganizationMember : pRow .OrganizationMember ,
217
+ Username : pRow .Username ,
218
+ AvatarURL : pRow .AvatarURL ,
219
+ Name : pRow .Name ,
220
+ Email : pRow .Email ,
221
+ GlobalRoles : pRow .GlobalRoles ,
222
+ }
223
+
224
+ memberRows = append (memberRows , row )
225
+ }
226
+
227
+ members , err := convertOrganizationMembersWithUserData (ctx , api .Database , memberRows )
228
+
229
+ resp := codersdk.PaginatedMembersResponse {
230
+ Members : members ,
231
+ Count : int (paginatedMemberRows [0 ].Count ),
232
+ }
193
233
httpapi .Write (ctx , rw , http .StatusOK , resp )
194
234
}
195
235
0 commit comments