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

Method groups

enterprise/coderd/groups.go:560–633  ·  view source on GitHub ↗

@Summary Get groups @ID get-groups @Security CoderSessionToken @Produce json @Tags Enterprise @Param organization query string true "Organization ID or name" @Param has_member query string true "User ID or name" @Param group_ids query string true "Comma separated list of group IDs" @Success 200 {arr

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

Source from the content-addressed store, hash-verified

558// @Success 200 {array} codersdk.Group
559// @Router /api/v2/groups [get]
560func (api *API) groups(rw http.ResponseWriter, r *http.Request) {
561 ctx := r.Context()
562
563 var filter database.GetGroupsParams
564 parser := httpapi.NewQueryParamParser()
565 // Organization selector can be an org ID or name
566 filter.OrganizationID = parser.UUIDorName(r.URL.Query(), uuid.Nil, "organization", func(orgName string) (uuid.UUID, error) {
567 org, err := api.Database.GetOrganizationByName(ctx, database.GetOrganizationByNameParams{
568 Name: orgName,
569 Deleted: false,
570 })
571 if err != nil {
572 return uuid.Nil, xerrors.Errorf("organization %q not found", orgName)
573 }
574 return org.ID, nil
575 })
576
577 // has_member selector can be a user ID or username
578 filter.HasMemberID = parser.UUIDorName(r.URL.Query(), uuid.Nil, "has_member", func(username string) (uuid.UUID, error) {
579 user, err := api.Database.GetUserByEmailOrUsername(ctx, database.GetUserByEmailOrUsernameParams{
580 Username: username,
581 Email: "",
582 })
583 if err != nil {
584 return uuid.Nil, xerrors.Errorf("user %q not found", username)
585 }
586 return user.ID, nil
587 })
588
589 filter.GroupIds = parser.UUIDs(r.URL.Query(), []uuid.UUID{}, "group_ids")
590
591 parser.ErrorExcessParams(r.URL.Query())
592 if len(parser.Errors) > 0 {
593 httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
594 Message: "Query parameters have invalid values.",
595 Validations: parser.Errors,
596 })
597 return
598 }
599
600 groups, err := api.Database.GetGroups(ctx, filter)
601 if httpapi.Is404Error(err) {
602 httpapi.ResourceNotFound(rw)
603 return
604 }
605 if err != nil {
606 httpapi.InternalServerError(rw, err)
607 return
608 }
609
610 resp := make([]codersdk.Group, 0, len(groups))
611 for _, group := range groups {
612 members, err := api.Database.GetGroupMembersByGroupID(ctx, database.GetGroupMembersByGroupIDParams{
613 GroupID: group.Group.ID,
614 IncludeSystem: false,
615 })
616 if err != nil {
617 httpapi.InternalServerError(rw, err)

Callers 1

groupsByOrganizationMethod · 0.95

Calls 15

UUIDorNameMethod · 0.95
UUIDsMethod · 0.95
ErrorExcessParamsMethod · 0.95
NewQueryParamParserFunction · 0.92
WriteFunction · 0.92
Is404ErrorFunction · 0.92
ResourceNotFoundFunction · 0.92
InternalServerErrorFunction · 0.92
GroupFunction · 0.92
ContextMethod · 0.65
GetOrganizationByNameMethod · 0.65

Tested by

no test coverage detected