Schema for blog
CREATE TABLE articles (
id INTEGER PRIMARY KEY, title TEXT, slug TEXT, url TEXT,
content_type TEXT, category TEXT, shelf TEXT, is_headline INTEGER,
description TEXT, published_date TEXT, updated_at TEXT,
sort_order INTEGER, hero_painting TEXT, body_markdown TEXT
);
CREATE TABLE tags (id INTEGER PRIMARY KEY, name TEXT, slug TEXT);
CREATE TABLE article_tags (article_id INTEGER, tag_id INTEGER);
CREATE TABLE threads (
id INTEGER PRIMARY KEY, title TEXT, slug TEXT,
description TEXT, research_question TEXT, sort_order INTEGER
);
CREATE TABLE thread_entries (
id INTEGER PRIMARY KEY, thread_id INTEGER, article_id INTEGER,
position INTEGER, annotation TEXT
);
CREATE TABLE lineage (
id INTEGER PRIMARY KEY, source_id INTEGER, target_id INTEGER,
relationship TEXT, note TEXT
);
CREATE VIRTUAL TABLE articles_fts USING fts5(
title, description, body_markdown, content='articles', content_rowid='id'
);
CREATE TABLE 'articles_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE 'articles_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE 'articles_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE 'articles_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID