summaryrefslogtreecommitdiff
path: root/migrations/020_native_tasks.sql
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-06-29 08:53:48 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-06-29 08:53:48 +0000
commit3fbfdd1f9441299eb146bf215449f238977deb66 (patch)
treea01d0cd35309afbab6cc8989e26e2e824442c898 /migrations/020_native_tasks.sql
parentde3e37cca4f34a30f9c0beef05f67c3d515d64c2 (diff)
feat: native task management + Todoist migration
Adds doot-owned task storage (native_tasks table) so tasks can be managed without Todoist. CompleteTask for 'doot' source just updates the DB — no external API call, no token dependency. Migration path: POST /settings/import-from-todoist — copies Todoist cache → native_tasks Then remove TODOIST_TOKEN from .env to disable Todoist Changes: - migration 020: native_tasks table - store: GetNativeTasks, GetNativeTasksByDateRange, GetUndatedNativeTasks, CreateNativeTask, CompleteNativeTask, UncompleteNativeTask, UpdateNativeTask, ImportFromTodoist - timeline: native tasks appear as source="doot" (teal) - handleAtomToggle: "doot" case — no external API needed - HandleWidgetComplete: method on Handler, handles "doot" natively - HandleUnifiedAdd: "doot" source creates in native_tasks - widget: "doot" tasks are completable, teal color indicator Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'migrations/020_native_tasks.sql')
-rw-r--r--migrations/020_native_tasks.sql17
1 files changed, 17 insertions, 0 deletions
diff --git a/migrations/020_native_tasks.sql b/migrations/020_native_tasks.sql
new file mode 100644
index 0000000..9abf3ad
--- /dev/null
+++ b/migrations/020_native_tasks.sql
@@ -0,0 +1,17 @@
+-- Native tasks table: doot-owned task storage, not a sync cache.
+-- Populated by importing from Todoist, then managed entirely within doot.
+CREATE TABLE IF NOT EXISTS native_tasks (
+ id TEXT PRIMARY KEY,
+ content TEXT NOT NULL,
+ description TEXT DEFAULT '',
+ project_name TEXT DEFAULT '',
+ due_date DATETIME,
+ priority INTEGER DEFAULT 1,
+ completed BOOLEAN DEFAULT 0,
+ labels TEXT DEFAULT '[]',
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE INDEX IF NOT EXISTS idx_native_tasks_due_date ON native_tasks(due_date);
+CREATE INDEX IF NOT EXISTS idx_native_tasks_completed ON native_tasks(completed);