summaryrefslogtreecommitdiff
path: root/scripts/next-task
blob: 8bd958c168bd66374d5ff2c766a755d973d61020 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/bin/bash

DB_PATH="/site/doot.terst.org/data/claudomator.db"

# 1. Fetch the most recently updated task
target=$(sqlite3 "$DB_PATH" "SELECT id, state, parent_task_id FROM tasks WHERE state IN ('COMPLETED', 'READY') ORDER BY updated_at DESC LIMIT 1;")

if [ -z "$target" ]; then
    exit 0
fi

IFS='|' read -r id state parent_id <<< "$target"

if [ "$state" == "COMPLETED" ]; then
    # 2. Find next sibling task that is currently PENDING
    next_task=$(sqlite3 "$DB_PATH" "SELECT id FROM tasks WHERE parent_task_id = '$parent_id' AND state = 'PENDING' LIMIT 1;")

elif [ "$state" == "READY" ]; then
    # 3. Find next task ordered by priority then oldest
    next_task=$(sqlite3 "$DB_PATH" "SELECT id FROM tasks WHERE state = 'PENDING' AND id != '$id'
        ORDER BY
            CASE priority
                WHEN 'critical' THEN 4
                WHEN 'high'     THEN 3
                WHEN 'normal'   THEN 2
                WHEN 'low'      THEN 1
                ELSE 0
            END DESC,
            created_at ASC
        LIMIT 1;")
fi

echo "$next_task"