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

Skip to content

Commit 55ff364

Browse files
committed
Fix dbfake with joins
1 parent d5bbd85 commit 55ff364

File tree

1 file changed

+59
-30
lines changed

1 file changed

+59
-30
lines changed

coderd/database/dbfake/dbfake.go

Lines changed: 59 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,11 @@ func New() database.Store {
5757
workspaceResources: make([]database.WorkspaceResource, 0),
5858
workspaceResourceMetadata: make([]database.WorkspaceResourceMetadatum, 0),
5959
provisionerJobs: make([]database.ProvisionerJob, 0),
60-
templateVersions: make([]database.TemplateVersion, 0),
60+
templateVersions: make([]database.TemplateVersionTable, 0),
6161
templates: make([]database.TemplateTable, 0),
6262
workspaceAgentStats: make([]database.WorkspaceAgentStat, 0),
6363
workspaceAgentLogs: make([]database.WorkspaceAgentStartupLog, 0),
64-
workspaceBuilds: make([]database.WorkspaceBuild, 0),
64+
workspaceBuilds: make([]database.WorkspaceBuildTable, 0),
6565
workspaceApps: make([]database.WorkspaceApp, 0),
6666
workspaces: make([]database.Workspace, 0),
6767
licenses: make([]database.License, 0),
@@ -127,15 +127,15 @@ type data struct {
127127
provisionerJobLogs []database.ProvisionerJobLog
128128
provisionerJobs []database.ProvisionerJob
129129
replicas []database.Replica
130-
templateVersions []database.TemplateVersion
130+
templateVersions []database.TemplateVersionTable
131131
templateVersionParameters []database.TemplateVersionParameter
132132
templateVersionVariables []database.TemplateVersionVariable
133133
templates []database.TemplateTable
134134
workspaceAgents []database.WorkspaceAgent
135135
workspaceAgentMetadata []database.WorkspaceAgentMetadatum
136136
workspaceAgentLogs []database.WorkspaceAgentStartupLog
137137
workspaceApps []database.WorkspaceApp
138-
workspaceBuilds []database.WorkspaceBuild
138+
workspaceBuilds []database.WorkspaceBuildTable
139139
workspaceBuildParameters []database.WorkspaceBuildParameter
140140
workspaceResourceMetadata []database.WorkspaceResourceMetadatum
141141
workspaceResources []database.WorkspaceResource
@@ -404,7 +404,7 @@ func (q *FakeQuerier) getWorkspaceByAgentIDNoLock(_ context.Context, agentID uui
404404
var build database.WorkspaceBuild
405405
for _, _build := range q.workspaceBuilds {
406406
if _build.JobID == resource.JobID {
407-
build = _build
407+
build = q.workspaceBuildWithUserNoLock(_build)
408408
break
409409
}
410410
}
@@ -424,7 +424,7 @@ func (q *FakeQuerier) getWorkspaceByAgentIDNoLock(_ context.Context, agentID uui
424424
func (q *FakeQuerier) getWorkspaceBuildByIDNoLock(_ context.Context, id uuid.UUID) (database.WorkspaceBuild, error) {
425425
for _, history := range q.workspaceBuilds {
426426
if history.ID == id {
427-
return history, nil
427+
return q.workspaceBuildWithUserNoLock(history), nil
428428
}
429429
}
430430
return database.WorkspaceBuild{}, sql.ErrNoRows
@@ -435,7 +435,7 @@ func (q *FakeQuerier) getLatestWorkspaceBuildByWorkspaceIDNoLock(_ context.Conte
435435
var buildNum int32 = -1
436436
for _, workspaceBuild := range q.workspaceBuilds {
437437
if workspaceBuild.WorkspaceID == workspaceID && workspaceBuild.BuildNumber > buildNum {
438-
row = workspaceBuild
438+
row = q.workspaceBuildWithUserNoLock(workspaceBuild)
439439
buildNum = workspaceBuild.BuildNumber
440440
}
441441
}
@@ -479,12 +479,46 @@ func (q *FakeQuerier) templateWithUserNoLock(tpl database.TemplateTable) databas
479479
return withUser
480480
}
481481

482+
func (q *FakeQuerier) templateVersionWithUserNoLock(tpl database.TemplateVersionTable) database.TemplateVersion {
483+
var user database.User
484+
for _, _user := range q.users {
485+
if _user.ID == tpl.CreatedBy {
486+
user = _user
487+
break
488+
}
489+
}
490+
var withUser database.TemplateVersion
491+
// This is a cheeky way to copy the fields over without explicitly listing them all.
492+
d, _ := json.Marshal(tpl)
493+
_ = json.Unmarshal(d, &withUser)
494+
withUser.CreatedByUsername = user.Username
495+
withUser.CreatedByAvatarURL = user.AvatarURL
496+
return withUser
497+
}
498+
499+
func (q *FakeQuerier) workspaceBuildWithUserNoLock(tpl database.WorkspaceBuildTable) database.WorkspaceBuild {
500+
var user database.User
501+
for _, _user := range q.users {
502+
if _user.ID == tpl.InitiatorID {
503+
user = _user
504+
break
505+
}
506+
}
507+
var withUser database.WorkspaceBuild
508+
// This is a cheeky way to copy the fields over without explicitly listing them all.
509+
d, _ := json.Marshal(tpl)
510+
_ = json.Unmarshal(d, &withUser)
511+
withUser.InitiatorByUsername = user.Username
512+
withUser.InitiatorByAvatarUrl = user.AvatarURL
513+
return withUser
514+
}
515+
482516
func (q *FakeQuerier) getTemplateVersionByIDNoLock(_ context.Context, templateVersionID uuid.UUID) (database.TemplateVersion, error) {
483517
for _, templateVersion := range q.templateVersions {
484518
if templateVersion.ID != templateVersionID {
485519
continue
486520
}
487-
return templateVersion, nil
521+
return q.templateVersionWithUserNoLock(templateVersion), nil
488522
}
489523
return database.TemplateVersion{}, sql.ErrNoRows
490524
}
@@ -1370,7 +1404,7 @@ func (q *FakeQuerier) GetLatestWorkspaceBuilds(_ context.Context) ([]database.Wo
13701404
for _, workspaceBuild := range q.workspaceBuilds {
13711405
id := workspaceBuild.WorkspaceID
13721406
if workspaceBuild.BuildNumber > buildNumbers[id] {
1373-
builds[id] = workspaceBuild
1407+
builds[id] = q.workspaceBuildWithUserNoLock(workspaceBuild)
13741408
buildNumbers[id] = workspaceBuild.BuildNumber
13751409
}
13761410
}
@@ -1396,7 +1430,7 @@ func (q *FakeQuerier) GetLatestWorkspaceBuildsByWorkspaceIDs(_ context.Context,
13961430
for _, workspaceBuild := range q.workspaceBuilds {
13971431
for _, id := range ids {
13981432
if id == workspaceBuild.WorkspaceID && workspaceBuild.BuildNumber > buildNumbers[id] {
1399-
builds[id] = workspaceBuild
1433+
builds[id] = q.workspaceBuildWithUserNoLock(workspaceBuild)
14001434
buildNumbers[id] = workspaceBuild.BuildNumber
14011435
}
14021436
}
@@ -1606,7 +1640,7 @@ func (q *FakeQuerier) GetPreviousTemplateVersion(_ context.Context, arg database
16061640
if templateVersion.OrganizationID != arg.OrganizationID {
16071641
continue
16081642
}
1609-
currentTemplateVersion = templateVersion
1643+
currentTemplateVersion = q.templateVersionWithUserNoLock(templateVersion)
16101644
break
16111645
}
16121646

@@ -1623,7 +1657,7 @@ func (q *FakeQuerier) GetPreviousTemplateVersion(_ context.Context, arg database
16231657
}
16241658

16251659
if templateVersion.CreatedAt.Before(currentTemplateVersion.CreatedAt) {
1626-
previousTemplateVersions = append(previousTemplateVersions, templateVersion)
1660+
previousTemplateVersions = append(previousTemplateVersions, q.templateVersionWithUserNoLock(templateVersion))
16271661
}
16281662
}
16291663

@@ -1772,7 +1806,7 @@ func (q *FakeQuerier) GetQuotaConsumedForUser(_ context.Context, userID uuid.UUI
17721806
continue
17731807
}
17741808

1775-
var lastBuild database.WorkspaceBuild
1809+
var lastBuild database.WorkspaceBuildTable
17761810
for _, build := range q.workspaceBuilds {
17771811
if build.WorkspaceID != workspace.ID {
17781812
continue
@@ -1959,7 +1993,7 @@ func (q *FakeQuerier) GetTemplateVersionByJobID(_ context.Context, jobID uuid.UU
19591993
if templateVersion.JobID != jobID {
19601994
continue
19611995
}
1962-
return templateVersion, nil
1996+
return q.templateVersionWithUserNoLock(templateVersion), nil
19631997
}
19641998
return database.TemplateVersion{}, sql.ErrNoRows
19651999
}
@@ -1979,7 +2013,7 @@ func (q *FakeQuerier) GetTemplateVersionByTemplateIDAndName(_ context.Context, a
19792013
if !strings.EqualFold(templateVersion.Name, arg.Name) {
19802014
continue
19812015
}
1982-
return templateVersion, nil
2016+
return q.templateVersionWithUserNoLock(templateVersion), nil
19832017
}
19842018
return database.TemplateVersion{}, sql.ErrNoRows
19852019
}
@@ -2026,7 +2060,7 @@ func (q *FakeQuerier) GetTemplateVersionsByIDs(_ context.Context, ids []uuid.UUI
20262060
for _, version := range q.templateVersions {
20272061
for _, id := range ids {
20282062
if id == version.ID {
2029-
versions = append(versions, version)
2063+
versions = append(versions, q.templateVersionWithUserNoLock(version))
20302064
break
20312065
}
20322066
}
@@ -2050,7 +2084,7 @@ func (q *FakeQuerier) GetTemplateVersionsByTemplateID(_ context.Context, arg dat
20502084
if templateVersion.TemplateID.UUID != arg.TemplateID {
20512085
continue
20522086
}
2053-
version = append(version, templateVersion)
2087+
version = append(version, q.templateVersionWithUserNoLock(templateVersion))
20542088
}
20552089

20562090
// Database orders by created_at
@@ -2108,7 +2142,7 @@ func (q *FakeQuerier) GetTemplateVersionsCreatedAfter(_ context.Context, after t
21082142
versions := make([]database.TemplateVersion, 0)
21092143
for _, version := range q.templateVersions {
21102144
if version.CreatedAt.After(after) {
2111-
versions = append(versions, version)
2145+
versions = append(versions, q.templateVersionWithUserNoLock(version))
21122146
}
21132147
}
21142148
return versions, nil
@@ -2700,16 +2734,11 @@ func (q *FakeQuerier) GetWorkspaceBuildByID(ctx context.Context, id uuid.UUID) (
27002734
return q.getWorkspaceBuildByIDNoLock(ctx, id)
27012735
}
27022736

2703-
func (q *FakeQuerier) GetWorkspaceBuildByJobID(_ context.Context, jobID uuid.UUID) (database.WorkspaceBuild, error) {
2737+
func (q *FakeQuerier) GetWorkspaceBuildByJobID(ctx context.Context, jobID uuid.UUID) (database.WorkspaceBuild, error) {
27042738
q.mutex.RLock()
27052739
defer q.mutex.RUnlock()
27062740

2707-
for _, build := range q.workspaceBuilds {
2708-
if build.JobID == jobID {
2709-
return build, nil
2710-
}
2711-
}
2712-
return database.WorkspaceBuild{}, sql.ErrNoRows
2741+
return q.getWorkspaceBuildByIDNoLock(ctx, jobID)
27132742
}
27142743

27152744
func (q *FakeQuerier) GetWorkspaceBuildByWorkspaceIDAndBuildNumber(_ context.Context, arg database.GetWorkspaceBuildByWorkspaceIDAndBuildNumberParams) (database.WorkspaceBuild, error) {
@@ -2727,7 +2756,7 @@ func (q *FakeQuerier) GetWorkspaceBuildByWorkspaceIDAndBuildNumber(_ context.Con
27272756
if workspaceBuild.BuildNumber != arg.BuildNumber {
27282757
continue
27292758
}
2730-
return workspaceBuild, nil
2759+
return q.workspaceBuildWithUserNoLock(workspaceBuild), nil
27312760
}
27322761
return database.WorkspaceBuild{}, sql.ErrNoRows
27332762
}
@@ -2762,7 +2791,7 @@ func (q *FakeQuerier) GetWorkspaceBuildsByWorkspaceID(_ context.Context,
27622791
continue
27632792
}
27642793
if workspaceBuild.WorkspaceID == params.WorkspaceID {
2765-
history = append(history, workspaceBuild)
2794+
history = append(history, q.workspaceBuildWithUserNoLock(workspaceBuild))
27662795
}
27672796
}
27682797

@@ -2816,7 +2845,7 @@ func (q *FakeQuerier) GetWorkspaceBuildsCreatedAfter(_ context.Context, after ti
28162845
workspaceBuilds := make([]database.WorkspaceBuild, 0)
28172846
for _, workspaceBuild := range q.workspaceBuilds {
28182847
if workspaceBuild.CreatedAt.After(after) {
2819-
workspaceBuilds = append(workspaceBuilds, workspaceBuild)
2848+
workspaceBuilds = append(workspaceBuilds, q.workspaceBuildWithUserNoLock(workspaceBuild))
28202849
}
28212850
}
28222851
return workspaceBuilds, nil
@@ -3504,7 +3533,7 @@ func (q *FakeQuerier) InsertTemplateVersion(_ context.Context, arg database.Inse
35043533
defer q.mutex.Unlock()
35053534

35063535
//nolint:gosimple
3507-
version := database.TemplateVersion{
3536+
version := database.TemplateVersionTable{
35083537
ID: arg.ID,
35093538
TemplateID: arg.TemplateID,
35103539
OrganizationID: arg.OrganizationID,
@@ -3856,7 +3885,7 @@ func (q *FakeQuerier) InsertWorkspaceBuild(_ context.Context, arg database.Inser
38563885
q.mutex.Lock()
38573886
defer q.mutex.Unlock()
38583887

3859-
workspaceBuild := database.WorkspaceBuild{
3888+
workspaceBuild := database.WorkspaceBuildTable{
38603889
ID: arg.ID,
38613890
CreatedAt: arg.CreatedAt,
38623891
UpdatedAt: arg.UpdatedAt,

0 commit comments

Comments
 (0)