Skip to content

Commit cef622d

Browse files
authored
fix: Order database queries for templates (#3249)
* fix: Order database queries for templates Fixes a race in a test where the order of templates varies. * fix: Add sorting to databasefake as well
1 parent 5802c29 commit cef622d

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

coderd/database/databasefake/databasefake.go

+17-2
Original file line numberDiff line numberDiff line change
@@ -626,7 +626,8 @@ func (q *fakeQuerier) GetLatestWorkspaceBuildsByWorkspaceIDs(_ context.Context,
626626
}
627627

628628
func (q *fakeQuerier) GetWorkspaceBuildByWorkspaceID(_ context.Context,
629-
params database.GetWorkspaceBuildByWorkspaceIDParams) ([]database.WorkspaceBuild, error) {
629+
params database.GetWorkspaceBuildByWorkspaceIDParams,
630+
) ([]database.WorkspaceBuild, error) {
630631
q.mutex.RLock()
631632
defer q.mutex.RUnlock()
632633

@@ -893,6 +894,12 @@ func (q *fakeQuerier) GetTemplatesWithFilter(_ context.Context, arg database.Get
893894
templates = append(templates, template)
894895
}
895896
if len(templates) > 0 {
897+
slices.SortFunc(templates, func(i, j database.Template) bool {
898+
if !i.CreatedAt.Before(j.CreatedAt) {
899+
return false
900+
}
901+
return i.ID.String() < j.ID.String()
902+
})
896903
return templates, nil
897904
}
898905

@@ -1069,7 +1076,15 @@ func (q *fakeQuerier) GetTemplates(_ context.Context) ([]database.Template, erro
10691076
q.mutex.RLock()
10701077
defer q.mutex.RUnlock()
10711078

1072-
return q.templates[:], nil
1079+
templates := slices.Clone(q.templates)
1080+
slices.SortFunc(templates, func(i, j database.Template) bool {
1081+
if !i.CreatedAt.Before(j.CreatedAt) {
1082+
return false
1083+
}
1084+
return i.ID.String() < j.ID.String()
1085+
})
1086+
1087+
return templates, nil
10731088
}
10741089

10751090
func (q *fakeQuerier) GetOrganizationMemberByUserID(_ context.Context, arg database.GetOrganizationMemberByUserIDParams) (database.OrganizationMember, error) {

coderd/database/queries.sql.go

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/templates.sql

+4-1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ WHERE
3434
id = ANY(@ids)
3535
ELSE true
3636
END
37+
ORDER BY (created_at, id) ASC
3738
;
3839

3940
-- name: GetTemplateByOrganizationAndName :one
@@ -49,7 +50,9 @@ LIMIT
4950
1;
5051

5152
-- name: GetTemplates :many
52-
SELECT * FROM templates;
53+
SELECT * FROM templates
54+
ORDER BY (created_at, id) ASC
55+
;
5356

5457
-- name: InsertTemplate :one
5558
INSERT INTO

0 commit comments

Comments
 (0)