Onsite solo ads: inbox delivery with read rewards, composer, homepage format live

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
martbost
2026-09-05 15:25:00 -05:00
parent 5c945a1b09
commit f6a3befe09
9 changed files with 373 additions and 21 deletions
+13
View File
@@ -87,6 +87,19 @@ async function bootstrap() {
last_ts BIGINT NOT NULL DEFAULT 0,
PRIMARY KEY (email, day)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4`);
await q(`CREATE TABLE IF NOT EXISTS solo_inbox (
id INT AUTO_INCREMENT PRIMARY KEY,
campaign_id INT NOT NULL,
email VARCHAR(190) NOT NULL,
delivered BIGINT NOT NULL,
read_ts BIGINT NULL,
rewarded TINYINT NOT NULL DEFAULT 0,
rewarded_day CHAR(10) NULL,
UNIQUE KEY uq_solo (campaign_id, email),
INDEX (email), INDEX (email, rewarded, rewarded_day)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4`);
// solo message bodies run long; widen the shared campaigns.body column
await alterSafe('ALTER TABLE campaigns MODIFY body VARCHAR(1200) NULL');
await q(`CREATE TABLE IF NOT EXISTS burns (
id VARCHAR(32) PRIMARY KEY,
member_id INT NOT NULL,