@@ -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