WIP! A BB-style forum, on the ATmosphere! We're still working... we'll be back soon when we have something to show off!
node typescript hono htmx atproto
at main 169 lines 6.3 kB view raw
1CREATE TABLE `backfill_errors` ( 2 `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, 3 `backfill_id` integer NOT NULL, 4 `did` text NOT NULL, 5 `collection` text NOT NULL, 6 `error_message` text NOT NULL, 7 `created_at` integer NOT NULL, 8 FOREIGN KEY (`backfill_id`) REFERENCES `backfill_progress`(`id`) ON UPDATE no action ON DELETE no action 9); 10--> statement-breakpoint 11CREATE INDEX `backfill_errors_backfill_id_idx` ON `backfill_errors` (`backfill_id`);--> statement-breakpoint 12CREATE TABLE `backfill_progress` ( 13 `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, 14 `status` text NOT NULL, 15 `backfill_type` text NOT NULL, 16 `last_processed_did` text, 17 `dids_total` integer DEFAULT 0 NOT NULL, 18 `dids_processed` integer DEFAULT 0 NOT NULL, 19 `records_indexed` integer DEFAULT 0 NOT NULL, 20 `started_at` integer NOT NULL, 21 `completed_at` integer, 22 `error_message` text 23); 24--> statement-breakpoint 25CREATE TABLE `boards` ( 26 `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, 27 `did` text NOT NULL, 28 `rkey` text NOT NULL, 29 `cid` text NOT NULL, 30 `name` text NOT NULL, 31 `description` text, 32 `slug` text, 33 `sort_order` integer, 34 `category_id` integer, 35 `category_uri` text NOT NULL, 36 `created_at` integer NOT NULL, 37 `indexed_at` integer NOT NULL, 38 FOREIGN KEY (`category_id`) REFERENCES `categories`(`id`) ON UPDATE no action ON DELETE no action 39); 40--> statement-breakpoint 41CREATE UNIQUE INDEX `boards_did_rkey_idx` ON `boards` (`did`,`rkey`);--> statement-breakpoint 42CREATE INDEX `boards_category_id_idx` ON `boards` (`category_id`);--> statement-breakpoint 43CREATE TABLE `categories` ( 44 `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, 45 `did` text NOT NULL, 46 `rkey` text NOT NULL, 47 `cid` text NOT NULL, 48 `name` text NOT NULL, 49 `description` text, 50 `slug` text, 51 `sort_order` integer, 52 `forum_id` integer, 53 `created_at` integer NOT NULL, 54 `indexed_at` integer NOT NULL, 55 FOREIGN KEY (`forum_id`) REFERENCES `forums`(`id`) ON UPDATE no action ON DELETE no action 56); 57--> statement-breakpoint 58CREATE UNIQUE INDEX `categories_did_rkey_idx` ON `categories` (`did`,`rkey`);--> statement-breakpoint 59CREATE TABLE `firehose_cursor` ( 60 `service` text PRIMARY KEY DEFAULT 'jetstream' NOT NULL, 61 `cursor` integer NOT NULL, 62 `updated_at` integer NOT NULL 63); 64--> statement-breakpoint 65CREATE TABLE `forums` ( 66 `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, 67 `did` text NOT NULL, 68 `rkey` text NOT NULL, 69 `cid` text NOT NULL, 70 `name` text NOT NULL, 71 `description` text, 72 `indexed_at` integer NOT NULL 73); 74--> statement-breakpoint 75CREATE UNIQUE INDEX `forums_did_rkey_idx` ON `forums` (`did`,`rkey`);--> statement-breakpoint 76CREATE TABLE `memberships` ( 77 `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, 78 `did` text NOT NULL, 79 `rkey` text NOT NULL, 80 `cid` text NOT NULL, 81 `forum_id` integer, 82 `forum_uri` text NOT NULL, 83 `role` text, 84 `role_uri` text, 85 `joined_at` integer, 86 `created_at` integer NOT NULL, 87 `indexed_at` integer NOT NULL, 88 FOREIGN KEY (`did`) REFERENCES `users`(`did`) ON UPDATE no action ON DELETE no action, 89 FOREIGN KEY (`forum_id`) REFERENCES `forums`(`id`) ON UPDATE no action ON DELETE no action 90); 91--> statement-breakpoint 92CREATE UNIQUE INDEX `memberships_did_rkey_idx` ON `memberships` (`did`,`rkey`);--> statement-breakpoint 93CREATE INDEX `memberships_did_idx` ON `memberships` (`did`);--> statement-breakpoint 94CREATE TABLE `mod_actions` ( 95 `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, 96 `did` text NOT NULL, 97 `rkey` text NOT NULL, 98 `cid` text NOT NULL, 99 `action` text NOT NULL, 100 `subject_did` text, 101 `subject_post_uri` text, 102 `forum_id` integer, 103 `reason` text, 104 `created_by` text NOT NULL, 105 `expires_at` integer, 106 `created_at` integer NOT NULL, 107 `indexed_at` integer NOT NULL, 108 FOREIGN KEY (`forum_id`) REFERENCES `forums`(`id`) ON UPDATE no action ON DELETE no action 109); 110--> statement-breakpoint 111CREATE UNIQUE INDEX `mod_actions_did_rkey_idx` ON `mod_actions` (`did`,`rkey`);--> statement-breakpoint 112CREATE INDEX `mod_actions_subject_did_idx` ON `mod_actions` (`subject_did`);--> statement-breakpoint 113CREATE INDEX `mod_actions_subject_post_uri_idx` ON `mod_actions` (`subject_post_uri`);--> statement-breakpoint 114CREATE TABLE `posts` ( 115 `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, 116 `did` text NOT NULL, 117 `rkey` text NOT NULL, 118 `cid` text NOT NULL, 119 `title` text, 120 `text` text NOT NULL, 121 `forum_uri` text, 122 `board_uri` text, 123 `board_id` integer, 124 `root_post_id` integer, 125 `parent_post_id` integer, 126 `root_uri` text, 127 `parent_uri` text, 128 `created_at` integer NOT NULL, 129 `indexed_at` integer NOT NULL, 130 `banned_by_mod` integer DEFAULT false NOT NULL, 131 `deleted_by_user` integer DEFAULT false NOT NULL, 132 FOREIGN KEY (`did`) REFERENCES `users`(`did`) ON UPDATE no action ON DELETE no action, 133 FOREIGN KEY (`board_id`) REFERENCES `boards`(`id`) ON UPDATE no action ON DELETE no action, 134 FOREIGN KEY (`root_post_id`) REFERENCES `posts`(`id`) ON UPDATE no action ON DELETE no action, 135 FOREIGN KEY (`parent_post_id`) REFERENCES `posts`(`id`) ON UPDATE no action ON DELETE no action 136); 137--> statement-breakpoint 138CREATE UNIQUE INDEX `posts_did_rkey_idx` ON `posts` (`did`,`rkey`);--> statement-breakpoint 139CREATE INDEX `posts_forum_uri_idx` ON `posts` (`forum_uri`);--> statement-breakpoint 140CREATE INDEX `posts_board_id_idx` ON `posts` (`board_id`);--> statement-breakpoint 141CREATE INDEX `posts_board_uri_idx` ON `posts` (`board_uri`);--> statement-breakpoint 142CREATE INDEX `posts_root_post_id_idx` ON `posts` (`root_post_id`);--> statement-breakpoint 143CREATE TABLE `role_permissions` ( 144 `role_id` integer NOT NULL, 145 `permission` text NOT NULL, 146 PRIMARY KEY(`role_id`, `permission`), 147 FOREIGN KEY (`role_id`) REFERENCES `roles`(`id`) ON UPDATE no action ON DELETE cascade 148); 149--> statement-breakpoint 150CREATE TABLE `roles` ( 151 `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, 152 `did` text NOT NULL, 153 `rkey` text NOT NULL, 154 `cid` text NOT NULL, 155 `name` text NOT NULL, 156 `description` text, 157 `priority` integer NOT NULL, 158 `created_at` integer NOT NULL, 159 `indexed_at` integer NOT NULL 160); 161--> statement-breakpoint 162CREATE UNIQUE INDEX `roles_did_rkey_idx` ON `roles` (`did`,`rkey`);--> statement-breakpoint 163CREATE INDEX `roles_did_idx` ON `roles` (`did`);--> statement-breakpoint 164CREATE INDEX `roles_did_name_idx` ON `roles` (`did`,`name`);--> statement-breakpoint 165CREATE TABLE `users` ( 166 `did` text PRIMARY KEY NOT NULL, 167 `handle` text, 168 `indexed_at` integer NOT NULL 169);