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

Skip to content

Commit 0ae8805

Browse files
committed
chore: implement fuzzy name matching for templates
Templates search query defaults to a fuzzy name match
1 parent 5008161 commit 0ae8805

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

coderd/templates_test.go

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -438,8 +438,12 @@ func TestTemplatesByOrganization(t *testing.T) {
438438
user := coderdtest.CreateFirstUser(t, client)
439439
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
440440
version2 := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
441-
coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
442-
coderdtest.CreateTemplate(t, client, user.OrganizationID, version2.ID)
441+
foo := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID, func(request *codersdk.CreateTemplateRequest) {
442+
request.Name = "foobar"
443+
})
444+
bar := coderdtest.CreateTemplate(t, client, user.OrganizationID, version2.ID, func(request *codersdk.CreateTemplateRequest) {
445+
request.Name = "barbaz"
446+
})
443447

444448
ctx := testutil.Context(t, testutil.WaitLong)
445449

@@ -460,6 +464,27 @@ func TestTemplatesByOrganization(t *testing.T) {
460464
require.Equal(t, tmpl.OrganizationDisplayName, org.DisplayName, "organization display name")
461465
require.Equal(t, tmpl.OrganizationIcon, org.Icon, "organization display name")
462466
}
467+
468+
// Check fuzzy name matching
469+
templates, err = client.Templates(ctx, codersdk.TemplateFilter{
470+
FuzzyName: "bar",
471+
})
472+
require.NoError(t, err)
473+
require.Len(t, templates, 2)
474+
475+
templates, err = client.Templates(ctx, codersdk.TemplateFilter{
476+
FuzzyName: "foo",
477+
})
478+
require.NoError(t, err)
479+
require.Len(t, templates, 1)
480+
require.Equal(t, foo.ID, templates[0].ID)
481+
482+
templates, err = client.Templates(ctx, codersdk.TemplateFilter{
483+
FuzzyName: "baz",
484+
})
485+
require.NoError(t, err)
486+
require.Len(t, templates, 1)
487+
require.Equal(t, bar.ID, templates[0].ID)
463488
})
464489
}
465490

codersdk/organizations.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,7 @@ func (c *Client) TemplatesByOrganization(ctx context.Context, organizationID uui
407407
type TemplateFilter struct {
408408
OrganizationID uuid.UUID
409409
ExactName string
410+
FuzzyName string
410411
}
411412

412413
// asRequestOption returns a function that can be used in (*Client).Request.
@@ -424,6 +425,10 @@ func (f TemplateFilter) asRequestOption() RequestOption {
424425
params = append(params, fmt.Sprintf("exact_name:%q", f.ExactName))
425426
}
426427

428+
if f.FuzzyName != "" {
429+
params = append(params, fmt.Sprintf("name:%q", f.FuzzyName))
430+
}
431+
427432
q := r.URL.Query()
428433
q.Set("q", strings.Join(params, " "))
429434
r.URL.RawQuery = q.Encode()

0 commit comments

Comments
 (0)