use xdg; use rusqlite::Result; mod database; mod cli; use cli::{Cli, Commands}; use crate::database::Database; fn main() -> Result<()> { let cli = Cli::new(); match cli.action { Commands::Init => { if let Some(datapath) = cli.database_path { Database::init_database(&datapath)?; } else { let datapath = xdg::BaseDirectories::with_prefix("debt") .expect("xdg file setup failed") .place_data_file("cache.db") .expect("xdg directory creaton failed"); Database::init_database(&datapath)?; } }, Commands::Register {person, amount, note, payment} => { let register = Database::new(person, amount, note, !payment); if let Some(datapath) = cli.database_path { register.add_register(&datapath)?; } else { panic!("database file not found"); } }, Commands::View {history, filter, total} => { println!("{}", filter.unwrap_or(String::from("None"))); println!("{}", history); println!("{}", total); }, Commands::Add {name} => { let register = Database::new(name, 0, None, false); if let Some(datapath) = cli.database_path { register.add_agent(&datapath)?; } else { panic!("database file not found"); } } }; Ok(()) }