sara-tasks 0.9.0

Sara — folder-aware task manager
use anyhow::Result;
use rusqlite::Connection;

use crate::infrastructure::config::Config;
use crate::infrastructure::db;

pub fn run_chain(conn: &Connection, cfg: &Config, ids: &[String]) -> Result<()> {
    anyhow::ensure!(ids.len() >= 2, "dep chain requires at least 2 task ids");

    for pair in ids.windows(2) {
        let task = db::resolve_task(conn, &pair[0])?;
        let dep = db::resolve_task(conn, &pair[1])?;

        db::add_dependency(conn, &task.uuid, &dep.uuid)?;
        db::refresh_urgency(conn, &cfg.urgency, &task.uuid)?;
        db::refresh_urgency(conn, &cfg.urgency, &dep.uuid)?;

        println!(
            "Task {} now depends on task {} (\"{}\")",
            task.id.unwrap_or(0),
            dep.id.unwrap_or(0),
            dep.description
        );
    }
    Ok(())
}