FastAPI backend (SQLite + APScheduler), Vue 3 frontend, MCP server for Claude integration, and Docker Compose stack. Includes campaign data model (campaigns → variants → subs), post history, sub rules, and Playwright-based Reddit posting layer migrated from claude-bridge/reddit-poster. Also seeds legacy campaigns (6) and sub rules (14) from reddit-poster history. Closes #1 (scaffold), resolves migration from claude-bridge.
16 lines
915 B
SQL
16 lines
915 B
SQL
-- Campaign variants: per-sub (or wildcard) content framing.
|
|
-- sub_pattern: exact sub name ("selfhosted"), prefix wildcard ("nd_*"), or "*" for default.
|
|
-- Priority: exact match > prefix > "*" default.
|
|
CREATE TABLE IF NOT EXISTS campaign_variants (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
campaign_id INTEGER NOT NULL REFERENCES campaigns(id) ON DELETE CASCADE,
|
|
sub_pattern TEXT NOT NULL DEFAULT '*', -- exact sub, glob prefix, or "*" default
|
|
title TEXT NOT NULL,
|
|
body TEXT NOT NULL,
|
|
flair TEXT, -- override flair for this variant
|
|
notes TEXT, -- internal framing notes
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_variants_campaign ON campaign_variants(campaign_id);
|