Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit5b80c47

Browse files
authored
feat: addauthor filter command to template filtering (#19202)
Can do `author:username` to filter templates created by a certainauthor. Adding to help clean out some templates that I created on ourdev instance. This makes sorting a bit easier.
1 parent408e19f commit5b80c47

File tree

6 files changed

+81
-1
lines changed

6 files changed

+81
-1
lines changed

‎coderd/database/modelqueries.go‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ func (q *sqlQuerier) GetAuthorizedTemplates(ctx context.Context, arg GetTemplate
8282
pq.Array(arg.IDs),
8383
arg.Deprecated,
8484
arg.HasAITask,
85+
arg.AuthorID,
86+
arg.AuthorUsername,
8587
)
8688
iferr!=nil {
8789
returnnil,err

‎coderd/database/queries.sql.go‎

Lines changed: 17 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/queries/templates.sql‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,19 @@ WHERE
5959
tv.has_ai_task=sqlc.narg('has_ai_task') ::boolean
6060
ELSE true
6161
END
62+
-- Filter by author_id
63+
AND CASE
64+
WHEN @author_id :: uuid!='00000000-0000-0000-0000-000000000000'::uuid THEN
65+
t.created_by= @author_id
66+
ELSE true
67+
END
68+
-- Filter by author_username
69+
AND CASE
70+
WHEN @author_username ::text!='' THEN
71+
t.created_by= (SELECT idFROM usersWHERElower(users.username)=lower(@author_username)AND deleted= false)
72+
ELSE true
73+
END
74+
6275
-- Authorize Filter clause will be injected below in GetAuthorizedTemplates
6376
-- @authorize_filter
6477
ORDER BY (t.name,t.id)ASC

‎coderd/searchquery/search.go‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,12 +278,14 @@ func Templates(ctx context.Context, db database.Store, query string) (database.G
278278
parser:=httpapi.NewQueryParamParser()
279279
filter:= database.GetTemplatesWithFilterParams{
280280
Deleted:parser.Boolean(values,false,"deleted"),
281+
OrganizationID:parseOrganization(ctx,db,parser,values,"organization"),
281282
ExactName:parser.String(values,"","exact_name"),
282283
FuzzyName:parser.String(values,"","name"),
283284
IDs:parser.UUIDs(values, []uuid.UUID{},"ids"),
284285
Deprecated:parser.NullableBoolean(values, sql.NullBool{},"deprecated"),
285-
OrganizationID:parseOrganization(ctx,db,parser,values,"organization"),
286286
HasAITask:parser.NullableBoolean(values, sql.NullBool{},"has-ai-task"),
287+
AuthorID:parser.UUID(values,uuid.Nil,"author_id"),
288+
AuthorUsername:parser.String(values,"","author"),
287289
}
288290

289291
parser.ErrorExcessParams(values)

‎coderd/templates_test.go‎

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -814,6 +814,46 @@ func TestTemplatesByOrganization(t *testing.T) {
814814
require.False(t,templates[0].Deprecated)
815815
require.Empty(t,templates[0].DeprecationMessage)
816816
})
817+
818+
t.Run("ListByAuthor",func(t*testing.T) {
819+
t.Parallel()
820+
client:=coderdtest.New(t,nil)
821+
owner:=coderdtest.CreateFirstUser(t,client)
822+
adminAlpha,adminAlphaData:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID,rbac.RoleTemplateAdmin())
823+
adminBravo,adminBravoData:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID,rbac.RoleTemplateAdmin())
824+
adminCharlie,_:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID,rbac.RoleTemplateAdmin())
825+
826+
versionA:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,nil)
827+
versionB:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,nil)
828+
versionC:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,nil)
829+
foo:=coderdtest.CreateTemplate(t,adminAlpha,owner.OrganizationID,versionA.ID,func(request*codersdk.CreateTemplateRequest) {
830+
request.Name="foo"
831+
})
832+
bar:=coderdtest.CreateTemplate(t,adminBravo,owner.OrganizationID,versionB.ID,func(request*codersdk.CreateTemplateRequest) {
833+
request.Name="bar"
834+
})
835+
_=coderdtest.CreateTemplate(t,adminCharlie,owner.OrganizationID,versionC.ID,func(request*codersdk.CreateTemplateRequest) {
836+
request.Name="baz"
837+
})
838+
839+
ctx:=testutil.Context(t,testutil.WaitLong)
840+
841+
// List alpha
842+
alpha,err:=client.Templates(ctx, codersdk.TemplateFilter{
843+
AuthorUsername:adminAlphaData.Username,
844+
})
845+
require.NoError(t,err)
846+
require.Len(t,alpha,1)
847+
require.Equal(t,foo.ID,alpha[0].ID)
848+
849+
// List bravo
850+
bravo,err:=client.Templates(ctx, codersdk.TemplateFilter{
851+
AuthorUsername:adminBravoData.Username,
852+
})
853+
require.NoError(t,err)
854+
require.Len(t,bravo,1)
855+
require.Equal(t,bar.ID,bravo[0].ID)
856+
})
817857
}
818858

819859
funcTestTemplateByOrganizationAndName(t*testing.T) {

‎codersdk/organizations.go‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,7 @@ type TemplateFilter struct {
541541
OrganizationID uuid.UUID`typescript:"-"`
542542
ExactNamestring`typescript:"-"`
543543
FuzzyNamestring`typescript:"-"`
544+
AuthorUsernamestring`typescript:"-"`
544545
SearchQuerystring`json:"q,omitempty"`
545546
}
546547

@@ -562,6 +563,11 @@ func (f TemplateFilter) asRequestOption() RequestOption {
562563
iff.FuzzyName!="" {
563564
params=append(params,fmt.Sprintf("name:%q",f.FuzzyName))
564565
}
566+
567+
iff.AuthorUsername!="" {
568+
params=append(params,fmt.Sprintf("author:%q",f.AuthorUsername))
569+
}
570+
565571
iff.SearchQuery!="" {
566572
params=append(params,f.SearchQuery)
567573
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp