@@ -65,6 +65,8 @@ pub(crate) struct CrateDetails {
65
65
pub ( crate ) crate_id : i32 ,
66
66
/// Database id for this release
67
67
pub ( crate ) release_id : i32 ,
68
+ source_size : Option < i64 > ,
69
+ documentation_size : Option < i64 > ,
68
70
}
69
71
70
72
#[ derive( Debug , Clone , PartialEq ) ]
@@ -122,6 +124,8 @@ impl CrateDetails {
122
124
req_version : Option < ReqVersion > ,
123
125
prefetched_releases : Vec < Release > ,
124
126
) -> Result < Option < CrateDetails > , anyhow:: Error > {
127
+ // FIXME: Since all subqueries from `builds` table have the same conditions, would be
128
+ // nice to group them in one subquery instead.
125
129
let krate = match sqlx:: query!(
126
130
r#"SELECT
127
131
crates.id AS crate_id,
@@ -163,6 +167,16 @@ impl CrateDetails {
163
167
releases.license,
164
168
releases.documentation_url,
165
169
releases.default_target,
170
+ releases.source_size as "source_size?",
171
+ (
172
+ SELECT documentation_size
173
+ FROM builds
174
+ WHERE
175
+ builds.rid = releases.id AND
176
+ builds.build_status = 'success'
177
+ ORDER BY builds.build_finished
178
+ DESC LIMIT 1
179
+ ) as "documentation_size?",
166
180
(
167
181
-- we're using the rustc version here to set the correct CSS file
168
182
-- in the metadata.
@@ -258,6 +272,8 @@ impl CrateDetails {
258
272
items_with_examples : krate. items_with_examples ,
259
273
crate_id : krate. crate_id ,
260
274
release_id : krate. release_id ,
275
+ documentation_size : krate. documentation_size ,
276
+ source_size : krate. source_size ,
261
277
} ;
262
278
263
279
// get owners
@@ -442,6 +458,8 @@ struct CrateDetailsPage {
442
458
last_successful_build : Option < String > ,
443
459
rustdoc : Option < String > , // this is description_long in database
444
460
csp_nonce : String ,
461
+ source_size : Option < i64 > ,
462
+ documentation_size : Option < i64 > ,
445
463
}
446
464
447
465
impl CrateDetailsPage {
@@ -513,6 +531,8 @@ pub(crate) async fn crate_details_handler(
513
531
is_library,
514
532
last_successful_build,
515
533
rustdoc,
534
+ source_size,
535
+ documentation_size,
516
536
..
517
537
} = details;
518
538
@@ -538,6 +558,8 @@ pub(crate) async fn crate_details_handler(
538
558
last_successful_build,
539
559
rustdoc,
540
560
csp_nonce : String :: new ( ) ,
561
+ source_size,
562
+ documentation_size,
541
563
}
542
564
. into_response ( ) ;
543
565
res. extensions_mut ( )
0 commit comments