mirror of
https://github.com/coder/coder.git
synced 2025-07-06 15:41:45 +00:00
feat(coderd): add workspace timings endpoint (#14648)
This commit is contained in:
@ -195,6 +195,7 @@ type data struct {
|
||||
workspaces []database.Workspace
|
||||
workspaceProxies []database.WorkspaceProxy
|
||||
customRoles []database.CustomRole
|
||||
provisionerJobTimings []database.ProvisionerJobTiming
|
||||
runtimeConfig map[string]string
|
||||
// Locks is a map of lock names. Any keys within the map are currently
|
||||
// locked.
|
||||
@ -3290,6 +3291,26 @@ func (q *FakeQuerier) GetProvisionerJobByID(ctx context.Context, id uuid.UUID) (
|
||||
return q.getProvisionerJobByIDNoLock(ctx, id)
|
||||
}
|
||||
|
||||
func (q *FakeQuerier) GetProvisionerJobTimingsByJobID(_ context.Context, jobID uuid.UUID) ([]database.ProvisionerJobTiming, error) {
|
||||
q.mutex.RLock()
|
||||
defer q.mutex.RUnlock()
|
||||
|
||||
timings := make([]database.ProvisionerJobTiming, 0)
|
||||
for _, timing := range q.provisionerJobTimings {
|
||||
if timing.JobID == jobID {
|
||||
timings = append(timings, timing)
|
||||
}
|
||||
}
|
||||
if len(timings) == 0 {
|
||||
return nil, sql.ErrNoRows
|
||||
}
|
||||
sort.Slice(timings, func(i, j int) bool {
|
||||
return timings[i].StartedAt.Before(timings[j].StartedAt)
|
||||
})
|
||||
|
||||
return timings, nil
|
||||
}
|
||||
|
||||
func (q *FakeQuerier) GetProvisionerJobsByIDs(_ context.Context, ids []uuid.UUID) ([]database.ProvisionerJob, error) {
|
||||
q.mutex.RLock()
|
||||
defer q.mutex.RUnlock()
|
||||
@ -6783,13 +6804,31 @@ func (q *FakeQuerier) InsertProvisionerJobLogs(_ context.Context, arg database.I
|
||||
return logs, nil
|
||||
}
|
||||
|
||||
func (*FakeQuerier) InsertProvisionerJobTimings(_ context.Context, arg database.InsertProvisionerJobTimingsParams) ([]database.ProvisionerJobTiming, error) {
|
||||
func (q *FakeQuerier) InsertProvisionerJobTimings(_ context.Context, arg database.InsertProvisionerJobTimingsParams) ([]database.ProvisionerJobTiming, error) {
|
||||
err := validateDatabaseType(arg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
q.mutex.Lock()
|
||||
defer q.mutex.Unlock()
|
||||
|
||||
insertedTimings := make([]database.ProvisionerJobTiming, 0, len(arg.StartedAt))
|
||||
for i := range arg.StartedAt {
|
||||
timing := database.ProvisionerJobTiming{
|
||||
JobID: arg.JobID,
|
||||
StartedAt: arg.StartedAt[i],
|
||||
EndedAt: arg.EndedAt[i],
|
||||
Stage: arg.Stage[i],
|
||||
Source: arg.Source[i],
|
||||
Action: arg.Action[i],
|
||||
Resource: arg.Resource[i],
|
||||
}
|
||||
q.provisionerJobTimings = append(q.provisionerJobTimings, timing)
|
||||
insertedTimings = append(insertedTimings, timing)
|
||||
}
|
||||
|
||||
return insertedTimings, nil
|
||||
}
|
||||
|
||||
func (q *FakeQuerier) InsertProvisionerKey(_ context.Context, arg database.InsertProvisionerKeyParams) (database.ProvisionerKey, error) {
|
||||
|
Reference in New Issue
Block a user