diff --git a/src/blackboard/db.py b/src/blackboard/db.py index dec31fc..05c0344 100644 --- a/src/blackboard/db.py +++ b/src/blackboard/db.py @@ -232,6 +232,7 @@ _SCHEMA_STATEMENTS = [ "CREATE INDEX IF NOT EXISTS idx_tasks_status ON tasks(status)", "CREATE INDEX IF NOT EXISTS idx_tasks_assignee ON tasks(assignee)", "CREATE INDEX IF NOT EXISTS idx_tasks_parent ON tasks(parent_task)", + "CREATE INDEX IF NOT EXISTS idx_tasks_card ON tasks(card_id)", # comments """CREATE TABLE IF NOT EXISTS comments ( @@ -392,3 +393,24 @@ _SCHEMA_STATEMENTS = [ "CREATE INDEX IF NOT EXISTS idx_routing_mode ON routing_decisions(mode)", "CREATE INDEX IF NOT EXISTS idx_routing_time ON routing_decisions(created_at)", ] + +# --------------------------------------------------------------------------- +# Cards Schema (v2.7) +# --------------------------------------------------------------------------- + +_CARDS_SCHEMA = [ + """CREATE TABLE IF NOT EXISTS cards ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL, + description TEXT DEFAULT '', + card_type TEXT DEFAULT 'default' CHECK (card_type IN ('default','strategy','data_pipeline','research','platform','bugfix','mail')), + stages_json TEXT DEFAULT '[]', + labels_json TEXT DEFAULT '[]', + status TEXT DEFAULT 'active' CHECK (status IN ('active','pending','working','review','done','failed','blocked','cancelled','archived','deleted')), + created_at TEXT NOT NULL DEFAULT (datetime('now')), + updated_at TEXT, + archived_at TEXT + )""", + "CREATE INDEX IF NOT EXISTS idx_cards_id ON cards(id)", + "CREATE INDEX IF NOT EXISTS idx_cards_status ON cards(status)", +]