|
|
|
@ -7,7 +7,6 @@ import ( |
|
|
|
|
"time" |
|
|
|
|
|
|
|
|
|
"github.com/grafana/grafana/pkg/infra/db" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/dashboards/dashboardaccess" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/libraryelements/model" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/org" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/sqlstore/migrator" |
|
|
|
@ -93,27 +92,6 @@ func (ss *sqlStatsService) GetSystemStats(ctx context.Context, query *stats.GetS |
|
|
|
|
sb.Write(`(SELECT MAX(LENGTH(data)) FROM `+dialect.Quote("dashboard")+` WHERE is_folder = ?) AS dashboard_bytes_max,`, dialect.BooleanStr(false)) |
|
|
|
|
sb.Write(`(SELECT COUNT(id) FROM `+dialect.Quote("dashboard")+` WHERE is_folder = ?) AS folders,`, dialect.BooleanStr(true)) |
|
|
|
|
|
|
|
|
|
sb.Write(`( |
|
|
|
|
SELECT COUNT(acl.id) |
|
|
|
|
FROM `+dialect.Quote("dashboard_acl")+` AS acl |
|
|
|
|
INNER JOIN `+dialect.Quote("dashboard")+` AS d |
|
|
|
|
ON d.id = acl.dashboard_id |
|
|
|
|
WHERE d.is_folder = ? |
|
|
|
|
) AS dashboard_permissions,`, dialect.BooleanStr(false)) |
|
|
|
|
|
|
|
|
|
sb.Write(`( |
|
|
|
|
SELECT COUNT(acl.id) |
|
|
|
|
FROM `+dialect.Quote("dashboard_acl")+` AS acl |
|
|
|
|
INNER JOIN `+dialect.Quote("dashboard")+` AS d |
|
|
|
|
ON d.id = acl.dashboard_id |
|
|
|
|
WHERE d.is_folder = ? |
|
|
|
|
) AS folder_permissions,`, dialect.BooleanStr(true)) |
|
|
|
|
|
|
|
|
|
sb.Write(viewersPermissionsCounterSQL(ss.db, "dashboards_viewers_can_edit", false, dashboardaccess.PERMISSION_EDIT)) |
|
|
|
|
sb.Write(viewersPermissionsCounterSQL(ss.db, "dashboards_viewers_can_admin", false, dashboardaccess.PERMISSION_ADMIN)) |
|
|
|
|
sb.Write(viewersPermissionsCounterSQL(ss.db, "folders_viewers_can_edit", true, dashboardaccess.PERMISSION_EDIT)) |
|
|
|
|
sb.Write(viewersPermissionsCounterSQL(ss.db, "folders_viewers_can_admin", true, dashboardaccess.PERMISSION_ADMIN)) |
|
|
|
|
|
|
|
|
|
sb.Write(`(SELECT COUNT(id) FROM ` + dialect.Quote("dashboard_provisioning") + `) AS provisioned_dashboards,`) |
|
|
|
|
sb.Write(`(SELECT COUNT(id) FROM ` + dialect.Quote("dashboard_snapshot") + `) AS snapshots,`) |
|
|
|
|
sb.Write(`(SELECT COUNT(id) FROM ` + dialect.Quote("dashboard_version") + `) AS dashboard_versions,`) |
|
|
|
@ -169,19 +147,6 @@ func (ss *sqlStatsService) roleCounterSQL(ctx context.Context) string { |
|
|
|
|
return sqlQuery |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func viewersPermissionsCounterSQL(db db.DB, statName string, isFolder bool, permission dashboardaccess.PermissionType) string { |
|
|
|
|
dialect := db.GetDialect() |
|
|
|
|
return `( |
|
|
|
|
SELECT COUNT(*) |
|
|
|
|
FROM ` + dialect.Quote("dashboard_acl") + ` AS acl |
|
|
|
|
INNER JOIN ` + dialect.Quote("dashboard") + ` AS d |
|
|
|
|
ON d.id = acl.dashboard_id |
|
|
|
|
WHERE acl.role = '` + string(org.RoleViewer) + `' |
|
|
|
|
AND d.is_folder = ` + dialect.BooleanStr(isFolder) + ` |
|
|
|
|
AND acl.permission = ` + strconv.FormatInt(int64(permission), 10) + ` |
|
|
|
|
) AS ` + statName + `, ` |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (ss *sqlStatsService) GetAdminStats(ctx context.Context, query *stats.GetAdminStatsQuery) (result *stats.AdminStats, err error) { |
|
|
|
|
err = ss.db.WithDbSession(ctx, func(dbSession *db.Session) error { |
|
|
|
|
dialect := ss.db.GetDialect() |
|
|
|
|