Skip to content

Commit cece437

Browse files
committed
feat(coderd): report template app usage insights
Fixes #8658
1 parent 88de63f commit cece437

File tree

14 files changed

+447
-99
lines changed

14 files changed

+447
-99
lines changed

coderd/apidoc/docs.go

+4-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/apidoc/swagger.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/dbauthz/dbauthz.go

+19
Original file line numberDiff line numberDiff line change
@@ -1173,6 +1173,25 @@ func (q *querier) GetTailnetClientsForAgent(ctx context.Context, agentID uuid.UU
11731173
return q.db.GetTailnetClientsForAgent(ctx, agentID)
11741174
}
11751175

1176+
func (q *querier) GetTemplateAppInsights(ctx context.Context, arg database.GetTemplateAppInsightsParams) ([]database.GetTemplateAppInsightsRow, error) {
1177+
for _, templateID := range arg.TemplateIDs {
1178+
template, err := q.db.GetTemplateByID(ctx, templateID)
1179+
if err != nil {
1180+
return nil, err
1181+
}
1182+
1183+
if err := q.authorizeContext(ctx, rbac.ActionUpdate, template); err != nil {
1184+
return nil, err
1185+
}
1186+
}
1187+
if len(arg.TemplateIDs) == 0 {
1188+
if err := q.authorizeContext(ctx, rbac.ActionUpdate, rbac.ResourceTemplate.All()); err != nil {
1189+
return nil, err
1190+
}
1191+
}
1192+
return q.db.GetTemplateAppInsights(ctx, arg)
1193+
}
1194+
11761195
// Only used by metrics cache.
11771196
func (q *querier) GetTemplateAverageBuildTime(ctx context.Context, arg database.GetTemplateAverageBuildTimeParams) (database.GetTemplateAverageBuildTimeRow, error) {
11781197
if err := q.authorizeContext(ctx, rbac.ActionRead, rbac.ResourceSystem); err != nil {

coderd/database/dbfake/dbfake.go

+16-2
Original file line numberDiff line numberDiff line change
@@ -1966,6 +1966,15 @@ func (*FakeQuerier) GetTailnetClientsForAgent(context.Context, uuid.UUID) ([]dat
19661966
return nil, ErrUnimplemented
19671967
}
19681968

1969+
func (q *FakeQuerier) GetTemplateAppInsights(ctx context.Context, arg database.GetTemplateAppInsightsParams) ([]database.GetTemplateAppInsightsRow, error) {
1970+
err := validateDatabaseType(arg)
1971+
if err != nil {
1972+
return nil, err
1973+
}
1974+
1975+
panic("not implemented")
1976+
}
1977+
19691978
func (q *FakeQuerier) GetTemplateAverageBuildTime(ctx context.Context, arg database.GetTemplateAverageBuildTimeParams) (database.GetTemplateAverageBuildTimeRow, error) {
19701979
if err := validateDatabaseType(arg); err != nil {
19711980
return database.GetTemplateAverageBuildTimeRow{}, err
@@ -2201,9 +2210,14 @@ func (q *FakeQuerier) GetTemplateInsights(_ context.Context, arg database.GetTem
22012210
slices.SortFunc(templateIDs, func(a, b uuid.UUID) int {
22022211
return slice.Ascending(a.String(), b.String())
22032212
})
2213+
activeUserIDs := make([]uuid.UUID, 0, len(appUsageIntervalsByUser))
2214+
for userID := range appUsageIntervalsByUser {
2215+
activeUserIDs = append(activeUserIDs, userID)
2216+
}
2217+
22042218
result := database.GetTemplateInsightsRow{
2205-
TemplateIDs: templateIDs,
2206-
ActiveUsers: int64(len(appUsageIntervalsByUser)),
2219+
TemplateIDs: templateIDs,
2220+
ActiveUserIDs: activeUserIDs,
22072221
}
22082222
for _, intervals := range appUsageIntervalsByUser {
22092223
for _, interval := range intervals {

coderd/database/dbmetrics/dbmetrics.go

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/dbmock/dbmock.go

+15
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/querier.go

+6-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)