@@ -25,8 +25,8 @@ pub fn summary(req: &mut dyn RequestExt) -> EndpointResult {
25
25
use crate :: schema:: crates:: dsl:: * ;
26
26
27
27
let conn = req. db_read_only ( ) ?;
28
- let num_crates = crates. count ( ) . get_result ( & * conn) ?;
29
- let num_downloads = metadata:: table
28
+ let num_crates: i64 = crates. count ( ) . get_result ( & * conn) ?;
29
+ let num_downloads: i64 = metadata:: table
30
30
. select ( metadata:: total_downloads)
31
31
. get_result ( & * conn) ?;
32
32
@@ -89,34 +89,23 @@ pub fn summary(req: &mut dyn RequestExt) -> EndpointResult {
89
89
. load ( & * conn) ?
90
90
. into_iter ( )
91
91
. map ( Keyword :: into)
92
- . collect ( ) ;
92
+ . collect :: < Vec < EncodableKeyword > > ( ) ;
93
93
94
94
let popular_categories = Category :: toplevel ( & conn, "crates" , 10 , 0 ) ?
95
95
. into_iter ( )
96
96
. map ( Category :: into)
97
- . collect ( ) ;
98
-
99
- #[ derive( Serialize ) ]
100
- struct R {
101
- num_downloads : i64 ,
102
- num_crates : i64 ,
103
- new_crates : Vec < EncodableCrate > ,
104
- most_downloaded : Vec < EncodableCrate > ,
105
- most_recently_downloaded : Vec < EncodableCrate > ,
106
- just_updated : Vec < EncodableCrate > ,
107
- popular_keywords : Vec < EncodableKeyword > ,
108
- popular_categories : Vec < EncodableCategory > ,
109
- }
110
- Ok ( req. json ( & R {
111
- num_downloads,
112
- num_crates,
113
- new_crates : encode_crates ( new_crates) ?,
114
- most_downloaded : encode_crates ( most_downloaded) ?,
115
- most_recently_downloaded : encode_crates ( most_recently_downloaded) ?,
116
- just_updated : encode_crates ( just_updated) ?,
117
- popular_keywords,
118
- popular_categories,
119
- } ) )
97
+ . collect :: < Vec < EncodableCategory > > ( ) ;
98
+
99
+ Ok ( req. json ( & json ! ( {
100
+ "num_downloads" : num_downloads,
101
+ "num_crates" : num_crates,
102
+ "new_crates" : encode_crates( new_crates) ?,
103
+ "most_downloaded" : encode_crates( most_downloaded) ?,
104
+ "most_recently_downloaded" : encode_crates( most_recently_downloaded) ?,
105
+ "just_updated" : encode_crates( just_updated) ?,
106
+ "popular_keywords" : popular_keywords,
107
+ "popular_categories" : popular_categories,
108
+ } ) ) )
120
109
}
121
110
122
111
/// Handles the `GET /crates/:crate_id` route.
@@ -167,16 +156,8 @@ pub fn show(req: &mut dyn RequestExt) -> EndpointResult {
167
156
. load ( & * conn) ?;
168
157
let top_versions = krate. top_versions ( & conn) ?;
169
158
170
- #[ derive( Serialize ) ]
171
- struct R {
172
- #[ serde( rename = "crate" ) ]
173
- krate : EncodableCrate ,
174
- versions : Vec < EncodableVersion > ,
175
- keywords : Vec < EncodableKeyword > ,
176
- categories : Vec < EncodableCategory > ,
177
- }
178
- Ok ( req. json ( & R {
179
- krate : EncodableCrate :: from (
159
+ Ok ( req. json ( & json ! ( {
160
+ "crate" : EncodableCrate :: from(
180
161
krate. clone( ) ,
181
162
& top_versions,
182
163
Some ( ids) ,
@@ -186,13 +167,13 @@ pub fn show(req: &mut dyn RequestExt) -> EndpointResult {
186
167
false ,
187
168
recent_downloads,
188
169
) ,
189
- versions : versions_publishers_and_audit_actions
170
+ " versions" : versions_publishers_and_audit_actions
190
171
. into_iter( )
191
172
. map( |( v, pb, aas) | EncodableVersion :: from( v, & krate. name, pb, aas) )
192
- . collect ( ) ,
193
- keywords : kws. into_iter ( ) . map ( Keyword :: into) . collect ( ) ,
194
- categories : cats. into_iter ( ) . map ( Category :: into) . collect ( ) ,
195
- } ) )
173
+ . collect:: < Vec <_>> ( ) ,
174
+ " keywords" : kws. into_iter( ) . map( Keyword :: into) . collect:: < Vec < EncodableKeyword >> ( ) ,
175
+ " categories" : cats. into_iter( ) . map( Category :: into) . collect:: < Vec < EncodableCategory >> ( ) ,
176
+ } ) ) )
196
177
}
197
178
198
179
/// Handles the `GET /crates/:crate_id/:version/readme` route.
@@ -207,11 +188,7 @@ pub fn readme(req: &mut dyn RequestExt) -> EndpointResult {
207
188
. readme_location ( crate_name, version) ;
208
189
209
190
if req. wants_json ( ) {
210
- #[ derive( Serialize ) ]
211
- struct R {
212
- url : String ,
213
- }
214
- Ok ( req. json ( & R { url : redirect_url } ) )
191
+ Ok ( req. json ( & json ! ( { "url" : redirect_url } ) ) )
215
192
} else {
216
193
Ok ( req. redirect ( redirect_url) )
217
194
}
@@ -242,13 +219,9 @@ pub fn versions(req: &mut dyn RequestExt) -> EndpointResult {
242
219
. into_iter ( )
243
220
. zip ( VersionOwnerAction :: for_versions ( & conn, & versions) ?. into_iter ( ) )
244
221
. map ( |( ( v, pb) , aas) | EncodableVersion :: from ( v, crate_name, pb, aas) )
245
- . collect ( ) ;
222
+ . collect :: < Vec < _ > > ( ) ;
246
223
247
- #[ derive( Serialize ) ]
248
- struct R {
249
- versions : Vec < EncodableVersion > ,
250
- }
251
- Ok ( req. json ( & R { versions } ) )
224
+ Ok ( req. json ( & json ! ( { "versions" : versions } ) ) )
252
225
}
253
226
254
227
/// Handles the `GET /crates/:crate_id/reverse_dependencies` route.
@@ -288,21 +261,11 @@ pub fn reverse_dependencies(req: &mut dyn RequestExt) -> EndpointResult {
288
261
. map ( |( ( version, krate_name, published_by) , actions) | {
289
262
EncodableVersion :: from ( version, & krate_name, published_by, actions)
290
263
} )
291
- . collect ( ) ;
264
+ . collect :: < Vec < _ > > ( ) ;
292
265
293
- #[ derive( Serialize ) ]
294
- struct R {
295
- dependencies : Vec < EncodableDependency > ,
296
- versions : Vec < EncodableVersion > ,
297
- meta : Meta ,
298
- }
299
- #[ derive( Serialize ) ]
300
- struct Meta {
301
- total : i64 ,
302
- }
303
- Ok ( req. json ( & R {
304
- dependencies : rev_deps,
305
- versions,
306
- meta : Meta { total } ,
307
- } ) )
266
+ Ok ( req. json ( & json ! ( {
267
+ "dependencies" : rev_deps,
268
+ "versions" : versions,
269
+ "meta" : { "total" : total } ,
270
+ } ) ) )
308
271
}
0 commit comments