From b8d65256e1e9ed48ea6032905fef06b3ff5cc899 Mon Sep 17 00:00:00 2001 From: gennyble Date: Fri, 28 Mar 2025 07:33:56 -0500 Subject: add highest five requesters all time --- stats_module/src/lib.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) 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("

In the last fifteen minutes:

");
 	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("

"); - response.body(body.into_bytes()); + body.push_str("

Highest five all time requests:

");
+	body.push_str("  total  | agent\n");
+	for (count, agent) in highest_five {
+		body.push_str(&format!(" {count:<7} | {agent}\n"));
+	}
+	body.push_str("

"); + + response.body(body.into_bytes()); response.into_mod_response(200) } -- cgit 1.4.1-3-g733a5