Skip to content

Commit 611dac1

Browse files
committed
Implement fakes and mocks
1 parent fc715fd commit 611dac1

File tree

7 files changed

+79
-19
lines changed

7 files changed

+79
-19
lines changed

coderd/database/dbauthz/dbauthz.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -2242,13 +2242,13 @@ func (q *querier) InsertWorkspaceResourceMetadata(ctx context.Context, arg datab
22422242
return q.db.InsertWorkspaceResourceMetadata(ctx, arg)
22432243
}
22442244

2245-
func (q *querier) PruneUnusedTemplateVersions(ctx context.Context, arg database.PruneUnusedTemplateVersionsParams) error {
2245+
func (q *querier) PruneUnusedTemplateVersions(ctx context.Context, arg database.PruneUnusedTemplateVersionsParams) ([]uuid.UUID, error) {
22462246
tpl, err := q.db.GetTemplateByID(ctx, arg.TemplateID)
22472247
if err != nil {
2248-
return err
2248+
return nil, err
22492249
}
22502250
if err := q.authorizeContext(ctx, rbac.ActionUpdate, tpl); err != nil {
2251-
return err
2251+
return nil, err
22522252
}
22532253
return q.db.PruneUnusedTemplateVersions(ctx, arg)
22542254
}

coderd/database/dbfake/dbfake.go

+38-3
Original file line numberDiff line numberDiff line change
@@ -5175,13 +5175,48 @@ func (q *FakeQuerier) InsertWorkspaceResourceMetadata(_ context.Context, arg dat
51755175
return metadata, nil
51765176
}
51775177

5178-
func (q *FakeQuerier) PruneUnusedTemplateVersions(ctx context.Context, arg database.PruneUnusedTemplateVersionsParams) error {
5178+
func (q *FakeQuerier) PruneUnusedTemplateVersions(ctx context.Context, arg database.PruneUnusedTemplateVersionsParams) ([]uuid.UUID, error) {
51795179
err := validateDatabaseType(arg)
51805180
if err != nil {
5181-
return err
5181+
return nil, err
5182+
}
5183+
q.mutex.Lock()
5184+
defer q.mutex.Unlock()
5185+
type latestBuild struct {
5186+
Number int32
5187+
Version uuid.UUID
5188+
}
5189+
latest := make(map[uuid.UUID]latestBuild)
5190+
5191+
for _, b := range q.workspaceBuilds {
5192+
v, ok := latest[b.WorkspaceID]
5193+
if ok || b.BuildNumber < v.Number {
5194+
// Not the latest
5195+
continue
5196+
}
5197+
latest[b.WorkspaceID] = latestBuild{
5198+
Number: b.BuildNumber,
5199+
Version: b.TemplateVersionID,
5200+
}
5201+
}
5202+
usedVersions := make(map[uuid.UUID]bool)
5203+
for _, l := range latest {
5204+
usedVersions[l.Version] = true
5205+
}
5206+
5207+
var deleted []uuid.UUID
5208+
for i, v := range q.templateVersions {
5209+
if v.Deleted {
5210+
continue
5211+
}
5212+
if _, ok := usedVersions[v.ID]; !ok {
5213+
v.Deleted = true
5214+
q.templateVersions[i] = v
5215+
deleted = append(deleted, v.ID)
5216+
}
51825217
}
51835218

5184-
panic("not implemented")
5219+
return deleted, nil
51855220
}
51865221

51875222
func (q *FakeQuerier) RegisterWorkspaceProxy(_ context.Context, arg database.RegisterWorkspaceProxyParams) (database.WorkspaceProxy, error) {

coderd/database/dbmetrics/dbmetrics.go

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

coderd/database/dbmock/dbmock.go

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

coderd/database/querier.go

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

coderd/database/queries.sql.go

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

coderd/database/queries/templateversions.sql

+5-2
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ ORDER BY created_at DESC
139139
LIMIT 1;
140140

141141

142-
-- name: PruneUnusedTemplateVersions :exec
142+
-- name: PruneUnusedTemplateVersions :many
143143
-- Pruning templates is a soft delete action, so is technically reversible.
144144
-- Soft deleting prevents the version from being used and discovered
145145
-- by listing.
@@ -165,5 +165,8 @@ WHERE
165165
workspace_builds
166166
ORDER BY build_number DESC
167167
)
168+
-- Ignore already deleted versions.
169+
AND template_versions.deleted = false
168170
-- Scope a prune to a single template.
169-
AND template_id = @template_id :: uuid;
171+
AND template_id = @template_id :: uuid
172+
RETURNING id;

0 commit comments

Comments
 (0)