mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
fix: support substring search on workspace name (#2096)
This commit is contained in:
@@ -330,7 +330,7 @@ func (q *fakeQuerier) GetWorkspacesWithFilter(_ context.Context, arg database.Ge
|
||||
if !arg.Deleted && workspace.Deleted {
|
||||
continue
|
||||
}
|
||||
if arg.Name != "" && workspace.Name != arg.Name {
|
||||
if arg.Name != "" && !strings.Contains(workspace.Name, arg.Name) {
|
||||
continue
|
||||
}
|
||||
workspaces = append(workspaces, workspace)
|
||||
|
||||
@@ -3658,10 +3658,10 @@ WHERE
|
||||
owner_id = $3
|
||||
ELSE true
|
||||
END
|
||||
-- Filter by name
|
||||
-- Filter by name, matching on substring
|
||||
AND CASE
|
||||
WHEN $4 :: text != '' THEN
|
||||
LOWER(name) = LOWER($4)
|
||||
LOWER(name) LIKE '%' || LOWER($4) || '%'
|
||||
ELSE true
|
||||
END
|
||||
`
|
||||
|
||||
@@ -28,10 +28,10 @@ WHERE
|
||||
owner_id = @owner_id
|
||||
ELSE true
|
||||
END
|
||||
-- Filter by name
|
||||
-- Filter by name, matching on substring
|
||||
AND CASE
|
||||
WHEN @name :: text != '' THEN
|
||||
LOWER(name) = LOWER(@name)
|
||||
LOWER(name) LIKE '%' || LOWER(@name) || '%'
|
||||
ELSE true
|
||||
END
|
||||
;
|
||||
|
||||
@@ -232,6 +232,42 @@ func TestWorkspaceByOwnerAndName(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func TestWorkspaceFilter(t *testing.T) {
|
||||
t.Parallel()
|
||||
t.Run("Name", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerD: true})
|
||||
user := coderdtest.CreateFirstUser(t, client)
|
||||
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
|
||||
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
|
||||
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
|
||||
workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
|
||||
|
||||
// full match
|
||||
ws, err := client.Workspaces(context.Background(), codersdk.WorkspaceFilter{
|
||||
Name: workspace.Name,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, ws, 1, workspace.Name)
|
||||
require.Equal(t, workspace.ID, ws[0].ID)
|
||||
|
||||
// partial match
|
||||
ws, err = client.Workspaces(context.Background(), codersdk.WorkspaceFilter{
|
||||
Name: workspace.Name[1 : len(workspace.Name)-2],
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, ws, 1)
|
||||
require.Equal(t, workspace.ID, ws[0].ID)
|
||||
|
||||
// no match
|
||||
ws, err = client.Workspaces(context.Background(), codersdk.WorkspaceFilter{
|
||||
Name: "$$$$",
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, ws, 0)
|
||||
})
|
||||
}
|
||||
|
||||
func TestPostWorkspaceBuild(t *testing.T) {
|
||||
t.Parallel()
|
||||
t.Run("NoTemplateVersion", func(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user