Files
Synapsis/drizzle/20260715224857_yummy_jamie_braddock/migration.sql
T
cyph3rasi d548d4bd6f Complete @mention system with shared parsing, accessible autocomplete, canonical links, moderated local notifications, durable idempotent swarm delivery, navigable remote notifications, and exact-once bot replies
Hop-State: A_06FPG3MP3DEEGFB3AWBG03G
Hop-Proposal: R_06FPG3KD4J27QKCSNRBMFF0
Hop-Task: T_06FPFT83JWNP9AP1GRH36VR
Hop-Attempt: AT_06FPFT83JZM51ZFSMVPE5QR
2026-07-15 16:13:34 -07:00

38 lines
1.7 KiB
SQL

CREATE TABLE `mention_deliveries` (
`id` text PRIMARY KEY,
`interaction_id` text NOT NULL UNIQUE,
`post_id` text NOT NULL,
`target_handle` text NOT NULL,
`target_domain` text NOT NULL,
`status` text DEFAULT 'pending' NOT NULL,
`attempts` integer DEFAULT 0 NOT NULL,
`next_attempt_at` integer DEFAULT (unixepoch()) NOT NULL,
`last_attempt_at` integer,
`delivered_at` integer,
`last_error` text,
`created_at` integer DEFAULT (unixepoch()) NOT NULL,
`updated_at` integer DEFAULT (unixepoch()) NOT NULL,
CONSTRAINT `fk_mention_deliveries_post_id_posts_id_fk` FOREIGN KEY (`post_id`) REFERENCES `posts`(`id`) ON DELETE CASCADE
);
--> statement-breakpoint
ALTER TABLE `notifications` ADD `remote_post_id` text;--> statement-breakpoint
ALTER TABLE `notifications` ADD `remote_post_domain` text;--> statement-breakpoint
ALTER TABLE `notifications` ADD `interaction_id` text;--> statement-breakpoint
DELETE FROM `bot_mentions`
WHERE `id` IN (
SELECT `id` FROM (
SELECT
`id`,
ROW_NUMBER() OVER (
PARTITION BY `bot_id`, `post_id`
ORDER BY `is_processed` DESC, `created_at` ASC, `id` ASC
) AS `duplicate_rank`
FROM `bot_mentions`
)
WHERE `duplicate_rank` > 1
);--> statement-breakpoint
CREATE UNIQUE INDEX `bot_mentions_bot_post_unique_idx` ON `bot_mentions` (`bot_id`,`post_id`);--> statement-breakpoint
CREATE UNIQUE INDEX `mention_deliveries_target_unique_idx` ON `mention_deliveries` (`post_id`,`target_handle`,`target_domain`);--> statement-breakpoint
CREATE INDEX `mention_deliveries_due_idx` ON `mention_deliveries` (`status`,`next_attempt_at`);--> statement-breakpoint
CREATE UNIQUE INDEX `notifications_interaction_unique_idx` ON `notifications` (`interaction_id`);