1
0
2025-07-05 01:36:12 +02:00

124 lines
2.5 KiB
SQL

select
'shell' as component
, 'Mobilizon statistics' as title
, 'chart-dots' as icon
, JSON('{"title":"Instances list","link":"/", "icon":"social"}') as menu_item
, JSON('{"link":"mailto:contact@kaihuri.org?subject=report%20an%20instance","title":"Report an instance","icon":"forms"}') as menu_item
, '' as footer
;
select
'big_number' as component
, 4 as columns
;
-- total Instances
select
'Instances' as title
, (select count(*) from instances where failure>=0 and failure<5) as value
;
-- total Users
select
'Users' as title
, (select sum(users) from ( SELECT
instance_id,
users,
MAX(insertedAt)
FROM stats
GROUP BY instance_id)) as value
;
-- total Groups
select
'Groups' as title
, (select sum(local_groups) from ( SELECT
instance_id,
local_groups,
MAX(insertedAt)
FROM stats
GROUP BY instance_id)) as value
;
-- total Events
select
'Events' as title
, (select sum(local_events) from ( SELECT
instance_id,
local_events,
MAX(insertedAt)
FROM stats
GROUP BY instance_id)) as value
;
----- over time ----
select
'title' as component
, 'Over time' as contents
;
-- instances
select
'chart' as component
, 'Instances' as title
, 'area' as type
, 'blue-lt' as color
--, 5 as marker
, TRUE as time
;
SELECT
count(instance_id) as y
, insertedAt as x
, insertedAt / (3600*24) as j
FROM stats
GROUP BY j
order by j
;
-- users
select
'chart' as component
, 'Users' as title
, 'area' as type
, 'blue-lt' as color
--, 5 as marker
, TRUE as time
;
SELECT
sum(users) as y
, insertedAt as x
, insertedAt / (3600*24) as j
FROM stats
GROUP BY j
order by j
;
-- events
select
'chart' as component
, 'Events' as title
, 'area' as type
, 'blue-lt' as color
--, 5 as marker
, TRUE as time
;
SELECT
sum(local_events) as y
, insertedAt as x
, insertedAt / (3600*24) as j
FROM stats
GROUP BY j
order by j
;
-- groups
select
'chart' as component
, 'Groups' as title
, 'area' as type
, 'blue-lt' as color
--, 5 as marker
, TRUE as time
;
SELECT
sum(local_groups) as y
, insertedAt as x
, insertedAt / (3600*24) as j
FROM stats
GROUP BY j
order by j
;