CREATE TABLE IF NOT EXISTS posts ( id TEXT PRIMARY KEY, slug TEXT NOT NULL UNIQUE, title TEXT NOT NULL, summary TEXT NOT NULL DEFAULT '', content_markdown TEXT NOT NULL DEFAULT '', status TEXT NOT NULL DEFAULT 'draft', tags_json TEXT NOT NULL DEFAULT '[]', cover TEXT NOT NULL DEFAULT '', file_path TEXT NOT NULL DEFAULT '', version INTEGER NOT NULL DEFAULT 1, content_hash TEXT NOT NULL DEFAULT '', slug_source TEXT NOT NULL DEFAULT 'manual', slug_locked INTEGER NOT NULL DEFAULT 0, published_at TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, deleted_at TEXT ); CREATE INDEX IF NOT EXISTS idx_posts_status ON posts(status); CREATE INDEX IF NOT EXISTS idx_posts_published_at ON posts(published_at); CREATE TABLE IF NOT EXISTS settings ( key TEXT PRIMARY KEY, value_json TEXT NOT NULL, version INTEGER NOT NULL DEFAULT 1, updated_at TEXT NOT NULL ); CREATE TABLE IF NOT EXISTS sync_state ( key TEXT PRIMARY KEY, value TEXT NOT NULL, updated_at TEXT NOT NULL );