2022-03-16 15:54:34 +00:00
|
|
|
package database
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
|
|
|
|
|
2022-08-23 14:24:55 +02:00
|
|
|
"github.com/grafana/grafana/pkg/services/serviceaccounts"
|
2022-03-16 15:54:34 +00:00
|
|
|
"github.com/grafana/grafana/pkg/services/sqlstore"
|
|
|
|
|
)
|
|
|
|
|
|
2022-08-23 14:24:55 +02:00
|
|
|
func (s *ServiceAccountsStoreImpl) GetUsageMetrics(ctx context.Context) (*serviceaccounts.Stats, error) {
|
2022-10-14 15:33:06 -04:00
|
|
|
dialect := s.sqlStore.GetDialect()
|
2022-03-16 15:54:34 +00:00
|
|
|
|
|
|
|
|
sb := &sqlstore.SQLBuilder{}
|
|
|
|
|
sb.Write("SELECT ")
|
|
|
|
|
sb.Write(`(SELECT COUNT(*) FROM ` + dialect.Quote("user") +
|
|
|
|
|
` WHERE is_service_account = ` + dialect.BooleanStr(true) + `) AS serviceaccounts,`)
|
|
|
|
|
sb.Write(`(SELECT COUNT(*) FROM ` + dialect.Quote("api_key") +
|
2022-08-23 14:24:55 +02:00
|
|
|
` WHERE service_account_id IS NOT NULL ) AS serviceaccount_tokens`)
|
2022-03-16 15:54:34 +00:00
|
|
|
|
2022-08-23 14:24:55 +02:00
|
|
|
var sqlStats serviceaccounts.Stats
|
2022-03-16 15:54:34 +00:00
|
|
|
if err := s.sqlStore.WithDbSession(ctx, func(sess *sqlstore.DBSession) error {
|
|
|
|
|
_, err := sess.SQL(sb.GetSQLString(), sb.GetParams()...).Get(&sqlStats)
|
|
|
|
|
return err
|
|
|
|
|
}); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-23 14:24:55 +02:00
|
|
|
return &sqlStats, nil
|
2022-03-16 15:54:34 +00:00
|
|
|
}
|