Skip to content

Commit 7994202

Browse files
committed
feat(coderd): report template app usage insights
Fixes #8658
1 parent 752070b commit 7994202

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
@@ -1917,6 +1917,15 @@ func (*FakeQuerier) GetTailnetClientsForAgent(context.Context, uuid.UUID) ([]dat
19171917
return nil, ErrUnimplemented
19181918
}
19191919

1920+
func (q *FakeQuerier) GetTemplateAppInsights(ctx context.Context, arg database.GetTemplateAppInsightsParams) ([]database.GetTemplateAppInsightsRow, error) {
1921+
err := validateDatabaseType(arg)
1922+
if err != nil {
1923+
return nil, err
1924+
}
1925+
1926+
panic("not implemented")
1927+
}
1928+
19201929
func (q *FakeQuerier) GetTemplateAverageBuildTime(ctx context.Context, arg database.GetTemplateAverageBuildTimeParams) (database.GetTemplateAverageBuildTimeRow, error) {
19211930
if err := validateDatabaseType(arg); err != nil {
19221931
return database.GetTemplateAverageBuildTimeRow{}, err
@@ -2152,9 +2161,14 @@ func (q *FakeQuerier) GetTemplateInsights(_ context.Context, arg database.GetTem
21522161
slices.SortFunc(templateIDs, func(a, b uuid.UUID) int {
21532162
return slice.Ascending(a.String(), b.String())
21542163
})
2164+
activeUserIDs := make([]uuid.UUID, 0, len(appUsageIntervalsByUser))
2165+
for userID := range appUsageIntervalsByUser {
2166+
activeUserIDs = append(activeUserIDs, userID)
2167+
}
2168+
21552169
result := database.GetTemplateInsightsRow{
2156-
TemplateIDs: templateIDs,
2157-
ActiveUsers: int64(len(appUsageIntervalsByUser)),
2170+
TemplateIDs: templateIDs,
2171+
ActiveUserIDs: activeUserIDs,
21582172
}
21592173
for _, intervals := range appUsageIntervalsByUser {
21602174
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)