#!/bin/bash DB="$HOME/.local/share/mindwtr/mindwtr.db" if [ ! -f "$DB" ]; then echo "Fehler: Datenbank nicht gefunden: $DB" >&2 exit 1 fi echo "=== Mindwtr-Statistik ===" echo # ── 1. Aufgaben-Übersicht ── echo "── Aufgaben (aktiv) ──────────────────" sqlite3 "$DB" " SELECT status, COUNT(*) AS count FROM tasks WHERE deletedAt IS NULL GROUP BY status ORDER BY CASE status WHEN 'inbox' THEN 1 WHEN 'next' THEN 2 WHEN 'someday' THEN 3 WHEN 'done' THEN 4 END;" | awk -F'|' '{ printf " %-12s %5s\n", $1, $2 }' active=$(sqlite3 "$DB" "SELECT COUNT(*) FROM tasks WHERE deletedAt IS NULL AND status != 'done';") total=$(sqlite3 "$DB" "SELECT COUNT(*) FROM tasks WHERE deletedAt IS NULL;") echo " ─────────────────" printf " %-12s %5s\n" "Aktiv (o. done)" "$active" printf " %-12s %5s\n" "Gesamt" "$total" echo # ── 2. Fälligkeiten ── echo "── Fälligkeiten ──────────────────────" due_overdue=$(sqlite3 "$DB" " SELECT COUNT(*) FROM tasks WHERE deletedAt IS NULL AND status != 'done' AND dueDate IS NOT NULL AND dueDate != '' AND dueDate < datetime('now');") due_week=$(sqlite3 "$DB" " SELECT COUNT(*) FROM tasks WHERE deletedAt IS NULL AND status != 'done' AND dueDate IS NOT NULL AND dueDate != '' AND dueDate >= datetime('now') AND dueDate < datetime('now', '+7 days');") due_today=$(sqlite3 "$DB" " SELECT COUNT(*) FROM tasks WHERE deletedAt IS NULL AND status != 'done' AND dueDate IS NOT NULL AND dueDate != '' AND date(dueDate) = date('now');") printf " %-20s %5s\n" "Überfällig" "$due_overdue" printf " %-20s %5s\n" "Diese Woche" "$due_week" printf " %-20s %5s\n" "Heute" "$due_today" echo # ── 3. Heutige Aktivität ── echo "── Heute & diese Woche ───────────────" created_today=$(sqlite3 "$DB" "SELECT COUNT(*) FROM tasks WHERE date(createdAt) = date('now');") updated_today=$(sqlite3 "$DB" "SELECT COUNT(*) FROM tasks WHERE date(updatedAt) = date('now');") done_today=$(sqlite3 "$DB" "SELECT COUNT(*) FROM tasks WHERE date(completedAt) = date('now') AND deletedAt IS NULL;") done_week=$(sqlite3 "$DB" "SELECT COUNT(*) FROM tasks WHERE completedAt >= datetime('now', '-7 days') AND deletedAt IS NULL;") printf " %-20s %5s\n" "Heute erstellt" "$created_today" printf " %-20s %5s\n" "Heute aktualisiert" "$updated_today" printf " %-20s %5s\n" "Heute erledigt" "$done_today" printf " %-20s %5s\n" "Diese Woche erledigt" "$done_week" echo # ── 4. Aufgaben-Merkmale ── echo "── Aufgaben mit ──────────────────────" sqlite3 "$DB" " SELECT 'Priorität', COUNT(*) FROM tasks WHERE deletedAt IS NULL AND priority IS NOT NULL AND priority != '' UNION ALL SELECT 'Energielevel', COUNT(*) FROM tasks WHERE deletedAt IS NULL AND energyLevel IS NOT NULL AND energyLevel != '' UNION ALL SELECT 'Fälligkeitsdatum', COUNT(*) FROM tasks WHERE deletedAt IS NULL AND dueDate IS NOT NULL AND dueDate != '' UNION ALL SELECT 'Checkliste', COUNT(*) FROM tasks WHERE deletedAt IS NULL AND checklist IS NOT NULL AND checklist != '[]' UNION ALL SELECT 'Wiederkehrend', COUNT(*) FROM tasks WHERE deletedAt IS NULL AND recurrence IS NOT NULL AND recurrence != '' UNION ALL SELECT 'Notizen', COUNT(*) FROM tasks WHERE deletedAt IS NULL AND description IS NOT NULL AND description != '' UNION ALL SELECT 'Zeitschätzung', COUNT(*) FROM tasks WHERE deletedAt IS NULL AND timeEstimate IS NOT NULL AND timeEstimate != '' UNION ALL SELECT 'Heute fokussiert', COUNT(*) FROM tasks WHERE deletedAt IS NULL AND isFocusedToday = 1;" | awk -F'|' '{ printf " %-20s %5s\n", $1, $2 }' echo # ── 5. Top-Kontexte ── echo "── Top-Kontexte ──────────────────────" sqlite3 "$DB" " SELECT j.value AS context, COUNT(*) AS count FROM tasks t, json_each(t.contexts) j WHERE t.deletedAt IS NULL GROUP BY j.value ORDER BY count DESC;" | awk -F'|' '{ printf " %-20s %5s\n", $1, $2 }' echo # ── 6. Top-Schlagwörter ── echo "── Top-Schlagwörter ──────────────────" sqlite3 "$DB" " SELECT j.value AS tag, COUNT(*) AS count FROM tasks t, json_each(t.tags) j WHERE t.deletedAt IS NULL GROUP BY j.value ORDER BY count DESC LIMIT 15;" | awk -F'|' '{ printf " %-20s %5s\n", $1, $2 }' echo # ── 7. Projekte ── echo "── Projekte ──────────────────────────" sqlite3 "$DB" " SELECT COALESCE(p.title, '(kein Projekt)') AS project, COUNT(*) AS tasks FROM tasks t LEFT JOIN projects p ON t.projectId = p.id WHERE t.deletedAt IS NULL AND (p.deletedAt IS NULL OR p.id IS NULL) GROUP BY project ORDER BY tasks DESC;" | awk -F'|' '{ printf " %-30s %5s\n", $1, $2 }' echo # ── 8. Unvollständige Aufgaben ── echo "── Unvollständige Aufgaben ───────────" incomplete=$(sqlite3 "$DB" " SELECT COUNT(*) FROM tasks t WHERE deletedAt IS NULL AND ((contexts IS NULL OR contexts = '[]') OR (tags IS NULL OR tags = '[]')) AND status != 'done';") echo " $incomplete Aufgaben ohne Kontext und/oder Schlagwort" echo " (Details: ./incomplete.sh)"