tam 1.0.12

A tasks manager cli tool
use crate::{
    model::Task,
    print_info, print_success,
    services::{project, task},
};

pub fn add(title: String) -> anyhow::Result<bool> {
    task::add(title.clone(), None)?;
    print_success!("Task '{}' added successfully.", title);
    Ok(true)
}

pub fn list() -> anyhow::Result<bool> {
    let project = project::get_current_project()?;
    if project.id.is_none() {
        anyhow::bail!("No current project set. Use `tam project use <name>` to set a project.");
    }
    let project_id = project.id.unwrap();
    let tasks = task::list(project_id)?;
    if tasks.is_empty() {
        print_info!("No tasks found. Use `tam task add` to add a task.");
    } else {
        Task::print(&tasks);
    }
    Ok(true)
}

pub fn delete(id: String) -> anyhow::Result<bool> {
    task::delete(id.clone())?;
    print_success!("Task '{}' deleted successfully.", id);
    Ok(true)
}
pub fn start(id: String) -> anyhow::Result<bool> {
    task::start(id.clone())?;
    print_success!("Task '{}' started successfully.", id);
    Ok(true)
}
pub fn done(id: String) -> anyhow::Result<bool> {
    task::done(id.clone())?;
    print_success!("Task '{}' marked as done successfully.", id);
    Ok(true)
}
pub fn edit(id: String, title: String) -> anyhow::Result<bool> {
    task::edit(id.clone(), title.clone())?;
    print_success!("Task '{}' updated successfully.", id);
    Ok(true)
}