mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat(coderd): add ability to search org members by user_id, is_system, github_user_id (#20048)
Adds the ability to search org members by query. Supported fields: `user_id`, `is_system`, `github_user_id`.
This commit is contained in:
@@ -170,6 +170,50 @@ func Users(query string) (database.GetUsersParams, []codersdk.ValidationError) {
|
||||
return filter, parser.Errors
|
||||
}
|
||||
|
||||
func Members(query string, organizationID uuid.UUID) (database.OrganizationMembersParams, []codersdk.ValidationError) {
|
||||
query = strings.TrimSpace(query)
|
||||
if query == "" {
|
||||
return database.OrganizationMembersParams{
|
||||
OrganizationID: organizationID,
|
||||
UserID: uuid.Nil,
|
||||
IncludeSystem: false,
|
||||
GithubUserID: 0,
|
||||
}, nil
|
||||
}
|
||||
values, errors := searchTerms(query, func(term string, values url.Values) error {
|
||||
switch term {
|
||||
case "user_id":
|
||||
values.Set("user_id", "")
|
||||
case "github_user_id":
|
||||
values.Set("github_user_id", "")
|
||||
case "include_system":
|
||||
values.Set("include_system", "")
|
||||
default:
|
||||
return xerrors.Errorf("invalid search term: %s", term)
|
||||
}
|
||||
return nil
|
||||
})
|
||||
if len(errors) > 0 {
|
||||
return database.OrganizationMembersParams{
|
||||
OrganizationID: organizationID,
|
||||
UserID: uuid.Nil,
|
||||
IncludeSystem: false,
|
||||
GithubUserID: 0,
|
||||
}, errors
|
||||
}
|
||||
|
||||
parser := httpapi.NewQueryParamParser()
|
||||
params := database.OrganizationMembersParams{
|
||||
OrganizationID: organizationID,
|
||||
UserID: parser.UUID(values, uuid.Nil, "user_id"),
|
||||
IncludeSystem: parser.Boolean(values, false, "include_system"),
|
||||
GithubUserID: parser.Int64(values, 0, "github_user_id"),
|
||||
}
|
||||
parser.ErrorExcessParams(values)
|
||||
|
||||
return params, parser.Errors
|
||||
}
|
||||
|
||||
func Workspaces(ctx context.Context, db database.Store, query string, page codersdk.Pagination, agentInactiveDisconnectTimeout time.Duration) (database.GetWorkspacesParams, []codersdk.ValidationError) {
|
||||
filter := database.GetWorkspacesParams{
|
||||
AgentInactiveDisconnectTimeoutSeconds: int64(agentInactiveDisconnectTimeout.Seconds()),
|
||||
|
||||
Reference in New Issue
Block a user