aboutsummaryrefslogtreecommitdiff
path: root/src/db/mod.rs
blob: 1282f0cdbed8f501f73e2572e165690daf81e42a (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
use anyhow::{Error, Result};
use tokio_rusqlite::Connection;

pub mod categories;
pub mod incomes;
pub mod jobs;
pub mod payments;
pub mod users;
mod utils;

pub async fn init(path: &str) -> Result<Connection> {
    let connection = Connection::open(path).await.map_err(|err| {
        Error::msg(format!("Error opening connection: {err}"))
    })?;

    support_foreign_keys(&connection).await?;

    Ok(connection)
}

async fn support_foreign_keys(conn: &Connection) -> Result<()> {
    Ok(conn
        .call(move |conn| Ok(conn.pragma_update(None, "foreign_keys", "ON")))
        .await??)
}