|
|
@@ -8,6 +8,7 @@ import (
|
|
|
func init() {
|
|
|
bus.AddHandler("sql", GetSystemStats)
|
|
|
bus.AddHandler("sql", GetDataSourceStats)
|
|
|
+ bus.AddHandler("sql", GetAdminStats)
|
|
|
}
|
|
|
|
|
|
func GetDataSourceStats(query *m.GetDataSourceStatsQuery) error {
|
|
|
@@ -50,3 +51,54 @@ func GetSystemStats(query *m.GetSystemStatsQuery) error {
|
|
|
query.Result = &stats
|
|
|
return err
|
|
|
}
|
|
|
+
|
|
|
+func GetAdminStats(query *m.GetAdminStatsQuery) error {
|
|
|
+ var rawSql = `SELECT
|
|
|
+ (
|
|
|
+ SELECT COUNT(*)
|
|
|
+ FROM ` + dialect.Quote("user") + `
|
|
|
+ ) AS user_count,
|
|
|
+ (
|
|
|
+ SELECT COUNT(*)
|
|
|
+ FROM ` + dialect.Quote("org") + `
|
|
|
+ ) AS org_count,
|
|
|
+ (
|
|
|
+ SELECT COUNT(*)
|
|
|
+ FROM ` + dialect.Quote("dashboard") + `
|
|
|
+ ) AS dashboard_count,
|
|
|
+ (
|
|
|
+ SELECT COUNT(*)
|
|
|
+ FROM ` + dialect.Quote("dashboard_snapshot") + `
|
|
|
+ ) AS db_snapshot_count,
|
|
|
+ (
|
|
|
+ SELECT COUNT(*)
|
|
|
+ FROM ` + dialect.Quote("dashboard_tag") + `
|
|
|
+ ) AS db_tag_count,
|
|
|
+ (
|
|
|
+ SELECT COUNT(*)
|
|
|
+ FROM ` + dialect.Quote("data_source") + `
|
|
|
+ ) AS data_source_count,
|
|
|
+ (
|
|
|
+ SELECT COUNT(*)
|
|
|
+ FROM ` + dialect.Quote("playlist") + `
|
|
|
+ ) AS playlist_count,
|
|
|
+ (
|
|
|
+ SELECT COUNT (DISTINCT ` + dialect.Quote("dashboard_id") + ` )
|
|
|
+ FROM ` + dialect.Quote("star") + `
|
|
|
+ ) AS starred_db_count,
|
|
|
+ (
|
|
|
+ SELECT COUNT(*)
|
|
|
+ FROM ` + dialect.Quote("user") + `
|
|
|
+ WHERE ` + dialect.Quote("is_admin") + ` = 1
|
|
|
+ ) AS grafana_admin_count
|
|
|
+ `
|
|
|
+
|
|
|
+ var stats m.AdminStats
|
|
|
+ _, err := x.Sql(rawSql).Get(&stats)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ query.Result = &stats
|
|
|
+ return err
|
|
|
+}
|