Skip to content

Commit 2962735

Browse files
committed
last dbmem
1 parent 6ba2c29 commit 2962735

File tree

1 file changed

+114
-3
lines changed

1 file changed

+114
-3
lines changed

coderd/database/dbmem/dbmem.go

Lines changed: 114 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2540,7 +2540,61 @@ func (q *FakeQuerier) GetFailedWorkspaceBuildsByTemplateID(ctx context.Context,
25402540
return nil, err
25412541
}
25422542

2543-
panic("not implemented")
2543+
q.mutex.RLock()
2544+
defer q.mutex.RUnlock()
2545+
2546+
workspaceBuildStats := []database.GetFailedWorkspaceBuildsByTemplateIDRow{}
2547+
for _, wb := range q.workspaceBuilds {
2548+
job, err := q.getProvisionerJobByIDNoLock(ctx, wb.JobID)
2549+
if err != nil {
2550+
return nil, xerrors.Errorf("get provisioner job by ID: %w", err)
2551+
}
2552+
2553+
if job.JobStatus != database.ProvisionerJobStatusFailed {
2554+
continue
2555+
}
2556+
2557+
if !job.CompletedAt.Valid {
2558+
continue
2559+
}
2560+
2561+
if wb.CreatedAt.Before(arg.Since) {
2562+
continue
2563+
}
2564+
2565+
w, err := q.getWorkspaceByIDNoLock(ctx, wb.WorkspaceID)
2566+
if err != nil {
2567+
return nil, xerrors.Errorf("get workspace by ID: %w", err)
2568+
}
2569+
2570+
t, err := q.getTemplateByIDNoLock(ctx, w.TemplateID)
2571+
if err != nil {
2572+
return nil, xerrors.Errorf("get template by ID: %w", err)
2573+
}
2574+
2575+
if t.ID != arg.TemplateID {
2576+
continue
2577+
}
2578+
2579+
workspaceOwner, err := q.getUserByIDNoLock(w.OwnerID)
2580+
if err != nil {
2581+
return nil, xerrors.Errorf("get user by ID: %w", err)
2582+
}
2583+
2584+
templateVersion, err := q.getTemplateVersionByIDNoLock(ctx, wb.TemplateVersionID)
2585+
if err != nil {
2586+
return nil, xerrors.Errorf("get template version by ID: %w", err)
2587+
}
2588+
2589+
workspaceBuildStats = append(workspaceBuildStats, database.GetFailedWorkspaceBuildsByTemplateIDRow{
2590+
WorkspaceName: w.Name,
2591+
WorkspaceOwnerUsername: workspaceOwner.Username,
2592+
TemplateVersionName: templateVersion.Name,
2593+
WorkspaceBuildNumber: wb.BuildNumber,
2594+
})
2595+
}
2596+
2597+
return workspaceBuildStats, nil
25442598
}
25452599

25462600
func (q *FakeQuerier) GetFileByHashAndCreator(_ context.Context, arg database.GetFileByHashAndCreatorParams) (database.File, error) {
@@ -3547,7 +3601,15 @@ func (q *FakeQuerier) GetReportGeneratorLogByUserAndTemplate(ctx context.Context
35473601
return database.ReportGeneratorLog{}, err
35483602
}
35493603

3550-
panic("not implemented")
3604+
q.mutex.RLock()
3605+
q.mutex.RUnlock()
3606+
3607+
for _, record := range q.reportGeneratorLogs {
3608+
if record.UserID == arg.UserID && record.NotificationTemplateID == arg.NotificationTemplateID {
3609+
return database.ReportGeneratorLog(record), nil
3610+
}
3611+
}
3612+
return database.ReportGeneratorLog{}, sql.ErrNoRows
35513613
}
35523614

35533615
func (q *FakeQuerier) GetRuntimeConfig(_ context.Context, key string) (string, error) {
@@ -5850,7 +5912,56 @@ func (q *FakeQuerier) GetWorkspaceBuildParameters(_ context.Context, workspaceBu
58505912
}
58515913

58525914
func (q *FakeQuerier) GetWorkspaceBuildStatsByTemplates(ctx context.Context, since time.Time) ([]database.GetWorkspaceBuildStatsByTemplatesRow, error) {
5853-
panic("not implemented")
5915+
q.mutex.RLock()
5916+
defer q.mutex.RUnlock()
5917+
5918+
templateStats := map[uuid.UUID]database.GetWorkspaceBuildStatsByTemplatesRow{}
5919+
for _, wb := range q.workspaceBuilds {
5920+
job, err := q.getProvisionerJobByIDNoLock(ctx, wb.JobID)
5921+
if err != nil {
5922+
return nil, xerrors.Errorf("get provisioner job by ID: %w", err)
5923+
}
5924+
5925+
if !job.CompletedAt.Valid {
5926+
continue
5927+
}
5928+
5929+
if wb.CreatedAt.Before(since) {
5930+
continue
5931+
}
5932+
5933+
w, err := q.getWorkspaceByIDNoLock(ctx, wb.WorkspaceID)
5934+
if err != nil {
5935+
return nil, xerrors.Errorf("get workspace by ID: %w", err)
5936+
}
5937+
5938+
if _, ok := templateStats[w.TemplateID]; !ok {
5939+
t, err := q.getTemplateByIDNoLock(ctx, w.TemplateID)
5940+
if err != nil {
5941+
return nil, xerrors.Errorf("get template by ID: %w", err)
5942+
}
5943+
5944+
templateStats[w.TemplateID] = database.GetWorkspaceBuildStatsByTemplatesRow{
5945+
TemplateID: w.TemplateID,
5946+
TemplateName: t.Name,
5947+
TemplateDisplayName: t.DisplayName,
5948+
TemplateOrganizationID: w.OrganizationID,
5949+
}
5950+
}
5951+
5952+
s := templateStats[w.TemplateID]
5953+
s.TotalBuilds++
5954+
if job.JobStatus == database.ProvisionerJobStatusFailed {
5955+
s.FailedBuilds++
5956+
}
5957+
templateStats[w.TemplateID] = s
5958+
}
5959+
5960+
rows := make([]database.GetWorkspaceBuildStatsByTemplatesRow, 0, len(templateStats))
5961+
for _, ts := range templateStats {
5962+
rows = append(rows, ts)
5963+
}
5964+
return rows, nil
58545965
}
58555966

58565967
func (q *FakeQuerier) GetWorkspaceBuildsByWorkspaceID(_ context.Context,

0 commit comments

Comments
 (0)