theaio/theaio-boards

Laneway, team task boards you can run from Claude or ChatGPT. FastAPI + DataK3 + appid + Models + MCP.

A remix template · 0 remixes · Remix theaio/theaio-boards

migrations/001_board_upgrade.sql

-- Brings a bucket made by the original starter schema up to schema.sql. Additive only: the
-- starter's tables and rows stay as they are. Run each statement once against the bucket over
-- the Postgres wire (`dodil data connect <repo>-data` prints the endpoint).
-- (CREATE TABLE IF NOT EXISTS skips a table it finds, so new columns are explicit ALTERs.)
-- Old boards get their list rows and old cards their numbers the first time the app loads them
-- (SqlBoards._adopt_starter_board).
ALTER TABLE cards ADD COLUMN num BIGINT;
ALTER TABLE cards ADD COLUMN list_id TEXT;
ALTER TABLE cards ADD COLUMN description TEXT;
ALTER TABLE cards ADD COLUMN labels TEXT;
ALTER TABLE cards ADD COLUMN pos BIGINT;
ALTER TABLE cards ADD COLUMN created_by TEXT;
ALTER TABLE cards ADD COLUMN created_at TIMESTAMP;

CREATE TABLE IF NOT EXISTS lists (
  id TEXT PRIMARY KEY,
  board_id TEXT NOT NULL,
  name TEXT NOT NULL,
  pos BIGINT NOT NULL
);
CREATE TABLE IF NOT EXISTS card_history (
  id TEXT PRIMARY KEY,
  board_id TEXT NOT NULL,
  card_id TEXT NOT NULL,
  actor TEXT NOT NULL,
  changed_at TIMESTAMP NOT NULL,
  field_name TEXT NOT NULL,
  old_value TEXT,
  new_value TEXT
);
CREATE TABLE IF NOT EXISTS card_links (
  id TEXT PRIMARY KEY,
  board_id TEXT NOT NULL,
  card_id TEXT NOT NULL,
  blocked_by TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS card_embeddings (
  card_id TEXT PRIMARY KEY,
  board_id TEXT NOT NULL,
  digest TEXT NOT NULL,
  embedding VECTOR(2048)
);