use std::path::PathBuf;
use dirs::home_dir;
use rusqlite::{Connection, Result};
use crate::db::migrate_schema;
pub fn connect(alias: &str, with_migration: bool) -> Result<(Connection, bool)> {
let home = home_dir().ok_or_else(|| {
rusqlite::Error::InvalidPath("HOME directory not found".into())
})?;
let db_path: PathBuf = home.join(".this").join("me").join(alias).join(format!("{}.db", alias));
let existed = db_path.exists();
std::fs::create_dir_all(db_path.parent().unwrap())
.map_err(|e| rusqlite::Error::InvalidPath(PathBuf::from(format!("Failed to create dir: {}", e))))?;
let conn = Connection::open(&db_path)?;
if with_migration && !existed {
migrate_schema::migrate_schema(&conn)?;
}
Ok((conn, existed))
}