28 lines
1.0 KiB
SQL
28 lines
1.0 KiB
SQL
-- 0002_todos.sql — Phase 2
|
|
set search_path to ordinarthur_os, public;
|
|
|
|
create table if not exists ordinarthur_os.todos (
|
|
id uuid primary key default gen_random_uuid(),
|
|
title text not null,
|
|
description text,
|
|
status text not null default 'inbox'
|
|
check (status in ('inbox', 'todo', 'doing', 'done', 'archived')),
|
|
priority smallint check (priority between 0 and 3),
|
|
due_at timestamptz,
|
|
tags text[] not null default '{}',
|
|
project_id uuid,
|
|
checklist jsonb not null default '[]'::jsonb,
|
|
energy text check (energy in ('low', 'med', 'high')),
|
|
context text,
|
|
recurrence text,
|
|
ticket_url text,
|
|
verification_steps text[] not null default '{}',
|
|
ai_enriched boolean not null default false,
|
|
created_at timestamptz not null default now(),
|
|
completed_at timestamptz
|
|
);
|
|
|
|
create index if not exists todos_status_idx on ordinarthur_os.todos(status);
|
|
create index if not exists todos_due_at_idx on ordinarthur_os.todos(due_at);
|
|
create index if not exists todos_tags_gin on ordinarthur_os.todos using gin (tags);
|