@@ -271,46 +271,52 @@ func (api *API) insightsTemplates(rw http.ResponseWriter, r *http.Request) {
271
271
EndTime : endTime ,
272
272
TemplateIDs : usage .TemplateIDs ,
273
273
ActiveUsers : usage .ActiveUsers ,
274
- AppsUsage : []codersdk.TemplateAppUsage {
275
- {
276
- TemplateIDs : usage .TemplateIDs ,
277
- Type : codersdk .TemplateAppsTypeBuiltin ,
278
- DisplayName : "Visual Studio Code" ,
279
- Slug : "vscode" ,
280
- Icon : "/icons/code.svg" ,
281
- Seconds : usage .UsageVscodeSeconds ,
282
- },
283
- {
284
- TemplateIDs : usage .TemplateIDs ,
285
- Type : codersdk .TemplateAppsTypeBuiltin ,
286
- DisplayName : "JetBrains" ,
287
- Slug : "jetbrains" ,
288
- Icon : "/icons/intellij.svg" ,
289
- Seconds : usage .UsageJetbrainsSeconds ,
290
- },
291
- {
292
- TemplateIDs : usage .TemplateIDs ,
293
- Type : codersdk .TemplateAppsTypeBuiltin ,
294
- DisplayName : "Web Terminal" ,
295
- Slug : "reconnecting-pty" ,
296
- Icon : "/icons/terminal.svg" ,
297
- Seconds : usage .UsageReconnectingPtySeconds ,
298
- },
299
- {
300
- TemplateIDs : usage .TemplateIDs ,
301
- Type : codersdk .TemplateAppsTypeBuiltin ,
302
- DisplayName : "SSH" ,
303
- Slug : "ssh" ,
304
- Icon : "/icons/terminal.svg" ,
305
- Seconds : usage .UsageSshSeconds ,
306
- },
307
- },
274
+ AppsUsage : convertTemplateInsightsBuiltinApps (usage ),
308
275
},
309
276
IntervalReports : intervalReports ,
310
277
}
311
278
httpapi .Write (ctx , rw , http .StatusOK , resp )
312
279
}
313
280
281
+ // convertTemplateInsightsBuiltinApps builds the list of builtin apps from the
282
+ // database row, these are apps that are implicitly a part of all templates.
283
+ func convertTemplateInsightsBuiltinApps (usage database.GetTemplateInsightsRow ) []codersdk.TemplateAppUsage {
284
+ return []codersdk.TemplateAppUsage {
285
+ {
286
+ TemplateIDs : usage .TemplateIDs ,
287
+ Type : codersdk .TemplateAppsTypeBuiltin ,
288
+ DisplayName : "Visual Studio Code" ,
289
+ Slug : "vscode" ,
290
+ Icon : "/icons/code.svg" ,
291
+ Seconds : usage .UsageVscodeSeconds ,
292
+ },
293
+ {
294
+ TemplateIDs : usage .TemplateIDs ,
295
+ Type : codersdk .TemplateAppsTypeBuiltin ,
296
+ DisplayName : "JetBrains" ,
297
+ Slug : "jetbrains" ,
298
+ Icon : "/icons/intellij.svg" ,
299
+ Seconds : usage .UsageJetbrainsSeconds ,
300
+ },
301
+ {
302
+ TemplateIDs : usage .TemplateIDs ,
303
+ Type : codersdk .TemplateAppsTypeBuiltin ,
304
+ DisplayName : "Web Terminal" ,
305
+ Slug : "reconnecting-pty" ,
306
+ Icon : "/icons/terminal.svg" ,
307
+ Seconds : usage .UsageReconnectingPtySeconds ,
308
+ },
309
+ {
310
+ TemplateIDs : usage .TemplateIDs ,
311
+ Type : codersdk .TemplateAppsTypeBuiltin ,
312
+ DisplayName : "SSH" ,
313
+ Slug : "ssh" ,
314
+ Icon : "/icons/terminal.svg" ,
315
+ Seconds : usage .UsageSshSeconds ,
316
+ },
317
+ }
318
+ }
319
+
314
320
// parseInsightsStartAndEndTime parses the start and end time query parameters
315
321
// and returns the parsed values. The client provided timezone must be preserved
316
322
// when parsing the time. Verification is performed so that the start and end
0 commit comments