| 145 | } |
| 146 | |
| 147 | func Users(query string) (database.GetUsersParams, []codersdk.ValidationError) { |
| 148 | // Always lowercase for all searches. |
| 149 | query = strings.ToLower(query) |
| 150 | values, errors := searchTerms(query, func(term string, values url.Values) error { |
| 151 | values.Add("search", term) |
| 152 | return nil |
| 153 | }) |
| 154 | if len(errors) > 0 { |
| 155 | return database.GetUsersParams{}, errors |
| 156 | } |
| 157 | |
| 158 | parser := httpapi.NewQueryParamParser() |
| 159 | filter := database.GetUsersParams{ |
| 160 | Search: parser.String(values, "", "search"), |
| 161 | Name: parser.String(values, "", "name"), |
| 162 | Status: httpapi.ParseCustomList(parser, values, []database.UserStatus{}, "status", httpapi.ParseEnum[database.UserStatus]), |
| 163 | IsServiceAccount: parser.NullableBoolean(values, sql.NullBool{}, "service_account"), |
| 164 | RbacRole: parser.Strings(values, []string{}, "role"), |
| 165 | LastSeenAfter: parser.Time3339Nano(values, time.Time{}, "last_seen_after"), |
| 166 | LastSeenBefore: parser.Time3339Nano(values, time.Time{}, "last_seen_before"), |
| 167 | CreatedAfter: parser.Time3339Nano(values, time.Time{}, "created_after"), |
| 168 | CreatedBefore: parser.Time3339Nano(values, time.Time{}, "created_before"), |
| 169 | GithubComUserID: parser.Int64(values, 0, "github_com_user_id"), |
| 170 | LoginType: httpapi.ParseCustomList(parser, values, []database.LoginType{}, "login_type", httpapi.ParseEnum[database.LoginType]), |
| 171 | } |
| 172 | parser.ErrorExcessParams(values) |
| 173 | return filter, parser.Errors |
| 174 | } |
| 175 | |
| 176 | func Members(query string, organizationID uuid.UUID) (database.OrganizationMembersParams, []codersdk.ValidationError) { |
| 177 | query = strings.TrimSpace(query) |