v0.4.8 - Implement web server functionality for embedded admin interface - serve HTML/CSS/JS from /api/ endpoint with proper MIME types, CORS headers, and performance optimizations
This commit is contained in:
@@ -297,6 +297,65 @@ WHERE event_type = 'created'\n\
|
||||
AND subscription_id NOT IN (\n\
|
||||
SELECT subscription_id FROM subscription_events\n\
|
||||
WHERE event_type IN ('closed', 'expired', 'disconnected')\n\
|
||||
);";
|
||||
);\n\
|
||||
\n\
|
||||
-- Database Statistics Views for Admin API\n\
|
||||
-- Event kinds distribution view\n\
|
||||
CREATE VIEW event_kinds_view AS\n\
|
||||
SELECT\n\
|
||||
kind,\n\
|
||||
COUNT(*) as count,\n\
|
||||
ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM events), 2) as percentage\n\
|
||||
FROM events\n\
|
||||
GROUP BY kind\n\
|
||||
ORDER BY count DESC;\n\
|
||||
\n\
|
||||
-- Top pubkeys by event count view\n\
|
||||
CREATE VIEW top_pubkeys_view AS\n\
|
||||
SELECT\n\
|
||||
pubkey,\n\
|
||||
COUNT(*) as event_count,\n\
|
||||
ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM events), 2) as percentage\n\
|
||||
FROM events\n\
|
||||
GROUP BY pubkey\n\
|
||||
ORDER BY event_count DESC\n\
|
||||
LIMIT 10;\n\
|
||||
\n\
|
||||
-- Time-based statistics view\n\
|
||||
CREATE VIEW time_stats_view AS\n\
|
||||
SELECT\n\
|
||||
'total' as period,\n\
|
||||
COUNT(*) as total_events,\n\
|
||||
COUNT(DISTINCT pubkey) as unique_pubkeys,\n\
|
||||
MIN(created_at) as oldest_event,\n\
|
||||
MAX(created_at) as newest_event\n\
|
||||
FROM events\n\
|
||||
UNION ALL\n\
|
||||
SELECT\n\
|
||||
'24h' as period,\n\
|
||||
COUNT(*) as total_events,\n\
|
||||
COUNT(DISTINCT pubkey) as unique_pubkeys,\n\
|
||||
MIN(created_at) as oldest_event,\n\
|
||||
MAX(created_at) as newest_event\n\
|
||||
FROM events\n\
|
||||
WHERE created_at >= (strftime('%s', 'now') - 86400)\n\
|
||||
UNION ALL\n\
|
||||
SELECT\n\
|
||||
'7d' as period,\n\
|
||||
COUNT(*) as total_events,\n\
|
||||
COUNT(DISTINCT pubkey) as unique_pubkeys,\n\
|
||||
MIN(created_at) as oldest_event,\n\
|
||||
MAX(created_at) as newest_event\n\
|
||||
FROM events\n\
|
||||
WHERE created_at >= (strftime('%s', 'now') - 604800)\n\
|
||||
UNION ALL\n\
|
||||
SELECT\n\
|
||||
'30d' as period,\n\
|
||||
COUNT(*) as total_events,\n\
|
||||
COUNT(DISTINCT pubkey) as unique_pubkeys,\n\
|
||||
MIN(created_at) as oldest_event,\n\
|
||||
MAX(created_at) as newest_event\n\
|
||||
FROM events\n\
|
||||
WHERE created_at >= (strftime('%s', 'now') - 2592000);";
|
||||
|
||||
#endif /* SQL_SCHEMA_H */
|
||||
Reference in New Issue
Block a user