Set pragmas and migrate db

This commit is contained in:
Joscha 2022-06-17 18:22:22 +02:00
parent 74a80f6ec4
commit 54fc4b59ce
3 changed files with 52 additions and 2 deletions

View file

@ -0,0 +1,29 @@
use rusqlite::{Connection, Transaction};
pub fn migrate(conn: &mut Connection) -> rusqlite::Result<()> {
let mut tx = conn.transaction()?;
let user_version: usize =
tx.query_row("SELECT * FROM pragma_user_version", [], |r| r.get(0))?;
let total = MIGRATIONS.len();
for (i, migration) in MIGRATIONS.iter().enumerate().skip(user_version) {
println!("Migrating vault from {} to {} (out of {})", i, i + 1, total);
migration(&mut tx)?;
}
tx.pragma_update(None, "user_version", total)?;
tx.commit()
}
const MIGRATIONS: [fn(&mut Transaction) -> rusqlite::Result<()>; 1] = [m1];
fn m1(tx: &mut Transaction) -> rusqlite::Result<()> {
tx.execute_batch(
"
CREATE TABLE test (
foo TEXT
);
",
)
}