use anyhow::Result;
use crate::{db, memory::preference};
use super::shared::resolve_cwd_project;
use crate::cli::types::PreferenceAction;
pub(in crate::cli) fn run_preferences(action: PreferenceAction) -> Result<()> {
let conn = db::open_db()?;
let (_, default_project) = resolve_cwd_project();
match action {
PreferenceAction::List => preference::list_preferences(&conn, &default_project)?,
PreferenceAction::Add {
project,
global,
text,
} => {
let proj = project.unwrap_or(default_project);
let id = preference::add_preference(&conn, &proj, &text, global)?;
let scope_label = if global { "global" } else { "project" };
println!(
"Preference added (id={}, scope={}) for project '{}'",
id, scope_label, proj
);
}
PreferenceAction::Remove { id } => {
if preference::remove_preference(&conn, id)? {
println!("Preference {} archived.", id);
} else {
println!("Preference {} not found or not a preference type.", id);
}
}
}
Ok(())
}