use std::{fs, path};
use crate::sql::{
CREATE_PROJECT_TABLE_SQL, CREATE_PROJECT_TABLE_TRIGGER_SQL, CREATE_TASK_TABLE_SQL,
CREATE_TASK_TABLE_TRIGGER_SQL,
};
use rusqlite::Connection;
use crate::config::get_config;
pub fn get_db() -> anyhow::Result<Connection> {
let c = get_config();
if let Some(parent) = path::Path::new(&c.db_file).parent() {
fs::create_dir_all(parent)?;
}
let conn = Connection::open(c.db_file)?;
return Ok(conn);
}
pub fn init_db() -> anyhow::Result<bool> {
let conn = get_db()?;
conn.execute(CREATE_PROJECT_TABLE_SQL, ())?;
conn.execute(CREATE_PROJECT_TABLE_TRIGGER_SQL, ())?;
conn.execute(CREATE_TASK_TABLE_SQL, ())?;
conn.execute(CREATE_TASK_TABLE_TRIGGER_SQL, ())?;
Ok(true)
}
#[cfg(test)]
mod test {
use super::*;
}