pub mod schema;
use rusqlite::Connection;
use std::path::{Path, PathBuf};
pub struct VaultDb {
pub conn: Connection,
#[allow(dead_code)]
pub vault_root: PathBuf,
}
impl VaultDb {
pub fn new(conn: Connection, vault_root: PathBuf) -> Self {
VaultDb { conn, vault_root }
}
}
pub fn init_vault_db(vault_root: &Path) -> Result<VaultDb, Box<dyn std::error::Error>> {
let tomarkdown_dir = vault_root.join(".tomarkdown");
std::fs::create_dir_all(&tomarkdown_dir)?;
let db_path = tomarkdown_dir.join("vault.db");
let conn = Connection::open(&db_path)?;
conn.execute_batch(schema::SCHEMA)?;
Ok(VaultDb::new(conn, vault_root.to_path_buf()))
}