diff --git a/coderd/database/databasefake/databasefake.go b/coderd/database/databasefake/databasefake.go index 5122029d9d31c..0a92e27d6cbfa 100644 --- a/coderd/database/databasefake/databasefake.go +++ b/coderd/database/databasefake/databasefake.go @@ -626,7 +626,8 @@ func (q *fakeQuerier) GetLatestWorkspaceBuildsByWorkspaceIDs(_ context.Context, } func (q *fakeQuerier) GetWorkspaceBuildByWorkspaceID(_ context.Context, - params database.GetWorkspaceBuildByWorkspaceIDParams) ([]database.WorkspaceBuild, error) { + params database.GetWorkspaceBuildByWorkspaceIDParams, +) ([]database.WorkspaceBuild, error) { q.mutex.RLock() defer q.mutex.RUnlock() @@ -893,6 +894,12 @@ func (q *fakeQuerier) GetTemplatesWithFilter(_ context.Context, arg database.Get templates = append(templates, template) } if len(templates) > 0 { + slices.SortFunc(templates, func(i, j database.Template) bool { + if !i.CreatedAt.Before(j.CreatedAt) { + return false + } + return i.ID.String() < j.ID.String() + }) return templates, nil } @@ -1069,7 +1076,15 @@ func (q *fakeQuerier) GetTemplates(_ context.Context) ([]database.Template, erro q.mutex.RLock() defer q.mutex.RUnlock() - return q.templates[:], nil + templates := slices.Clone(q.templates) + slices.SortFunc(templates, func(i, j database.Template) bool { + if !i.CreatedAt.Before(j.CreatedAt) { + return false + } + return i.ID.String() < j.ID.String() + }) + + return templates, nil } func (q *fakeQuerier) GetOrganizationMemberByUserID(_ context.Context, arg database.GetOrganizationMemberByUserIDParams) (database.OrganizationMember, error) { diff --git a/coderd/database/queries.sql.go b/coderd/database/queries.sql.go index fde6fca6a6d37..6f9a0d75eddf9 100644 --- a/coderd/database/queries.sql.go +++ b/coderd/database/queries.sql.go @@ -1889,6 +1889,7 @@ func (q *sqlQuerier) GetTemplateByOrganizationAndName(ctx context.Context, arg G const getTemplates = `-- name: GetTemplates :many SELECT id, created_at, updated_at, organization_id, deleted, name, provisioner, active_version_id, description, max_ttl, min_autostart_interval, created_by FROM templates +ORDER BY (created_at, id) ASC ` func (q *sqlQuerier) GetTemplates(ctx context.Context) ([]Template, error) { @@ -1953,6 +1954,7 @@ WHERE id = ANY($4) ELSE true END +ORDER BY (created_at, id) ASC ` type GetTemplatesWithFilterParams struct { diff --git a/coderd/database/queries/templates.sql b/coderd/database/queries/templates.sql index 7ff6b0a06c5cf..c9860c1ce4833 100644 --- a/coderd/database/queries/templates.sql +++ b/coderd/database/queries/templates.sql @@ -34,6 +34,7 @@ WHERE id = ANY(@ids) ELSE true END +ORDER BY (created_at, id) ASC ; -- name: GetTemplateByOrganizationAndName :one @@ -49,7 +50,9 @@ LIMIT 1; -- name: GetTemplates :many -SELECT * FROM templates; +SELECT * FROM templates +ORDER BY (created_at, id) ASC +; -- name: InsertTemplate :one INSERT INTO