From 7b1cbcb0f05ee2737e389f31ce740ec95a89add2 Mon Sep 17 00:00:00 2001 From: candifloss Date: Wed, 22 Apr 2026 16:32:07 +0530 Subject: [PATCH] Generalized function name --- src/db.rs | 21 ++++++++++----------- src/routes.rs | 7 ++++--- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/db.rs b/src/db.rs index 858a186..46569d0 100644 --- a/src/db.rs +++ b/src/db.rs @@ -1,8 +1,7 @@ +use rusqlite::types::Value; use rusqlite::{Connection, Result}; use std::sync::Mutex; -use rusqlite::types::Value; - pub struct Db { conn: Mutex, } @@ -14,10 +13,13 @@ impl Db { }) } - pub fn get_users(&self) -> Result<(Vec, Vec>)> { + pub fn get_table(&self, table: &str) -> Result<(Vec, Vec>)> { let conn = self.conn.lock().unwrap(); - let mut stmt = conn.prepare("SELECT * FROM users")?; + // WARNING: table name is interpolated → trust only internal input + let query = format!("SELECT * FROM {table}"); + + let mut stmt = conn.prepare(&query)?; let columns = stmt .column_names() @@ -28,7 +30,7 @@ impl Db { let col_count = stmt.column_count(); let rows_iter = stmt.query_map([], move |row| { - let mut r = Vec::new(); + let mut r = Vec::with_capacity(col_count); for i in 0..col_count { let val: Value = row.get(i)?; @@ -37,8 +39,8 @@ impl Db { Value::Null => "".to_string(), Value::Integer(i) => i.to_string(), Value::Real(f) => f.to_string(), - Value::Text(t) => t, // already String - Value::Blob(_) => "".to_string(), + Value::Text(t) => t, + Value::Blob(b) => format!("", b.len()), }; r.push(s); @@ -47,10 +49,7 @@ impl Db { Ok(r) })?; - let mut rows = Vec::new(); - for r in rows_iter { - rows.push(r?); - } + let rows = rows_iter.collect::>>()?; Ok((columns, rows)) } diff --git a/src/routes.rs b/src/routes.rs index d8aa5ac..02ed76b 100644 --- a/src/routes.rs +++ b/src/routes.rs @@ -1,4 +1,4 @@ -use askama::Template; // REQUIRED +use askama::Template; use axum::{extract::State, response::Html}; use std::sync::Arc; @@ -14,10 +14,11 @@ pub struct TableTemplate { } pub async fn index(State(db): State>) -> Html { - let (columns, rows) = db.get_users().unwrap(); + let table_name = "users"; + let (columns, rows) = db.get_table(table_name).unwrap(); let tmpl = TableTemplate { - table_name: "users".into(), + table_name: table_name.into(), columns, rows, };