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

Method groupMembers

enterprise/coderd/groups.go:472–530  ·  view source on GitHub ↗

@Summary Get group members by group ID @ID get-group-members-by-group-id @Security CoderSessionToken @Produce json @Tags Enterprise @Param group path string true "Group id" @Param q query string false "Member search query" @Param after_id query string false "After ID" format(uuid) @Param limit query

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

Source from the content-addressed store, hash-verified

470// @Success 200 {object} codersdk.GroupMembersResponse
471// @Router /api/v2/groups/{group}/members [get]
472func (api *API) groupMembers(rw http.ResponseWriter, r *http.Request) {
473 var (
474 ctx = r.Context()
475 group = httpmw.GroupParam(r)
476 )
477
478 filterQuery := r.URL.Query().Get("q")
479 userFilterParams, filterErrs := searchquery.Users(filterQuery)
480 if len(filterErrs) > 0 {
481 httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
482 Message: "Invalid member search query.",
483 Validations: filterErrs,
484 })
485 return
486 }
487
488 paginationParams, ok := agpl.ParsePagination(rw, r)
489 if !ok {
490 return
491 }
492
493 members, err := api.Database.GetGroupMembersByGroupIDPaginated(ctx, database.GetGroupMembersByGroupIDPaginatedParams{
494 AfterID: paginationParams.AfterID,
495 GroupID: group.ID,
496 IncludeSystem: false,
497 Search: userFilterParams.Search,
498 Name: userFilterParams.Name,
499 Status: userFilterParams.Status,
500 IsServiceAccount: userFilterParams.IsServiceAccount,
501 RbacRole: userFilterParams.RbacRole,
502 LastSeenBefore: userFilterParams.LastSeenBefore,
503 LastSeenAfter: userFilterParams.LastSeenAfter,
504 CreatedAfter: userFilterParams.CreatedAfter,
505 CreatedBefore: userFilterParams.CreatedBefore,
506 GithubComUserID: userFilterParams.GithubComUserID,
507 LoginType: userFilterParams.LoginType,
508 // #nosec G115 - Pagination offsets are small and fit in int32
509 OffsetOpt: int32(paginationParams.Offset),
510 // #nosec G115 - Pagination limits are small and fit in int32
511 LimitOpt: int32(paginationParams.Limit),
512 })
513 if err != nil && !errors.Is(err, sql.ErrNoRows) {
514 httpapi.InternalServerError(rw, err)
515 return
516 }
517
518 if len(members) == 0 {
519 httpapi.Write(ctx, rw, http.StatusOK, codersdk.GroupMembersResponse{
520 Users: nil,
521 Count: 0,
522 })
523 return
524 }
525
526 httpapi.Write(ctx, rw, http.StatusOK, codersdk.GroupMembersResponse{
527 Users: db2sdk.ReducedUsersFromGroupMemberRows(members),
528 Count: int(members[0].Count),
529 })

Callers 1

Calls 9

GroupParamFunction · 0.92
UsersFunction · 0.92
WriteFunction · 0.92
InternalServerErrorFunction · 0.92
ContextMethod · 0.65
GetMethod · 0.65
IsMethod · 0.45

Tested by

no test coverage detected