Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9597345

Browse files
committed
Add name filter to backend
1 parent 7117ac5 commit 9597345

File tree

6 files changed

+45
-17
lines changed

6 files changed

+45
-17
lines changed

coderd/database/queries.sql.go

Lines changed: 13 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/workspaces.sql

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ WHERE
2828
owner_id = @owner_id
2929
ELSE true
3030
END
31+
-- Filter by name
32+
AND CASE
33+
WHEN @name :: string != '' THEN
34+
name = LOWER(@name)
35+
ELSE true
36+
END
3137
;
3238

3339
-- name: GetWorkspacesByOrganizationIDs :many

coderd/workspaces.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ func (api *API) workspaces(rw http.ResponseWriter, r *http.Request) {
137137
// Empty strings mean no filter
138138
orgFilter := r.URL.Query().Get("organization_id")
139139
ownerFilter := r.URL.Query().Get("owner")
140+
nameFilter := r.URL.Query().Get("name")
140141

141142
filter := database.GetWorkspacesWithFilterParams{Deleted: false}
142143
if orgFilter != "" {
@@ -170,6 +171,9 @@ func (api *API) workspaces(rw http.ResponseWriter, r *http.Request) {
170171
}
171172
filter.OwnerID = userID
172173
}
174+
if nameFilter != "" {
175+
filter.Name = nameFilter
176+
}
173177

174178
workspaces, err := api.Database.GetWorkspacesWithFilter(r.Context(), filter)
175179
if err != nil {

codersdk/workspaces.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"encoding/json"
66
"fmt"
77
"net/http"
8+
"strconv"
89
"time"
910

1011
"github.com/google/uuid"
@@ -200,7 +201,9 @@ func (c *Client) PutExtendWorkspace(ctx context.Context, id uuid.UUID, req PutEx
200201
type WorkspaceFilter struct {
201202
OrganizationID uuid.UUID
202203
// Owner can be a user_id (uuid), "me", or a username
203-
Owner string
204+
Owner string
205+
Name string
206+
Deleted bool
204207
}
205208

206209
// asRequestOption returns a function that can be used in (*Client).Request.
@@ -214,6 +217,12 @@ func (f WorkspaceFilter) asRequestOption() requestOption {
214217
if f.Owner != "" {
215218
q.Set("owner", f.Owner)
216219
}
220+
if f.Name != "" {
221+
q.Set("name", f.Name)
222+
}
223+
if f.Deleted {
224+
q.Set("deleted", strconv.FormatBool(f.Deleted))
225+
}
217226
r.URL.RawQuery = q.Encode()
218227
}
219228
}

site/src/api/typesGenerated.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export interface CreateUserRequest {
8888
readonly organization_id: string
8989
}
9090

91-
// From codersdk/workspaces.go:34:6
91+
// From codersdk/workspaces.go:35:6
9292
export interface CreateWorkspaceBuildRequest {
9393
readonly template_version_id?: string
9494
readonly transition: WorkspaceTransition
@@ -222,7 +222,7 @@ export interface ProvisionerJobLog {
222222
readonly output: string
223223
}
224224

225-
// From codersdk/workspaces.go:182:6
225+
// From codersdk/workspaces.go:183:6
226226
export interface PutExtendWorkspaceRequest {
227227
readonly deadline: string
228228
}
@@ -299,12 +299,12 @@ export interface UpdateUserProfileRequest {
299299
readonly username: string
300300
}
301301

302-
// From codersdk/workspaces.go:141:6
302+
// From codersdk/workspaces.go:142:6
303303
export interface UpdateWorkspaceAutostartRequest {
304304
readonly schedule: string
305305
}
306306

307-
// From codersdk/workspaces.go:161:6
307+
// From codersdk/workspaces.go:162:6
308308
export interface UpdateWorkspaceTTLRequest {
309309
// This is likely an enum in an external package ("time.Duration")
310310
readonly ttl?: number
@@ -360,7 +360,7 @@ export interface UsersRequest extends Pagination {
360360
readonly status?: string
361361
}
362362

363-
// From codersdk/workspaces.go:18:6
363+
// From codersdk/workspaces.go:19:6
364364
export interface Workspace {
365365
readonly id: string
366366
readonly created_at: string
@@ -438,15 +438,17 @@ export interface WorkspaceBuild {
438438
readonly deadline: string
439439
}
440440

441-
// From codersdk/workspaces.go:64:6
441+
// From codersdk/workspaces.go:65:6
442442
export interface WorkspaceBuildsRequest extends Pagination {
443443
readonly WorkspaceID: string
444444
}
445445

446-
// From codersdk/workspaces.go:200:6
446+
// From codersdk/workspaces.go:201:6
447447
export interface WorkspaceFilter {
448448
readonly OrganizationID: string
449449
readonly Owner: string
450+
readonly Name: string
451+
readonly Deleted: boolean
450452
}
451453

452454
// From codersdk/workspaceresources.go:21:6

site/src/pages/WorkspacesPage/WorkspacesPage.tsx

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ import { useMachine } from "@xstate/react"
99
import { FormikErrors, useFormik } from "formik"
1010
import { FC, useState } from "react"
1111
import { Link as RouterLink } from "react-router-dom"
12+
import { CloseDropdown, OpenDropdown } from "../../components/DropdownArrows/DropdownArrows"
1213
import { Margins } from "../../components/Margins/Margins"
1314
import { Stack } from "../../components/Stack/Stack"
1415
import { getFormHelpers, onChangeTrimmed } from "../../util/formUtils"
1516
import { workspacesMachine } from "../../xServices/workspaces/workspacesXService"
1617
import { WorkspacesPageView } from "./WorkspacesPageView"
17-
import { CloseDropdown, OpenDropdown } from "../../components/DropdownArrows/DropdownArrows"
1818

1919
interface FilterFormValues {
2020
query: string
@@ -24,7 +24,7 @@ const Language = {
2424
filterName: "Filters",
2525
createWorkspaceButton: "Create workspace",
2626
yourWorkspacesButton: "Your workspaces",
27-
allWorkspacesButton: "All workspaces"
27+
allWorkspacesButton: "All workspaces",
2828
}
2929

3030
export type FilterFormErrors = FormikErrors<FilterFormValues>
@@ -78,12 +78,7 @@ const WorkspacesPage: FC = () => {
7878
{Language.filterName} {anchorEl ? <CloseDropdown /> : <OpenDropdown />}
7979
</Button>
8080

81-
<Menu id="filter-menu"
82-
anchorEl={anchorEl}
83-
keepMounted
84-
open={Boolean(anchorEl)}
85-
onClose={handleClose}
86-
>
81+
<Menu id="filter-menu" anchorEl={anchorEl} keepMounted open={Boolean(anchorEl)} onClose={handleClose}>
8782
<MenuItem onClick={setYourWorkspaces}>{Language.yourWorkspacesButton}</MenuItem>
8883
<MenuItem onClick={setAllWorkspaces}>{Language.allWorkspacesButton}</MenuItem>
8984
</Menu>

0 commit comments

Comments
 (0)