use crate::config::Config;
use crate::db::log;
use crate::errors::AppResult;
use crate::cli::parser::Cli;
use crate::db::initialize::init_db;
use crate::ui::messages::{info, success, warning};
use rusqlite::Connection;
pub fn handle(cli: &Cli) -> AppResult<()> {
if let Some(custom) = &cli.db {
Config::init_all(Some(custom.clone()), cli.test)?;
} else {
Config::init_all(None, cli.test)?;
}
let config_path = Config::config_file();
let cfg = Config::load();
let db_path = cfg.database.clone();
info("Initializing rTimelogger…");
info(format!("Config file : {}", config_path.display()));
info(format!("Database : {}", &db_path));
let conn = Connection::open(&db_path)?;
init_db(&conn)?;
success(format!("Database initialized at {}", &db_path));
if let Err(e) = log::ttlog(
&conn,
"init",
"Database initialized",
&format!("Database initialized at {}", &db_path),
) {
warning(format!("Failed to write internal log: {}", e));
}
success("rTimelogger initialization completed!");
Ok(())
}