MCPcopy Index your code
hub / github.com/coder/coder / paginatedMembers

Method paginatedMembers

coderd/members.go:276–377  ·  view source on GitHub ↗

@Summary Paginated organization members @ID paginated-organization-members @Security CoderSessionToken @Produce json @Tags Members @Param organization path string true "Organization ID" @Param q query string false "Member search query" @Param after_id query string false "After ID" format(uuid) @Para

(rw http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

274// @Success 200 {object} []codersdk.PaginatedMembersResponse
275// @Router /api/v2/organizations/{organization}/paginated-members [get]
276func (api *API) paginatedMembers(rw http.ResponseWriter, r *http.Request) {
277 var (
278 ctx = r.Context()
279 organization = httpmw.OrganizationParam(r)
280 )
281
282 filterQuery := r.URL.Query().Get("q")
283 userFilterParams, filterErrs := searchquery.Users(filterQuery)
284 if len(filterErrs) > 0 {
285 httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
286 Message: "Invalid member search query.",
287 Validations: filterErrs,
288 })
289 return
290 }
291
292 paginationParams, ok := ParsePagination(rw, r)
293 if !ok {
294 return
295 }
296
297 paginatedMemberRows, err := api.Database.PaginatedOrganizationMembers(ctx, database.PaginatedOrganizationMembersParams{
298 AfterID: paginationParams.AfterID,
299 OrganizationID: organization.ID,
300 IncludeSystem: false,
301 Search: userFilterParams.Search,
302 Name: userFilterParams.Name,
303 Status: userFilterParams.Status,
304 IsServiceAccount: userFilterParams.IsServiceAccount,
305 RbacRole: userFilterParams.RbacRole,
306 LastSeenBefore: userFilterParams.LastSeenBefore,
307 LastSeenAfter: userFilterParams.LastSeenAfter,
308 CreatedAfter: userFilterParams.CreatedAfter,
309 CreatedBefore: userFilterParams.CreatedBefore,
310 GithubComUserID: userFilterParams.GithubComUserID,
311 LoginType: userFilterParams.LoginType,
312 // #nosec G115 - Pagination offsets are small and fit in int32
313 OffsetOpt: int32(paginationParams.Offset),
314 // #nosec G115 - Pagination limits are small and fit in int32
315 LimitOpt: int32(paginationParams.Limit),
316 })
317 if httpapi.Is404Error(err) {
318 httpapi.ResourceNotFound(rw)
319 return
320 }
321 if err != nil {
322 httpapi.InternalServerError(rw, err)
323 return
324 }
325
326 memberRows := make([]database.OrganizationMembersRow, len(paginatedMemberRows))
327 for i, pRow := range paginatedMemberRows {
328 memberRows[i] = database.OrganizationMembersRow{
329 OrganizationMember: pRow.OrganizationMember,
330 Username: pRow.Username,
331 AvatarURL: pRow.AvatarURL,
332 Name: pRow.Name,
333 Email: pRow.Email,

Callers

nothing calls this directly

Calls 14

OrganizationParamFunction · 0.92
UsersFunction · 0.92
WriteFunction · 0.92
Is404ErrorFunction · 0.92
ResourceNotFoundFunction · 0.92
InternalServerErrorFunction · 0.92
AsSystemRestrictedFunction · 0.92
ParsePaginationFunction · 0.85
getAISeatSetByUserIDsFunction · 0.85
ContextMethod · 0.65
GetMethod · 0.65

Tested by

no test coverage detected