Skip to content

Commit 5f2bfd4

Browse files
committed
move interval verification
1 parent b54b0aa commit 5f2bfd4

File tree

1 file changed

+22
-17
lines changed

1 file changed

+22
-17
lines changed

coderd/insights.go

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -209,29 +209,16 @@ func (api *API) insightsTemplates(rw http.ResponseWriter, r *http.Request) {
209209
if !verifyInsightsStartAndEndTime(ctx, rw, startTime, endTime) {
210210
return
211211
}
212+
interval, ok := verifyInsightsInterval(ctx, rw, intervalString)
213+
if !ok {
214+
return
215+
}
212216

213217
// Should we verify all template IDs exist, or just return no rows?
214218
// _, err := api.Database.GetTemplatesWithFilter(ctx, database.GetTemplatesWithFilterParams{
215219
// IDs: templateIDs,
216220
// })
217221

218-
var interval codersdk.InsightsReportInterval
219-
switch v := codersdk.InsightsReportInterval(intervalString); v {
220-
case codersdk.InsightsReportIntervalDay, codersdk.InsightsReportIntervalNone:
221-
interval = v
222-
default:
223-
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
224-
Message: "Query parameter has invalid value.",
225-
Validations: []codersdk.ValidationError{
226-
{
227-
Field: "interval",
228-
Detail: fmt.Sprintf("must be one of %v", []codersdk.InsightsReportInterval{codersdk.InsightsReportIntervalNone, codersdk.InsightsReportIntervalDay}),
229-
},
230-
},
231-
})
232-
return
233-
}
234-
235222
var usage database.GetTemplateInsightsRow
236223
var dailyUsage []database.GetTemplateDailyInsightsRow
237224
// Use a transaction to ensure that we get consistent data between
@@ -372,3 +359,21 @@ func verifyInsightsStartAndEndTime(ctx context.Context, rw http.ResponseWriter,
372359

373360
return true
374361
}
362+
363+
func verifyInsightsInterval(ctx context.Context, rw http.ResponseWriter, intervalString string) (codersdk.InsightsReportInterval, bool) {
364+
switch v := codersdk.InsightsReportInterval(intervalString); v {
365+
case codersdk.InsightsReportIntervalDay, codersdk.InsightsReportIntervalNone:
366+
return v, true
367+
default:
368+
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
369+
Message: "Query parameter has invalid value.",
370+
Validations: []codersdk.ValidationError{
371+
{
372+
Field: "interval",
373+
Detail: fmt.Sprintf("must be one of %v", []codersdk.InsightsReportInterval{codersdk.InsightsReportIntervalNone, codersdk.InsightsReportIntervalDay}),
374+
},
375+
},
376+
})
377+
return "", false
378+
}
379+
}

0 commit comments

Comments
 (0)