@@ -72,111 +72,111 @@ pub fn update_search_index(conn: &Connection) -> Result<u64, Error> {
72
72
73
73
/// Creates database tables
74
74
pub fn create_tables ( conn : & Connection ) -> Result < ( ) , Error > {
75
- let queries = [ "CREATE TABLE crates ( \
76
- id SERIAL PRIMARY KEY, \
77
- name VARCHAR(255) UNIQUE NOT NULL, \
78
- latest_version_id INT DEFAULT 0, \
79
- versions JSON DEFAULT '[]', \
80
- downloads_total INT DEFAULT 0, \
81
- github_description VARCHAR(1024), \
82
- github_stars INT DEFAULT 0, \
83
- github_forks INT DEFAULT 0, \
84
- github_issues INT DEFAULT 0, \
85
- github_last_commit TIMESTAMP, \
86
- github_last_update TIMESTAMP, \
87
- content tsvector \
88
- )",
89
- "CREATE TABLE releases ( \
90
- id SERIAL PRIMARY KEY, \
91
- crate_id INT NOT NULL REFERENCES crates(id), \
92
- version VARCHAR(100), \
93
- release_time TIMESTAMP, \
94
- dependencies JSON, \
95
- target_name VARCHAR(255), \
96
- yanked BOOL DEFAULT FALSE, \
97
- is_library BOOL DEFAULT TRUE, \
98
- build_status BOOL DEFAULT FALSE, \
99
- rustdoc_status BOOL DEFAULT FALSE, \
100
- test_status BOOL DEFAULT FALSE, \
101
- license VARCHAR(100), \
102
- repository_url VARCHAR(255), \
103
- homepage_url VARCHAR(255), \
104
- documentation_url VARCHAR(255), \
105
- description VARCHAR(1024), \
106
- description_long VARCHAR(51200), \
107
- readme VARCHAR(51200), \
108
- authors JSON, \
109
- keywords JSON, \
110
- have_examples BOOL DEFAULT FALSE, \
111
- downloads INT DEFAULT 0, \
112
- files JSON, \
113
- doc_targets JSON DEFAULT '[]', \
114
- doc_rustc_version VARCHAR(100) NOT NULL, \
115
- UNIQUE (crate_id, version) \
116
- )",
117
- "CREATE TABLE authors ( \
118
- id SERIAL PRIMARY KEY, \
119
- name VARCHAR(255), \
120
- email VARCHAR(255), \
121
- slug VARCHAR(255) UNIQUE NOT NULL \
122
- )",
123
- "CREATE TABLE author_rels ( \
124
- rid INT REFERENCES releases(id), \
125
- aid INT REFERENCES authors(id), \
126
- UNIQUE(rid, aid) \
127
- )",
128
- "CREATE TABLE keywords ( \
129
- id SERIAL PRIMARY KEY, \
130
- name VARCHAR(255), \
131
- slug VARCHAR(255) NOT NULL UNIQUE \
132
- )",
133
- "CREATE TABLE keyword_rels ( \
134
- rid INT REFERENCES releases(id), \
135
- kid INT REFERENCES keywords(id), \
136
- UNIQUE(rid, kid) \
137
- )",
138
- "CREATE TABLE owners ( \
139
- id SERIAL PRIMARY KEY, \
140
- login VARCHAR(255) NOT NULL UNIQUE, \
141
- avatar VARCHAR(255), \
142
- name VARCHAR(255), \
143
- email VARCHAR(255) \
144
- )",
145
- "CREATE TABLE owner_rels ( \
146
- cid INT REFERENCES releases(id), \
147
- oid INT REFERENCES owners(id), \
148
- UNIQUE(cid, oid) \
149
- )",
150
- "CREATE TABLE builds ( \
151
- id SERIAL, \
152
- rid INT NOT NULL REFERENCES releases(id), \
153
- rustc_version VARCHAR(100) NOT NULL, \
154
- cratesfyi_version VARCHAR(100) NOT NULL, \
155
- build_status BOOL NOT NULL, \
156
- build_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, \
157
- output TEXT \
158
- )",
159
- "CREATE TABLE queue ( \
160
- id SERIAL, \
161
- name VARCHAR(255), \
162
- version VARCHAR(100), \
163
- attempt INT DEFAULT 0, \
164
- date_added TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, \
165
- UNIQUE(name, version) \
166
- )",
167
- "CREATE TABLE files ( \
168
- path VARCHAR(4096) NOT NULL PRIMARY KEY, \
169
- mime VARCHAR(100) NOT NULL, \
170
- date_added TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, \
171
- date_updated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, \
172
- content BYTEA \
173
- )",
75
+ let queries = [ "CREATE TABLE crates (
76
+ id SERIAL PRIMARY KEY,
77
+ name VARCHAR(255) UNIQUE NOT NULL,
78
+ latest_version_id INT DEFAULT 0,
79
+ versions JSON DEFAULT '[]',
80
+ downloads_total INT DEFAULT 0,
81
+ github_description VARCHAR(1024),
82
+ github_stars INT DEFAULT 0,
83
+ github_forks INT DEFAULT 0,
84
+ github_issues INT DEFAULT 0,
85
+ github_last_commit TIMESTAMP,
86
+ github_last_update TIMESTAMP,
87
+ content tsvector
88
+ )" ,
89
+ "CREATE TABLE releases (
90
+ id SERIAL PRIMARY KEY,
91
+ crate_id INT NOT NULL REFERENCES crates(id),
92
+ version VARCHAR(100),
93
+ release_time TIMESTAMP,
94
+ dependencies JSON,
95
+ target_name VARCHAR(255),
96
+ yanked BOOL DEFAULT FALSE,
97
+ is_library BOOL DEFAULT TRUE,
98
+ build_status BOOL DEFAULT FALSE,
99
+ rustdoc_status BOOL DEFAULT FALSE,
100
+ test_status BOOL DEFAULT FALSE,
101
+ license VARCHAR(100),
102
+ repository_url VARCHAR(255),
103
+ homepage_url VARCHAR(255),
104
+ documentation_url VARCHAR(255),
105
+ description VARCHAR(1024),
106
+ description_long VARCHAR(51200),
107
+ readme VARCHAR(51200),
108
+ authors JSON,
109
+ keywords JSON,
110
+ have_examples BOOL DEFAULT FALSE,
111
+ downloads INT DEFAULT 0,
112
+ files JSON,
113
+ doc_targets JSON DEFAULT '[]',
114
+ doc_rustc_version VARCHAR(100) NOT NULL,
115
+ UNIQUE (crate_id, version)
116
+ )" ,
117
+ "CREATE TABLE authors (
118
+ id SERIAL PRIMARY KEY,
119
+ name VARCHAR(255),
120
+ email VARCHAR(255),
121
+ slug VARCHAR(255) UNIQUE NOT NULL
122
+ )" ,
123
+ "CREATE TABLE author_rels (
124
+ rid INT REFERENCES releases(id),
125
+ aid INT REFERENCES authors(id),
126
+ UNIQUE(rid, aid)
127
+ )" ,
128
+ "CREATE TABLE keywords (
129
+ id SERIAL PRIMARY KEY,
130
+ name VARCHAR(255),
131
+ slug VARCHAR(255) NOT NULL UNIQUE
132
+ )" ,
133
+ "CREATE TABLE keyword_rels (
134
+ rid INT REFERENCES releases(id),
135
+ kid INT REFERENCES keywords(id),
136
+ UNIQUE(rid, kid)
137
+ )" ,
138
+ "CREATE TABLE owners (
139
+ id SERIAL PRIMARY KEY,
140
+ login VARCHAR(255) NOT NULL UNIQUE,
141
+ avatar VARCHAR(255),
142
+ name VARCHAR(255),
143
+ email VARCHAR(255)
144
+ )" ,
145
+ "CREATE TABLE owner_rels (
146
+ cid INT REFERENCES releases(id),
147
+ oid INT REFERENCES owners(id),
148
+ UNIQUE(cid, oid)
149
+ )" ,
150
+ "CREATE TABLE builds (
151
+ id SERIAL,
152
+ rid INT NOT NULL REFERENCES releases(id),
153
+ rustc_version VARCHAR(100) NOT NULL,
154
+ cratesfyi_version VARCHAR(100) NOT NULL,
155
+ build_status BOOL NOT NULL,
156
+ build_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
157
+ output TEXT
158
+ )" ,
159
+ "CREATE TABLE queue (
160
+ id SERIAL,
161
+ name VARCHAR(255),
162
+ version VARCHAR(100),
163
+ attempt INT DEFAULT 0,
164
+ date_added TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
165
+ UNIQUE(name, version)
166
+ )" ,
167
+ "CREATE TABLE files (
168
+ path VARCHAR(4096) NOT NULL PRIMARY KEY,
169
+ mime VARCHAR(100) NOT NULL,
170
+ date_added TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
171
+ date_updated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
172
+ content BYTEA
173
+ )" ,
174
174
"CREATE INDEX ON releases (release_time DESC)" ,
175
175
"CREATE INDEX content_idx ON crates USING gin(content)" ,
176
- "CREATE TABLE config ( \
177
- name VARCHAR(100) NOT NULL PRIMARY KEY, \
178
- value JSON NOT NULL \
179
- )",
176
+ "CREATE TABLE config (
177
+ name VARCHAR(100) NOT NULL PRIMARY KEY,
178
+ value JSON NOT NULL
179
+ )" ,
180
180
"INSERT INTO config VALUES ('database_version', '1'::json)" ] ;
181
181
182
182
for query in queries. into_iter ( ) {
0 commit comments