-- name: InitializeSchema :exec CREATE TABLE IF NOT EXISTS content ( id TEXT NOT NULL, site_id TEXT NOT NULL, html_content TEXT NOT NULL, original_template TEXT, type TEXT NOT NULL CHECK (type IN ('text', 'link')), created_at INTEGER DEFAULT (strftime('%s', 'now')) NOT NULL, updated_at INTEGER DEFAULT (strftime('%s', 'now')) NOT NULL, last_edited_by TEXT DEFAULT 'system' NOT NULL, PRIMARY KEY (id, site_id) ); -- name: InitializeVersionsTable :exec CREATE TABLE IF NOT EXISTS content_versions ( version_id INTEGER PRIMARY KEY AUTOINCREMENT, content_id TEXT NOT NULL, site_id TEXT NOT NULL, html_content TEXT NOT NULL, original_template TEXT, type TEXT NOT NULL, created_at INTEGER DEFAULT (strftime('%s', 'now')) NOT NULL, created_by TEXT DEFAULT 'system' NOT NULL ); -- name: CreateContentSiteIndex :exec CREATE INDEX IF NOT EXISTS idx_content_site_id ON content(site_id); -- name: CreateContentUpdatedAtIndex :exec CREATE INDEX IF NOT EXISTS idx_content_updated_at ON content(updated_at); -- name: CreateVersionsLookupIndex :exec CREATE INDEX IF NOT EXISTS idx_content_versions_lookup ON content_versions(content_id, site_id, created_at DESC); -- name: CreateUpdateTrigger :exec CREATE TRIGGER IF NOT EXISTS update_content_updated_at AFTER UPDATE ON content FOR EACH ROW BEGIN UPDATE content SET updated_at = strftime('%s', 'now') WHERE id = NEW.id AND site_id = NEW.site_id; END;