blob: 210f5e97691a9a95598eb91e651bb1eddf7467f8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
use anyhow::Result;
use rusqlite::Connection;
use rusqlite_migration::{Migrations, M};
pub mod cards;
pub fn init(database: &str) -> Result<Connection> {
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!("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(conn)?;
Ok(())
}
fn set_pragma(conn: &Connection, key: &str, value: &str) -> Result<()> {
Ok(conn.pragma_update(None, key, value)?)
}
|