From b324803fe11b52b28ac2dc459504f904a48a79d4 Mon Sep 17 00:00:00 2001 From: Joris Date: Fri, 7 Feb 2025 11:45:22 +0100 Subject: Use strict tables --- src/db/mod.rs | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'src/db/mod.rs') diff --git a/src/db/mod.rs b/src/db/mod.rs index 54bf90f..fb9f823 100644 --- a/src/db/mod.rs +++ b/src/db/mod.rs @@ -6,11 +6,23 @@ pub mod cards; pub fn init(database: String) -> Result { let mut conn = Connection::open(database)?; + apply_migrations(&mut conn)?; + set_pragma(&conn, "foreign_keys", "ON")?; + set_pragma(&conn, "journal_mode", "wal")?; + Ok(conn) +} + +fn apply_migrations(conn: &mut Connection) -> Result<()> { let migrations = Migrations::new(vec![ - M::up(include_str!("sql/1-init.sql")), - M::up(include_str!("sql/2-primary-key-question-responses.sql")), - M::up(include_str!("sql/3-drop-deck-read.sql")), + M::up(include_str!("migrations/01-init.sql")), + M::up(include_str!("migrations/02-primary-key-question-responses.sql")), + M::up(include_str!("migrations/03-drop-deck-read.sql")), + M::up(include_str!("migrations/04-strict-tables.sql")), ]); - migrations.to_latest(&mut conn)?; - Ok(conn) + migrations.to_latest(conn)?; + Ok(()) +} + +fn set_pragma(conn: &Connection, key: &str, value: &str) -> Result<()> { + Ok(conn.pragma_update(None, key, value)?) } -- cgit v1.2.3