diff options
author | gennyble <gen@nyble.dev> | 2025-03-28 07:33:56 -0500 |
---|---|---|
committer | gennyble <gen@nyble.dev> | 2025-03-28 07:33:56 -0500 |
commit | b8d65256e1e9ed48ea6032905fef06b3ff5cc899 (patch) | |
tree | d4cb5c5b3139d487bf0c6424ef5b2b766506883c /stats_module | |
parent | 67e333107e4ea69180a9a2ec6f38fdace2082698 (diff) | |
download | corgi-b8d65256e1e9ed48ea6032905fef06b3ff5cc899.tar.gz corgi-b8d65256e1e9ed48ea6032905fef06b3ff5cc899.zip |
add highest five requesters all time
Diffstat (limited to 'stats_module')
-rw-r--r-- | stats_module/src/lib.rs | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/stats_module/src/lib.rs b/stats_module/src/lib.rs index a56d22d..5f026fb 100644 --- a/stats_module/src/lib.rs +++ b/stats_module/src/lib.rs @@ -31,6 +31,17 @@ extern "C" fn cgi_handle(req: *const ModuleRequest) -> *const ModuleResponse { agents.sort_by(|a, b| a.0.cmp(&b.0).reverse()); + let highest_five_query = "SELECT count(requests.id) AS request_count, agents.agent FROM requests \ + INNER JOIN agents ON requests.agent_id = agents.id \ + GROUP BY requests.agent_id \ + ORDER BY request_count DESC LIMIT 5;"; + let mut prepared = db.prepare(highest_five_query).unwrap(); + let highest_five: Vec<(usize, String)> = prepared + .query_map(params![], |row| Ok((row.get(0)?, row.get(1)?))) + .unwrap() + .map(|r| r.unwrap()) + .collect(); + body.push_str("<p>In the last fifteen minutes:<br/><code><pre>"); body.push_str("total | req/m | agent\n"); for (count, agent) in &agents { @@ -40,8 +51,15 @@ extern "C" fn cgi_handle(req: *const ModuleRequest) -> *const ModuleResponse { )); } body.push_str("</pre></code></p>"); - response.body(body.into_bytes()); + body.push_str("<p>Highest five all time requests:<br/><code><pre>"); + body.push_str(" total | agent\n"); + for (count, agent) in highest_five { + body.push_str(&format!(" {count:<7} | {agent}\n")); + } + body.push_str("</pre></code></p>"); + + response.body(body.into_bytes()); response.into_mod_response(200) } |