use crate::cli::cli_beans::new_bean;
use super::menu;
use super::start_roast;
use anyhow::Result;
use freeroast::{get_all_beans, get_all_roasts};
use rusqlite::Connection;
use std::io::{stdin, stdout, Write};
pub fn start_cli(conn: &mut Connection) -> Result<()> {
let mut buff = String::new();
loop {
super::menu();
buff.clear();
print!("Enter command: ");
stdout().flush().expect("Problem flushing stdout");
if let Err(e) = stdin().read_line(&mut buff) {
return Err(anyhow::Error::from(e));
}
match buff.trim() {
"add_bean" => {
if let Err(e) = new_bean(&mut stdin(), conn) {
println!("{e}");
}
}
"start_roast" => {
start_roast(conn)?;
}
"exit" => {
println!("Exiting now...");
break;
}
"show_beans" => {
let beans = get_all_beans(conn)?;
println!("{:?}", beans);
}
"show_roasts" => {
let roasts = get_all_roasts(conn)?;
println!("{:?}", roasts);
}
"help" => menu(),
_ => println!("Invalid command"),
}
}
Ok(())
}