From 18de2714d05c766f1298dfdf988f014d298ccb33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kha=C3=AFs=20COLIN?= Date: Fri, 24 Oct 2025 23:08:23 +0200 Subject: [PATCH] make table strict, fix bug where app crashes on empty db --- foods.db | Bin 12288 -> 8192 bytes src/create_tables.sql | 2 +- src/main.rs | 12 ++++-------- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/foods.db b/foods.db index a769939169bc94dd8d7dd8b4ed5755d245622c3f..c8e49e5ecb512dec93feab9e8697a967629394df 100644 GIT binary patch delta 360 zcmZojXmFSyCB(qQzyQV!P{24*$4G#Ii9xTbke7jhfsyYR1K+WYg%N!9P3Da3;-aFA zErBJ8Nja%$`S~dz%;X&8>KNjx5aQ_MQPAL0P*70FOi}Rk3vqRK4N?dQ^7M5K zid67+jno0l733F{Waj57gt$h8DERq@DENi?_&}uc5_40riSuVC#}}j)#TTa*m1X9o zD@^v{mk|NkQ<7Meo>~GEFIJdb36)4pE-6jSL6Y#|mjT14svx2aa9O$bn2Pr>733F{Waj57afY}?geds=hbZ`k`uKok@)C1Xu?S};#}}j)#TTa*m1X9o zE7ijcgX>jradmSH^$Afh0GU#fSd^Yx0#jZLw;NNrAxL>*a!F}o4l&BXrYGmK=HwSC zaZbL)FDs_Q#TgLf>FXF2so?DzsR8n-CYL5CoHjPBW>n$jwPfJq`NzU%%zu>Eo4=1g zgkO;FI^Qh5G@gHath_IIck?dXSa_3%(Q@*4S!*HQYz84|TSi7sX+wP@1?SQN_sM1Q z3Y>g83}(`%)I2$5vy{ox PreparedStatements { fn check(conn: &Connection) -> rusqlite::Result { - conn.prepare_cached(include_str!("create_tables.sql"))?; conn.prepare_cached(include_str!("increase.sql"))?; conn.prepare_cached(include_str!("decrease.sql"))?; conn.prepare_cached(include_str!("get_food.sql"))?; @@ -91,11 +90,6 @@ impl<'conn> PreparedStatements { Ok(PreparedStatements {}) } - fn create_tables(conn: &'conn Connection) -> CachedStatement<'conn> { - conn.prepare_cached(include_str!("create_tables.sql")) - .expect("cached statement is invalid") - } - fn increase(conn: &'conn Connection) -> CachedStatement<'conn> { conn.prepare_cached(include_str!("increase.sql")) .expect("cached statement is invalid") @@ -149,12 +143,14 @@ async fn main() -> Result<(), std::io::Error> { let db_connecion_str = "./foods.db".to_string(); debug!(db_connecion_str, "opening database"); let conn = Connection::open(db_connecion_str).expect("failed to open database"); - PreparedStatements::check(&conn).expect("failed to prepare sql statements"); - if let Err(e) = PreparedStatements::create_tables(&conn).execute(()) { + + if let Err(e) = conn.execute(include_str!("create_tables.sql"), ()) { error!(?e, "failed to create tables"); panic!("failed to create tables: {:#?}", e); } + PreparedStatements::check(&conn).expect("failed to prepare sql statements"); + let app = Router::new() .route("/", get(root)) .route("/increase/{id}", post(increase))