1CREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA public;
2
3CREATE TABLE public.breakpoints (
4 id integer NOT NULL,
5 project_id integer NOT NULL,
6 "position" integer NOT NULL,
7 log_message text,
8 worktree_id bigint NOT NULL,
9 path text NOT NULL,
10 kind character varying NOT NULL
11);
12
13CREATE SEQUENCE public.breakpoints_id_seq
14 AS integer
15 START WITH 1
16 INCREMENT BY 1
17 NO MINVALUE
18 NO MAXVALUE
19 CACHE 1;
20
21ALTER SEQUENCE public.breakpoints_id_seq OWNED BY public.breakpoints.id;
22
23CREATE TABLE public.buffer_operations (
24 buffer_id integer NOT NULL,
25 epoch integer NOT NULL,
26 replica_id integer NOT NULL,
27 lamport_timestamp integer NOT NULL,
28 value bytea NOT NULL
29);
30
31CREATE TABLE public.buffer_snapshots (
32 buffer_id integer NOT NULL,
33 epoch integer NOT NULL,
34 text text NOT NULL,
35 operation_serialization_version integer NOT NULL
36);
37
38CREATE TABLE public.buffers (
39 id integer NOT NULL,
40 channel_id integer NOT NULL,
41 epoch integer DEFAULT 0 NOT NULL,
42 latest_operation_epoch integer,
43 latest_operation_lamport_timestamp integer,
44 latest_operation_replica_id integer
45);
46
47CREATE SEQUENCE public.buffers_id_seq
48 AS integer
49 START WITH 1
50 INCREMENT BY 1
51 NO MINVALUE
52 NO MAXVALUE
53 CACHE 1;
54
55ALTER SEQUENCE public.buffers_id_seq OWNED BY public.buffers.id;
56
57CREATE TABLE public.channel_buffer_collaborators (
58 id integer NOT NULL,
59 channel_id integer NOT NULL,
60 connection_id integer NOT NULL,
61 connection_server_id integer NOT NULL,
62 connection_lost boolean DEFAULT false NOT NULL,
63 user_id integer NOT NULL,
64 replica_id integer NOT NULL
65);
66
67CREATE SEQUENCE public.channel_buffer_collaborators_id_seq
68 AS integer
69 START WITH 1
70 INCREMENT BY 1
71 NO MINVALUE
72 NO MAXVALUE
73 CACHE 1;
74
75ALTER SEQUENCE public.channel_buffer_collaborators_id_seq OWNED BY public.channel_buffer_collaborators.id;
76
77CREATE TABLE public.channel_chat_participants (
78 id integer NOT NULL,
79 user_id integer NOT NULL,
80 channel_id integer NOT NULL,
81 connection_id integer NOT NULL,
82 connection_server_id integer NOT NULL
83);
84
85CREATE SEQUENCE public.channel_chat_participants_id_seq
86 AS integer
87 START WITH 1
88 INCREMENT BY 1
89 NO MINVALUE
90 NO MAXVALUE
91 CACHE 1;
92
93ALTER SEQUENCE public.channel_chat_participants_id_seq OWNED BY public.channel_chat_participants.id;
94
95CREATE TABLE public.channel_members (
96 id integer NOT NULL,
97 channel_id integer NOT NULL,
98 user_id integer NOT NULL,
99 accepted boolean DEFAULT false NOT NULL,
100 updated_at timestamp without time zone DEFAULT now() NOT NULL,
101 role text NOT NULL
102);
103
104CREATE SEQUENCE public.channel_members_id_seq
105 AS integer
106 START WITH 1
107 INCREMENT BY 1
108 NO MINVALUE
109 NO MAXVALUE
110 CACHE 1;
111
112ALTER SEQUENCE public.channel_members_id_seq OWNED BY public.channel_members.id;
113
114CREATE TABLE public.channels (
115 id integer NOT NULL,
116 name character varying NOT NULL,
117 created_at timestamp without time zone DEFAULT now() NOT NULL,
118 visibility text DEFAULT 'members'::text NOT NULL,
119 parent_path text NOT NULL,
120 requires_zed_cla boolean DEFAULT false NOT NULL,
121 channel_order integer DEFAULT 1 NOT NULL
122);
123
124CREATE SEQUENCE public.channels_id_seq
125 AS integer
126 START WITH 1
127 INCREMENT BY 1
128 NO MINVALUE
129 NO MAXVALUE
130 CACHE 1;
131
132ALTER SEQUENCE public.channels_id_seq OWNED BY public.channels.id;
133
134CREATE TABLE public.contacts (
135 id integer NOT NULL,
136 user_id_a integer NOT NULL,
137 user_id_b integer NOT NULL,
138 a_to_b boolean NOT NULL,
139 should_notify boolean NOT NULL,
140 accepted boolean NOT NULL
141);
142
143CREATE SEQUENCE public.contacts_id_seq
144 AS integer
145 START WITH 1
146 INCREMENT BY 1
147 NO MINVALUE
148 NO MAXVALUE
149 CACHE 1;
150
151ALTER SEQUENCE public.contacts_id_seq OWNED BY public.contacts.id;
152
153CREATE TABLE public.contributors (
154 user_id integer NOT NULL,
155 signed_at timestamp without time zone DEFAULT now() NOT NULL
156);
157
158CREATE TABLE public.extension_versions (
159 extension_id integer NOT NULL,
160 version text NOT NULL,
161 published_at timestamp without time zone DEFAULT now() NOT NULL,
162 authors text NOT NULL,
163 repository text NOT NULL,
164 description text NOT NULL,
165 download_count bigint DEFAULT 0 NOT NULL,
166 schema_version integer DEFAULT 0 NOT NULL,
167 wasm_api_version text,
168 provides_themes boolean DEFAULT false NOT NULL,
169 provides_icon_themes boolean DEFAULT false NOT NULL,
170 provides_languages boolean DEFAULT false NOT NULL,
171 provides_grammars boolean DEFAULT false NOT NULL,
172 provides_language_servers boolean DEFAULT false NOT NULL,
173 provides_context_servers boolean DEFAULT false NOT NULL,
174 provides_slash_commands boolean DEFAULT false NOT NULL,
175 provides_indexed_docs_providers boolean DEFAULT false NOT NULL,
176 provides_snippets boolean DEFAULT false NOT NULL,
177 provides_debug_adapters boolean DEFAULT false NOT NULL,
178 provides_agent_servers boolean DEFAULT false NOT NULL
179);
180
181CREATE TABLE public.extensions (
182 id integer NOT NULL,
183 name text NOT NULL,
184 external_id text NOT NULL,
185 latest_version text NOT NULL,
186 total_download_count bigint DEFAULT 0 NOT NULL
187);
188
189CREATE SEQUENCE public.extensions_id_seq
190 AS integer
191 START WITH 1
192 INCREMENT BY 1
193 NO MINVALUE
194 NO MAXVALUE
195 CACHE 1;
196
197ALTER SEQUENCE public.extensions_id_seq OWNED BY public.extensions.id;
198
199CREATE TABLE public.followers (
200 id integer NOT NULL,
201 room_id integer NOT NULL,
202 project_id integer NOT NULL,
203 leader_connection_server_id integer NOT NULL,
204 leader_connection_id integer NOT NULL,
205 follower_connection_server_id integer NOT NULL,
206 follower_connection_id integer NOT NULL
207);
208
209CREATE SEQUENCE public.followers_id_seq
210 AS integer
211 START WITH 1
212 INCREMENT BY 1
213 NO MINVALUE
214 NO MAXVALUE
215 CACHE 1;
216
217ALTER SEQUENCE public.followers_id_seq OWNED BY public.followers.id;
218
219CREATE TABLE public.language_servers (
220 project_id integer NOT NULL,
221 id bigint NOT NULL,
222 name character varying NOT NULL,
223 capabilities text NOT NULL,
224 worktree_id bigint
225);
226
227CREATE TABLE public.notification_kinds (
228 id integer NOT NULL,
229 name character varying NOT NULL
230);
231
232CREATE SEQUENCE public.notification_kinds_id_seq
233 AS integer
234 START WITH 1
235 INCREMENT BY 1
236 NO MINVALUE
237 NO MAXVALUE
238 CACHE 1;
239
240ALTER SEQUENCE public.notification_kinds_id_seq OWNED BY public.notification_kinds.id;
241
242CREATE TABLE public.notifications (
243 id integer NOT NULL,
244 created_at timestamp without time zone DEFAULT now() NOT NULL,
245 recipient_id integer NOT NULL,
246 kind integer NOT NULL,
247 entity_id integer,
248 content text,
249 is_read boolean DEFAULT false NOT NULL,
250 response boolean
251);
252
253CREATE SEQUENCE public.notifications_id_seq
254 AS integer
255 START WITH 1
256 INCREMENT BY 1
257 NO MINVALUE
258 NO MAXVALUE
259 CACHE 1;
260
261ALTER SEQUENCE public.notifications_id_seq OWNED BY public.notifications.id;
262
263CREATE TABLE public.observed_buffer_edits (
264 user_id integer NOT NULL,
265 buffer_id integer NOT NULL,
266 epoch integer NOT NULL,
267 lamport_timestamp integer NOT NULL,
268 replica_id integer NOT NULL
269);
270
271CREATE TABLE public.project_collaborators (
272 id integer NOT NULL,
273 project_id integer NOT NULL,
274 connection_id integer NOT NULL,
275 user_id integer NOT NULL,
276 replica_id integer NOT NULL,
277 is_host boolean NOT NULL,
278 connection_server_id integer NOT NULL,
279 committer_name character varying,
280 committer_email character varying
281);
282
283CREATE SEQUENCE public.project_collaborators_id_seq
284 AS integer
285 START WITH 1
286 INCREMENT BY 1
287 NO MINVALUE
288 NO MAXVALUE
289 CACHE 1;
290
291ALTER SEQUENCE public.project_collaborators_id_seq OWNED BY public.project_collaborators.id;
292
293CREATE TABLE public.project_repositories (
294 project_id integer NOT NULL,
295 abs_path character varying,
296 id bigint NOT NULL,
297 legacy_worktree_id bigint,
298 entry_ids character varying,
299 branch character varying,
300 scan_id bigint NOT NULL,
301 is_deleted boolean NOT NULL,
302 current_merge_conflicts character varying,
303 branch_summary character varying,
304 head_commit_details character varying,
305 merge_message character varying,
306 remote_upstream_url character varying,
307 remote_origin_url character varying
308);
309
310CREATE TABLE public.project_repository_statuses (
311 project_id integer NOT NULL,
312 repository_id bigint NOT NULL,
313 repo_path character varying NOT NULL,
314 status bigint NOT NULL,
315 status_kind integer NOT NULL,
316 first_status integer,
317 second_status integer,
318 scan_id bigint NOT NULL,
319 is_deleted boolean NOT NULL
320);
321
322CREATE TABLE public.projects (
323 id integer NOT NULL,
324 host_user_id integer,
325 unregistered boolean DEFAULT false NOT NULL,
326 room_id integer,
327 host_connection_id integer,
328 host_connection_server_id integer,
329 windows_paths boolean DEFAULT false
330);
331
332CREATE SEQUENCE public.projects_id_seq
333 AS integer
334 START WITH 1
335 INCREMENT BY 1
336 NO MINVALUE
337 NO MAXVALUE
338 CACHE 1;
339
340ALTER SEQUENCE public.projects_id_seq OWNED BY public.projects.id;
341
342CREATE TABLE public.room_participants (
343 id integer NOT NULL,
344 room_id integer NOT NULL,
345 user_id integer NOT NULL,
346 answering_connection_id integer,
347 location_kind integer,
348 location_project_id integer,
349 initial_project_id integer,
350 calling_user_id integer NOT NULL,
351 calling_connection_id integer NOT NULL,
352 answering_connection_lost boolean DEFAULT false NOT NULL,
353 answering_connection_server_id integer,
354 calling_connection_server_id integer,
355 participant_index integer,
356 role text
357);
358
359CREATE SEQUENCE public.room_participants_id_seq
360 AS integer
361 START WITH 1
362 INCREMENT BY 1
363 NO MINVALUE
364 NO MAXVALUE
365 CACHE 1;
366
367ALTER SEQUENCE public.room_participants_id_seq OWNED BY public.room_participants.id;
368
369CREATE TABLE public.rooms (
370 id integer NOT NULL,
371 live_kit_room character varying NOT NULL,
372 channel_id integer
373);
374
375CREATE SEQUENCE public.rooms_id_seq
376 AS integer
377 START WITH 1
378 INCREMENT BY 1
379 NO MINVALUE
380 NO MAXVALUE
381 CACHE 1;
382
383ALTER SEQUENCE public.rooms_id_seq OWNED BY public.rooms.id;
384
385CREATE TABLE public.servers (
386 id integer NOT NULL,
387 environment character varying NOT NULL
388);
389
390CREATE SEQUENCE public.servers_id_seq
391 AS integer
392 START WITH 1
393 INCREMENT BY 1
394 NO MINVALUE
395 NO MAXVALUE
396 CACHE 1;
397
398ALTER SEQUENCE public.servers_id_seq OWNED BY public.servers.id;
399
400CREATE TABLE public.shared_threads (
401 id uuid NOT NULL,
402 user_id integer NOT NULL,
403 title text NOT NULL,
404 data bytea NOT NULL,
405 created_at timestamp without time zone DEFAULT now() NOT NULL,
406 updated_at timestamp without time zone DEFAULT now() NOT NULL
407);
408
409CREATE TABLE public.users (
410 id integer NOT NULL,
411 github_login character varying,
412 admin boolean NOT NULL,
413 email_address character varying(255) DEFAULT NULL::character varying,
414 connected_once boolean DEFAULT false NOT NULL,
415 created_at timestamp without time zone DEFAULT now() NOT NULL,
416 github_user_id integer NOT NULL,
417 metrics_id uuid DEFAULT gen_random_uuid() NOT NULL,
418 accepted_tos_at timestamp without time zone,
419 github_user_created_at timestamp without time zone,
420 custom_llm_monthly_allowance_in_cents integer,
421 name text
422);
423
424CREATE SEQUENCE public.users_id_seq
425 AS integer
426 START WITH 1
427 INCREMENT BY 1
428 NO MINVALUE
429 NO MAXVALUE
430 CACHE 1;
431
432ALTER SEQUENCE public.users_id_seq OWNED BY public.users.id;
433
434CREATE TABLE public.worktree_diagnostic_summaries (
435 project_id integer NOT NULL,
436 worktree_id bigint NOT NULL,
437 path character varying NOT NULL,
438 language_server_id bigint NOT NULL,
439 error_count integer NOT NULL,
440 warning_count integer NOT NULL
441);
442
443CREATE TABLE public.worktree_entries (
444 project_id integer NOT NULL,
445 worktree_id bigint NOT NULL,
446 id bigint NOT NULL,
447 is_dir boolean NOT NULL,
448 path character varying NOT NULL,
449 inode bigint NOT NULL,
450 mtime_seconds bigint NOT NULL,
451 mtime_nanos integer NOT NULL,
452 is_symlink boolean DEFAULT false NOT NULL,
453 is_ignored boolean NOT NULL,
454 scan_id bigint,
455 is_deleted boolean,
456 git_status bigint,
457 is_external boolean DEFAULT false NOT NULL,
458 is_fifo boolean DEFAULT false NOT NULL,
459 canonical_path text,
460 is_hidden boolean DEFAULT false NOT NULL
461);
462
463CREATE TABLE public.worktree_settings_files (
464 project_id integer NOT NULL,
465 worktree_id bigint NOT NULL,
466 path character varying NOT NULL,
467 content text NOT NULL,
468 kind character varying,
469 outside_worktree boolean DEFAULT false NOT NULL
470);
471
472CREATE TABLE public.worktrees (
473 project_id integer NOT NULL,
474 id bigint NOT NULL,
475 root_name character varying NOT NULL,
476 abs_path character varying NOT NULL,
477 visible boolean NOT NULL,
478 scan_id bigint NOT NULL,
479 is_complete boolean DEFAULT false NOT NULL,
480 completed_scan_id bigint
481);
482
483ALTER TABLE ONLY public.breakpoints ALTER COLUMN id SET DEFAULT nextval('public.breakpoints_id_seq'::regclass);
484
485ALTER TABLE ONLY public.buffers ALTER COLUMN id SET DEFAULT nextval('public.buffers_id_seq'::regclass);
486
487ALTER TABLE ONLY public.channel_buffer_collaborators ALTER COLUMN id SET DEFAULT nextval('public.channel_buffer_collaborators_id_seq'::regclass);
488
489ALTER TABLE ONLY public.channel_chat_participants ALTER COLUMN id SET DEFAULT nextval('public.channel_chat_participants_id_seq'::regclass);
490
491ALTER TABLE ONLY public.channel_members ALTER COLUMN id SET DEFAULT nextval('public.channel_members_id_seq'::regclass);
492
493ALTER TABLE ONLY public.channels ALTER COLUMN id SET DEFAULT nextval('public.channels_id_seq'::regclass);
494
495ALTER TABLE ONLY public.contacts ALTER COLUMN id SET DEFAULT nextval('public.contacts_id_seq'::regclass);
496
497ALTER TABLE ONLY public.extensions ALTER COLUMN id SET DEFAULT nextval('public.extensions_id_seq'::regclass);
498
499ALTER TABLE ONLY public.followers ALTER COLUMN id SET DEFAULT nextval('public.followers_id_seq'::regclass);
500
501ALTER TABLE ONLY public.notification_kinds ALTER COLUMN id SET DEFAULT nextval('public.notification_kinds_id_seq'::regclass);
502
503ALTER TABLE ONLY public.notifications ALTER COLUMN id SET DEFAULT nextval('public.notifications_id_seq'::regclass);
504
505ALTER TABLE ONLY public.project_collaborators ALTER COLUMN id SET DEFAULT nextval('public.project_collaborators_id_seq'::regclass);
506
507ALTER TABLE ONLY public.projects ALTER COLUMN id SET DEFAULT nextval('public.projects_id_seq'::regclass);
508
509ALTER TABLE ONLY public.room_participants ALTER COLUMN id SET DEFAULT nextval('public.room_participants_id_seq'::regclass);
510
511ALTER TABLE ONLY public.rooms ALTER COLUMN id SET DEFAULT nextval('public.rooms_id_seq'::regclass);
512
513ALTER TABLE ONLY public.servers ALTER COLUMN id SET DEFAULT nextval('public.servers_id_seq'::regclass);
514
515ALTER TABLE ONLY public.users ALTER COLUMN id SET DEFAULT nextval('public.users_id_seq'::regclass);
516
517ALTER TABLE ONLY public.breakpoints
518 ADD CONSTRAINT breakpoints_pkey PRIMARY KEY (id);
519
520ALTER TABLE ONLY public.buffer_operations
521 ADD CONSTRAINT buffer_operations_pkey PRIMARY KEY (buffer_id, epoch, lamport_timestamp, replica_id);
522
523ALTER TABLE ONLY public.buffer_snapshots
524 ADD CONSTRAINT buffer_snapshots_pkey PRIMARY KEY (buffer_id, epoch);
525
526ALTER TABLE ONLY public.buffers
527 ADD CONSTRAINT buffers_pkey PRIMARY KEY (id);
528
529ALTER TABLE ONLY public.channel_buffer_collaborators
530 ADD CONSTRAINT channel_buffer_collaborators_pkey PRIMARY KEY (id);
531
532ALTER TABLE ONLY public.channel_chat_participants
533 ADD CONSTRAINT channel_chat_participants_pkey PRIMARY KEY (id);
534
535ALTER TABLE ONLY public.channel_members
536 ADD CONSTRAINT channel_members_pkey PRIMARY KEY (id);
537
538ALTER TABLE ONLY public.channels
539 ADD CONSTRAINT channels_pkey PRIMARY KEY (id);
540
541ALTER TABLE ONLY public.contacts
542 ADD CONSTRAINT contacts_pkey PRIMARY KEY (id);
543
544ALTER TABLE ONLY public.contributors
545 ADD CONSTRAINT contributors_pkey PRIMARY KEY (user_id);
546
547ALTER TABLE ONLY public.extension_versions
548 ADD CONSTRAINT extension_versions_pkey PRIMARY KEY (extension_id, version);
549
550ALTER TABLE ONLY public.extensions
551 ADD CONSTRAINT extensions_pkey PRIMARY KEY (id);
552
553ALTER TABLE ONLY public.followers
554 ADD CONSTRAINT followers_pkey PRIMARY KEY (id);
555
556ALTER TABLE ONLY public.language_servers
557 ADD CONSTRAINT language_servers_pkey PRIMARY KEY (project_id, id);
558
559ALTER TABLE ONLY public.notification_kinds
560 ADD CONSTRAINT notification_kinds_pkey PRIMARY KEY (id);
561
562ALTER TABLE ONLY public.notifications
563 ADD CONSTRAINT notifications_pkey PRIMARY KEY (id);
564
565ALTER TABLE ONLY public.observed_buffer_edits
566 ADD CONSTRAINT observed_buffer_edits_pkey PRIMARY KEY (user_id, buffer_id);
567
568ALTER TABLE ONLY public.project_collaborators
569 ADD CONSTRAINT project_collaborators_pkey PRIMARY KEY (id);
570
571ALTER TABLE ONLY public.project_repositories
572 ADD CONSTRAINT project_repositories_pkey PRIMARY KEY (project_id, id);
573
574ALTER TABLE ONLY public.project_repository_statuses
575 ADD CONSTRAINT project_repository_statuses_pkey PRIMARY KEY (project_id, repository_id, repo_path);
576
577ALTER TABLE ONLY public.projects
578 ADD CONSTRAINT projects_pkey PRIMARY KEY (id);
579
580ALTER TABLE ONLY public.room_participants
581 ADD CONSTRAINT room_participants_pkey PRIMARY KEY (id);
582
583ALTER TABLE ONLY public.rooms
584 ADD CONSTRAINT rooms_pkey PRIMARY KEY (id);
585
586ALTER TABLE ONLY public.servers
587 ADD CONSTRAINT servers_pkey PRIMARY KEY (id);
588
589ALTER TABLE ONLY public.shared_threads
590 ADD CONSTRAINT shared_threads_pkey PRIMARY KEY (id);
591
592ALTER TABLE ONLY public.users
593 ADD CONSTRAINT users_pkey PRIMARY KEY (id);
594
595ALTER TABLE ONLY public.worktree_diagnostic_summaries
596 ADD CONSTRAINT worktree_diagnostic_summaries_pkey PRIMARY KEY (project_id, worktree_id, path);
597
598ALTER TABLE ONLY public.worktree_entries
599 ADD CONSTRAINT worktree_entries_pkey PRIMARY KEY (project_id, worktree_id, id);
600
601ALTER TABLE ONLY public.worktree_settings_files
602 ADD CONSTRAINT worktree_settings_files_pkey PRIMARY KEY (project_id, worktree_id, path);
603
604ALTER TABLE ONLY public.worktrees
605 ADD CONSTRAINT worktrees_pkey PRIMARY KEY (project_id, id);
606
607CREATE INDEX idx_shared_threads_user_id ON public.shared_threads USING btree (user_id);
608
609CREATE INDEX index_breakpoints_on_project_id ON public.breakpoints USING btree (project_id);
610
611CREATE INDEX index_buffers_on_channel_id ON public.buffers USING btree (channel_id);
612
613CREATE INDEX index_channel_buffer_collaborators_on_channel_id ON public.channel_buffer_collaborators USING btree (channel_id);
614
615CREATE UNIQUE INDEX index_channel_buffer_collaborators_on_channel_id_and_replica_id ON public.channel_buffer_collaborators USING btree (channel_id, replica_id);
616
617CREATE UNIQUE INDEX index_channel_buffer_collaborators_on_channel_id_connection_id_ ON public.channel_buffer_collaborators USING btree (channel_id, connection_id, connection_server_id);
618
619CREATE INDEX index_channel_buffer_collaborators_on_connection_id ON public.channel_buffer_collaborators USING btree (connection_id);
620
621CREATE INDEX index_channel_buffer_collaborators_on_connection_server_id ON public.channel_buffer_collaborators USING btree (connection_server_id);
622
623CREATE INDEX index_channel_chat_participants_on_channel_id ON public.channel_chat_participants USING btree (channel_id);
624
625CREATE UNIQUE INDEX index_channel_members_on_channel_id_and_user_id ON public.channel_members USING btree (channel_id, user_id);
626
627CREATE INDEX index_channels_on_parent_path ON public.channels USING btree (parent_path text_pattern_ops);
628
629CREATE INDEX index_channels_on_parent_path_and_order ON public.channels USING btree (parent_path, channel_order);
630
631CREATE INDEX index_contacts_user_id_b ON public.contacts USING btree (user_id_b);
632
633CREATE UNIQUE INDEX index_contacts_user_ids ON public.contacts USING btree (user_id_a, user_id_b);
634
635CREATE UNIQUE INDEX index_extensions_external_id ON public.extensions USING btree (external_id);
636
637CREATE INDEX index_extensions_total_download_count ON public.extensions USING btree (total_download_count);
638
639CREATE UNIQUE INDEX index_followers_on_project_id_and_leader_connection_server_id_a ON public.followers USING btree (project_id, leader_connection_server_id, leader_connection_id, follower_connection_server_id, follower_connection_id);
640
641CREATE INDEX index_followers_on_room_id ON public.followers USING btree (room_id);
642
643CREATE INDEX index_language_servers_on_project_id ON public.language_servers USING btree (project_id);
644
645CREATE UNIQUE INDEX index_notification_kinds_on_name ON public.notification_kinds USING btree (name);
646
647CREATE INDEX index_notifications_on_recipient_id_is_read_kind_entity_id ON public.notifications USING btree (recipient_id, is_read, kind, entity_id);
648
649CREATE UNIQUE INDEX index_observed_buffer_user_and_buffer_id ON public.observed_buffer_edits USING btree (user_id, buffer_id);
650
651CREATE INDEX index_project_collaborators_on_connection_id ON public.project_collaborators USING btree (connection_id);
652
653CREATE INDEX index_project_collaborators_on_connection_server_id ON public.project_collaborators USING btree (connection_server_id);
654
655CREATE INDEX index_project_collaborators_on_project_id ON public.project_collaborators USING btree (project_id);
656
657CREATE UNIQUE INDEX index_project_collaborators_on_project_id_and_replica_id ON public.project_collaborators USING btree (project_id, replica_id);
658
659CREATE UNIQUE INDEX index_project_collaborators_on_project_id_connection_id_and_ser ON public.project_collaborators USING btree (project_id, connection_id, connection_server_id);
660
661CREATE INDEX index_project_repos_statuses_on_project_id ON public.project_repository_statuses USING btree (project_id);
662
663CREATE INDEX index_project_repos_statuses_on_project_id_and_repo_id ON public.project_repository_statuses USING btree (project_id, repository_id);
664
665CREATE INDEX index_project_repositories_on_project_id ON public.project_repositories USING btree (project_id);
666
667CREATE INDEX index_projects_on_host_connection_id_and_host_connection_server ON public.projects USING btree (host_connection_id, host_connection_server_id);
668
669CREATE INDEX index_projects_on_host_connection_server_id ON public.projects USING btree (host_connection_server_id);
670
671CREATE INDEX index_room_participants_on_answering_connection_id ON public.room_participants USING btree (answering_connection_id);
672
673CREATE UNIQUE INDEX index_room_participants_on_answering_connection_id_and_answerin ON public.room_participants USING btree (answering_connection_id, answering_connection_server_id);
674
675CREATE INDEX index_room_participants_on_answering_connection_server_id ON public.room_participants USING btree (answering_connection_server_id);
676
677CREATE INDEX index_room_participants_on_calling_connection_server_id ON public.room_participants USING btree (calling_connection_server_id);
678
679CREATE INDEX index_room_participants_on_room_id ON public.room_participants USING btree (room_id);
680
681CREATE UNIQUE INDEX index_room_participants_on_user_id ON public.room_participants USING btree (user_id);
682
683CREATE UNIQUE INDEX index_rooms_on_channel_id ON public.rooms USING btree (channel_id);
684
685CREATE INDEX index_settings_files_on_project_id ON public.worktree_settings_files USING btree (project_id);
686
687CREATE INDEX index_settings_files_on_project_id_and_wt_id ON public.worktree_settings_files USING btree (project_id, worktree_id);
688
689CREATE UNIQUE INDEX index_users_github_login ON public.users USING btree (github_login);
690
691CREATE INDEX index_users_on_email_address ON public.users USING btree (email_address);
692
693CREATE INDEX index_worktree_diagnostic_summaries_on_project_id ON public.worktree_diagnostic_summaries USING btree (project_id);
694
695CREATE INDEX index_worktree_diagnostic_summaries_on_project_id_and_worktree_ ON public.worktree_diagnostic_summaries USING btree (project_id, worktree_id);
696
697CREATE INDEX index_worktree_entries_on_project_id ON public.worktree_entries USING btree (project_id);
698
699CREATE INDEX index_worktree_entries_on_project_id_and_worktree_id ON public.worktree_entries USING btree (project_id, worktree_id);
700
701CREATE INDEX index_worktrees_on_project_id ON public.worktrees USING btree (project_id);
702
703CREATE INDEX trigram_index_extensions_name ON public.extensions USING gin (name public.gin_trgm_ops);
704
705CREATE INDEX trigram_index_users_on_github_login ON public.users USING gin (github_login public.gin_trgm_ops);
706
707CREATE UNIQUE INDEX uix_channels_parent_path_name ON public.channels USING btree (parent_path, name) WHERE ((parent_path IS NOT NULL) AND (parent_path <> ''::text));
708
709CREATE UNIQUE INDEX uix_users_on_github_user_id ON public.users USING btree (github_user_id);
710
711ALTER TABLE ONLY public.breakpoints
712 ADD CONSTRAINT breakpoints_project_id_fkey FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE;
713
714ALTER TABLE ONLY public.buffer_operations
715 ADD CONSTRAINT buffer_operations_buffer_id_fkey FOREIGN KEY (buffer_id) REFERENCES public.buffers(id) ON DELETE CASCADE;
716
717ALTER TABLE ONLY public.buffer_snapshots
718 ADD CONSTRAINT buffer_snapshots_buffer_id_fkey FOREIGN KEY (buffer_id) REFERENCES public.buffers(id) ON DELETE CASCADE;
719
720ALTER TABLE ONLY public.buffers
721 ADD CONSTRAINT buffers_channel_id_fkey FOREIGN KEY (channel_id) REFERENCES public.channels(id) ON DELETE CASCADE;
722
723ALTER TABLE ONLY public.channel_buffer_collaborators
724 ADD CONSTRAINT channel_buffer_collaborators_channel_id_fkey FOREIGN KEY (channel_id) REFERENCES public.channels(id) ON DELETE CASCADE;
725
726ALTER TABLE ONLY public.channel_buffer_collaborators
727 ADD CONSTRAINT channel_buffer_collaborators_connection_server_id_fkey FOREIGN KEY (connection_server_id) REFERENCES public.servers(id) ON DELETE CASCADE;
728
729ALTER TABLE ONLY public.channel_buffer_collaborators
730 ADD CONSTRAINT channel_buffer_collaborators_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
731
732ALTER TABLE ONLY public.channel_chat_participants
733 ADD CONSTRAINT channel_chat_participants_channel_id_fkey FOREIGN KEY (channel_id) REFERENCES public.channels(id) ON DELETE CASCADE;
734
735ALTER TABLE ONLY public.channel_chat_participants
736 ADD CONSTRAINT channel_chat_participants_connection_server_id_fkey FOREIGN KEY (connection_server_id) REFERENCES public.servers(id) ON DELETE CASCADE;
737
738ALTER TABLE ONLY public.channel_chat_participants
739 ADD CONSTRAINT channel_chat_participants_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id);
740
741ALTER TABLE ONLY public.channel_members
742 ADD CONSTRAINT channel_members_channel_id_fkey FOREIGN KEY (channel_id) REFERENCES public.channels(id) ON DELETE CASCADE;
743
744ALTER TABLE ONLY public.channel_members
745 ADD CONSTRAINT channel_members_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
746
747ALTER TABLE ONLY public.contacts
748 ADD CONSTRAINT contacts_user_id_a_fkey FOREIGN KEY (user_id_a) REFERENCES public.users(id) ON DELETE CASCADE;
749
750ALTER TABLE ONLY public.contacts
751 ADD CONSTRAINT contacts_user_id_b_fkey FOREIGN KEY (user_id_b) REFERENCES public.users(id) ON DELETE CASCADE;
752
753ALTER TABLE ONLY public.contributors
754 ADD CONSTRAINT contributors_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id);
755
756ALTER TABLE ONLY public.extension_versions
757 ADD CONSTRAINT extension_versions_extension_id_fkey FOREIGN KEY (extension_id) REFERENCES public.extensions(id);
758
759ALTER TABLE ONLY public.project_repositories
760 ADD CONSTRAINT fk_project_repositories_project_id FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE;
761
762ALTER TABLE ONLY public.project_repository_statuses
763 ADD CONSTRAINT fk_project_repository_statuses_project_id FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE;
764
765ALTER TABLE ONLY public.followers
766 ADD CONSTRAINT followers_follower_connection_server_id_fkey FOREIGN KEY (follower_connection_server_id) REFERENCES public.servers(id) ON DELETE CASCADE;
767
768ALTER TABLE ONLY public.followers
769 ADD CONSTRAINT followers_leader_connection_server_id_fkey FOREIGN KEY (leader_connection_server_id) REFERENCES public.servers(id) ON DELETE CASCADE;
770
771ALTER TABLE ONLY public.followers
772 ADD CONSTRAINT followers_project_id_fkey FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE;
773
774ALTER TABLE ONLY public.followers
775 ADD CONSTRAINT followers_room_id_fkey FOREIGN KEY (room_id) REFERENCES public.rooms(id) ON DELETE CASCADE;
776
777ALTER TABLE ONLY public.language_servers
778 ADD CONSTRAINT language_servers_project_id_fkey FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE;
779
780ALTER TABLE ONLY public.notifications
781 ADD CONSTRAINT notifications_kind_fkey FOREIGN KEY (kind) REFERENCES public.notification_kinds(id);
782
783ALTER TABLE ONLY public.notifications
784 ADD CONSTRAINT notifications_recipient_id_fkey FOREIGN KEY (recipient_id) REFERENCES public.users(id) ON DELETE CASCADE;
785
786ALTER TABLE ONLY public.observed_buffer_edits
787 ADD CONSTRAINT observed_buffer_edits_buffer_id_fkey FOREIGN KEY (buffer_id) REFERENCES public.buffers(id) ON DELETE CASCADE;
788
789ALTER TABLE ONLY public.observed_buffer_edits
790 ADD CONSTRAINT observed_buffer_edits_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
791
792ALTER TABLE ONLY public.project_collaborators
793 ADD CONSTRAINT project_collaborators_connection_server_id_fkey FOREIGN KEY (connection_server_id) REFERENCES public.servers(id) ON DELETE CASCADE;
794
795ALTER TABLE ONLY public.project_collaborators
796 ADD CONSTRAINT project_collaborators_project_id_fkey FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE;
797
798ALTER TABLE ONLY public.projects
799 ADD CONSTRAINT projects_host_connection_server_id_fkey FOREIGN KEY (host_connection_server_id) REFERENCES public.servers(id) ON DELETE CASCADE;
800
801ALTER TABLE ONLY public.projects
802 ADD CONSTRAINT projects_host_user_id_fkey FOREIGN KEY (host_user_id) REFERENCES public.users(id);
803
804ALTER TABLE ONLY public.projects
805 ADD CONSTRAINT projects_room_id_fkey FOREIGN KEY (room_id) REFERENCES public.rooms(id) ON DELETE CASCADE;
806
807ALTER TABLE ONLY public.room_participants
808 ADD CONSTRAINT room_participants_answering_connection_server_id_fkey FOREIGN KEY (answering_connection_server_id) REFERENCES public.servers(id) ON DELETE CASCADE;
809
810ALTER TABLE ONLY public.room_participants
811 ADD CONSTRAINT room_participants_calling_connection_server_id_fkey FOREIGN KEY (calling_connection_server_id) REFERENCES public.servers(id) ON DELETE SET NULL;
812
813ALTER TABLE ONLY public.room_participants
814 ADD CONSTRAINT room_participants_calling_user_id_fkey FOREIGN KEY (calling_user_id) REFERENCES public.users(id);
815
816ALTER TABLE ONLY public.room_participants
817 ADD CONSTRAINT room_participants_room_id_fkey FOREIGN KEY (room_id) REFERENCES public.rooms(id);
818
819ALTER TABLE ONLY public.room_participants
820 ADD CONSTRAINT room_participants_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id);
821
822ALTER TABLE ONLY public.rooms
823 ADD CONSTRAINT rooms_channel_id_fkey FOREIGN KEY (channel_id) REFERENCES public.channels(id) ON DELETE CASCADE;
824
825ALTER TABLE ONLY public.shared_threads
826 ADD CONSTRAINT shared_threads_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
827
828ALTER TABLE ONLY public.worktree_diagnostic_summaries
829 ADD CONSTRAINT worktree_diagnostic_summaries_project_id_worktree_id_fkey FOREIGN KEY (project_id, worktree_id) REFERENCES public.worktrees(project_id, id) ON DELETE CASCADE;
830
831ALTER TABLE ONLY public.worktree_entries
832 ADD CONSTRAINT worktree_entries_project_id_worktree_id_fkey FOREIGN KEY (project_id, worktree_id) REFERENCES public.worktrees(project_id, id) ON DELETE CASCADE;
833
834ALTER TABLE ONLY public.worktree_settings_files
835 ADD CONSTRAINT worktree_settings_files_project_id_worktree_id_fkey FOREIGN KEY (project_id, worktree_id) REFERENCES public.worktrees(project_id, id) ON DELETE CASCADE;
836
837ALTER TABLE ONLY public.worktrees
838 ADD CONSTRAINT worktrees_project_id_fkey FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE;