forked from rust-lang/docs.rs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path20231021111635_initial.up.sql
539 lines (287 loc) · 10.6 KB
/
20231021111635_initial.up.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
-- generated via:
-- `pg_dump --schema-only --no-owner cratesfyi`
--
-- and then manually removing
-- * the `public.` schema references from this file, so it also works for the test setup
-- * the `SET` settings
CREATE SCHEMA IF NOT EXISTS public;
CREATE EXTENSION IF NOT EXISTS fuzzystrmatch;
COMMENT ON EXTENSION fuzzystrmatch IS 'determine similarities and distance between strings';
CREATE TYPE feature AS (
name text,
subfeatures text[]
);
CREATE FUNCTION normalize_crate_name(character varying) RETURNS character varying
LANGUAGE sql
AS $_$
SELECT LOWER(REPLACE($1, '_', '-'));
$_$;
CREATE TABLE blacklisted_crates (
crate_name character varying NOT NULL
);
CREATE TABLE builds (
id integer NOT NULL,
rid integer NOT NULL,
rustc_version character varying(100) NOT NULL,
docsrs_version character varying(100) NOT NULL,
build_status boolean NOT NULL,
build_time timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
output text,
build_server text DEFAULT ''::text NOT NULL
);
CREATE SEQUENCE builds_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE builds_id_seq OWNED BY builds.id;
CREATE TABLE cdn_invalidation_queue (
id bigint NOT NULL,
crate character varying(255) NOT NULL,
cdn_distribution_id character varying(255) NOT NULL,
path_pattern text NOT NULL,
queued timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
created_in_cdn timestamp with time zone,
cdn_reference character varying(255)
);
CREATE SEQUENCE cdn_invalidation_queue_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE cdn_invalidation_queue_id_seq OWNED BY cdn_invalidation_queue.id;
CREATE TABLE compression_rels (
release integer NOT NULL,
algorithm integer
);
CREATE TABLE config (
name character varying(100) NOT NULL,
value json NOT NULL
);
CREATE TABLE crate_priorities (
pattern character varying NOT NULL,
priority integer NOT NULL
);
CREATE TABLE crates (
id integer NOT NULL,
name character varying(255) NOT NULL,
latest_version_id integer DEFAULT 0,
downloads_total integer DEFAULT 0
);
CREATE SEQUENCE crates_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE crates_id_seq OWNED BY crates.id;
CREATE TABLE doc_coverage (
release_id integer NOT NULL,
total_items integer,
documented_items integer,
total_items_needing_examples integer,
items_with_examples integer
);
CREATE TABLE files (
path character varying(4096) NOT NULL,
mime character varying(100) NOT NULL,
date_updated timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
content bytea,
compression integer,
public boolean DEFAULT false NOT NULL
);
CREATE TABLE keyword_rels (
rid integer,
kid integer
);
CREATE TABLE keywords (
id integer NOT NULL,
name character varying(255),
slug character varying(255) NOT NULL
);
CREATE SEQUENCE keywords_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE keywords_id_seq OWNED BY keywords.id;
CREATE TABLE owner_rels (
cid integer,
oid integer
);
CREATE TABLE owners (
id integer NOT NULL,
login character varying(255) NOT NULL,
avatar character varying(255) NOT NULL
);
CREATE SEQUENCE owners_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE owners_id_seq OWNED BY owners.id;
CREATE TABLE queue (
id integer NOT NULL,
name character varying(255) NOT NULL,
version character varying(100) NOT NULL,
attempt integer DEFAULT 0 NOT NULL,
priority integer DEFAULT 0 NOT NULL,
registry text,
last_attempt timestamp with time zone
);
CREATE SEQUENCE queue_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE queue_id_seq OWNED BY queue.id;
CREATE TABLE releases (
id integer NOT NULL,
crate_id integer NOT NULL,
version character varying(100) NOT NULL,
release_time timestamp with time zone NOT NULL,
dependencies json,
target_name character varying(255) NOT NULL,
yanked boolean DEFAULT false NOT NULL,
is_library boolean DEFAULT true NOT NULL,
build_status boolean DEFAULT false NOT NULL,
rustdoc_status boolean DEFAULT false NOT NULL,
test_status boolean DEFAULT false,
license character varying(100),
repository_url character varying(255),
homepage_url character varying(255),
documentation_url character varying(255),
description character varying(1024),
description_long character varying(51200),
readme character varying(51200),
keywords json,
have_examples boolean DEFAULT false NOT NULL,
downloads integer DEFAULT 0 NOT NULL,
files json,
doc_targets json DEFAULT '[]'::json NOT NULL,
doc_rustc_version character varying(100) NOT NULL,
default_target character varying(100) NOT NULL,
features feature[],
repository_id integer,
archive_storage boolean DEFAULT false NOT NULL
);
CREATE SEQUENCE releases_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE releases_id_seq OWNED BY releases.id;
CREATE TABLE repositories (
id integer NOT NULL,
host character varying NOT NULL,
host_id character varying NOT NULL,
name character varying NOT NULL,
description character varying,
last_commit timestamp with time zone,
stars integer NOT NULL,
forks integer NOT NULL,
issues integer NOT NULL,
updated_at timestamp with time zone NOT NULL
);
CREATE SEQUENCE repositories_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE repositories_id_seq OWNED BY repositories.id;
CREATE TABLE sandbox_overrides (
crate_name character varying NOT NULL,
max_memory_bytes bigint,
timeout_seconds integer,
max_targets integer
);
ALTER TABLE ONLY builds ALTER COLUMN id SET DEFAULT nextval('builds_id_seq'::regclass);
ALTER TABLE ONLY cdn_invalidation_queue ALTER COLUMN id SET DEFAULT nextval('cdn_invalidation_queue_id_seq'::regclass);
ALTER TABLE ONLY crates ALTER COLUMN id SET DEFAULT nextval('crates_id_seq'::regclass);
ALTER TABLE ONLY keywords ALTER COLUMN id SET DEFAULT nextval('keywords_id_seq'::regclass);
ALTER TABLE ONLY owners ALTER COLUMN id SET DEFAULT nextval('owners_id_seq'::regclass);
ALTER TABLE ONLY queue ALTER COLUMN id SET DEFAULT nextval('queue_id_seq'::regclass);
ALTER TABLE ONLY releases ALTER COLUMN id SET DEFAULT nextval('releases_id_seq'::regclass);
ALTER TABLE ONLY repositories ALTER COLUMN id SET DEFAULT nextval('repositories_id_seq'::regclass);
ALTER TABLE ONLY blacklisted_crates
ADD CONSTRAINT blacklisted_crates_pkey PRIMARY KEY (crate_name);
ALTER TABLE ONLY compression_rels
ADD CONSTRAINT compression_rels_release_algorithm_key UNIQUE (release, algorithm);
ALTER TABLE ONLY config
ADD CONSTRAINT config_pkey PRIMARY KEY (name);
ALTER TABLE ONLY crate_priorities
ADD CONSTRAINT crate_priorities_pattern_key UNIQUE (pattern);
ALTER TABLE ONLY crates
ADD CONSTRAINT crates_name_key UNIQUE (name);
ALTER TABLE ONLY crates
ADD CONSTRAINT crates_pkey PRIMARY KEY (id);
ALTER TABLE ONLY doc_coverage
ADD CONSTRAINT doc_coverage_release_id_key UNIQUE (release_id);
ALTER TABLE ONLY files
ADD CONSTRAINT files_pkey PRIMARY KEY (path);
ALTER TABLE ONLY keyword_rels
ADD CONSTRAINT keyword_rels_rid_kid_key UNIQUE (rid, kid);
ALTER TABLE ONLY keywords
ADD CONSTRAINT keywords_pkey PRIMARY KEY (id);
ALTER TABLE ONLY keywords
ADD CONSTRAINT keywords_slug_key UNIQUE (slug);
ALTER TABLE ONLY owner_rels
ADD CONSTRAINT owner_rels_cid_oid_key UNIQUE (cid, oid);
ALTER TABLE ONLY owners
ADD CONSTRAINT owners_login_key UNIQUE (login);
ALTER TABLE ONLY owners
ADD CONSTRAINT owners_pkey PRIMARY KEY (id);
ALTER TABLE ONLY queue
ADD CONSTRAINT queue_name_version_key UNIQUE (name, version);
ALTER TABLE ONLY releases
ADD CONSTRAINT releases_crate_id_version_key UNIQUE (crate_id, version);
ALTER TABLE ONLY releases
ADD CONSTRAINT releases_pkey PRIMARY KEY (id);
ALTER TABLE ONLY repositories
ADD CONSTRAINT repositories_host_host_id_key UNIQUE (host, host_id);
ALTER TABLE ONLY repositories
ADD CONSTRAINT repositories_pkey PRIMARY KEY (id);
ALTER TABLE ONLY sandbox_overrides
ADD CONSTRAINT sandbox_overrides_pkey PRIMARY KEY (crate_name);
CREATE INDEX builds_build_time_idx ON builds USING btree (build_time DESC);
CREATE INDEX builds_release_id_idx ON builds USING btree (rid);
CREATE INDEX cdn_invalidation_queue_cdn_reference_idx ON cdn_invalidation_queue USING btree (cdn_reference);
CREATE INDEX cdn_invalidation_queue_crate_idx ON cdn_invalidation_queue USING btree (crate);
CREATE INDEX cdn_invalidation_queue_created_in_cdn_idx ON cdn_invalidation_queue USING btree (created_in_cdn);
CREATE INDEX crates_latest_version_idx ON crates USING btree (latest_version_id);
CREATE UNIQUE INDEX crates_normalized_name_idx ON crates USING btree (normalize_crate_name(name));
CREATE INDEX releases_release_time_idx ON releases USING btree (release_time DESC);
CREATE INDEX releases_repo_idx ON releases USING btree (repository_id);
CREATE INDEX repos_stars_idx ON repositories USING btree (stars DESC);
ALTER TABLE ONLY builds
ADD CONSTRAINT builds_rid_fkey FOREIGN KEY (rid) REFERENCES releases(id);
ALTER TABLE ONLY compression_rels
ADD CONSTRAINT compression_rels_release_fkey FOREIGN KEY (release) REFERENCES releases(id);
ALTER TABLE ONLY doc_coverage
ADD CONSTRAINT doc_coverage_release_id_fkey FOREIGN KEY (release_id) REFERENCES releases(id);
ALTER TABLE ONLY keyword_rels
ADD CONSTRAINT keyword_rels_kid_fkey FOREIGN KEY (kid) REFERENCES keywords(id);
ALTER TABLE ONLY keyword_rels
ADD CONSTRAINT keyword_rels_rid_fkey FOREIGN KEY (rid) REFERENCES releases(id);
ALTER TABLE ONLY owner_rels
ADD CONSTRAINT owner_rels_cid_fkey FOREIGN KEY (cid) REFERENCES crates(id);
ALTER TABLE ONLY owner_rels
ADD CONSTRAINT owner_rels_oid_fkey FOREIGN KEY (oid) REFERENCES owners(id);
ALTER TABLE ONLY releases
ADD CONSTRAINT releases_crate_id_fkey FOREIGN KEY (crate_id) REFERENCES crates(id);
ALTER TABLE ONLY releases
ADD CONSTRAINT releases_repository_id_fkey FOREIGN KEY (repository_id) REFERENCES repositories(id) ON DELETE SET NULL;