Skip to content

Commit 0020fff

Browse files
GuillaumeGomezsyphar
authored andcommitted
Add size information on crate details page
1 parent 05b70cf commit 0020fff

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

src/web/crate_details.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ pub(crate) struct CrateDetails {
6565
pub(crate) crate_id: i32,
6666
/// Database id for this release
6767
pub(crate) release_id: i32,
68+
source_size: Option<i64>,
69+
documentation_size: Option<i64>,
6870
}
6971

7072
#[derive(Debug, Clone, PartialEq)]
@@ -122,6 +124,8 @@ impl CrateDetails {
122124
req_version: Option<ReqVersion>,
123125
prefetched_releases: Vec<Release>,
124126
) -> 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.
125129
let krate = match sqlx::query!(
126130
r#"SELECT
127131
crates.id AS crate_id,
@@ -163,6 +167,16 @@ impl CrateDetails {
163167
releases.license,
164168
releases.documentation_url,
165169
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?",
166180
(
167181
-- we're using the rustc version here to set the correct CSS file
168182
-- in the metadata.
@@ -258,6 +272,8 @@ impl CrateDetails {
258272
items_with_examples: krate.items_with_examples,
259273
crate_id: krate.crate_id,
260274
release_id: krate.release_id,
275+
documentation_size: krate.documentation_size,
276+
source_size: krate.source_size,
261277
};
262278

263279
// get owners
@@ -442,6 +458,8 @@ struct CrateDetailsPage {
442458
last_successful_build: Option<String>,
443459
rustdoc: Option<String>, // this is description_long in database
444460
csp_nonce: String,
461+
source_size: Option<i64>,
462+
documentation_size: Option<i64>,
445463
}
446464

447465
impl CrateDetailsPage {
@@ -513,6 +531,8 @@ pub(crate) async fn crate_details_handler(
513531
is_library,
514532
last_successful_build,
515533
rustdoc,
534+
source_size,
535+
documentation_size,
516536
..
517537
} = details;
518538

@@ -538,6 +558,8 @@ pub(crate) async fn crate_details_handler(
538558
last_successful_build,
539559
rustdoc,
540560
csp_nonce: String::new(),
561+
source_size,
562+
documentation_size,
541563
}
542564
.into_response();
543565
res.extensions_mut()

templates/crate/details.html

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,19 @@
3737
{%- endif -%}
3838
</li>
3939
{%- endif -%}
40-
<li class="pure-menu-heading">Links</li>
40+
{%- if let Some(source_size) = source_size -%}
41+
<li class="pure-menu-heading">Size</li>
42+
<li class="pure-menu-item">
43+
<span class="documented-info">Source code size: {{(*source_size)|filesizeformat}}</span>
44+
</li>
45+
{%- if let Some(doc_size) = documentation_size -%}
46+
<li class="pure-menu-item">
47+
<span class="documented-info">Documentation size: {{(*doc_size)|filesizeformat}}</span>
48+
</li>
49+
{%- endif -%}
50+
{%- endif -%}
4151

52+
<li class="pure-menu-heading">Links</li>
4253
{# If the crate has a homepage, show it #}
4354
{%- if let Some(homepage_url) = homepage_url -%}
4455
<li class="pure-menu-item">

0 commit comments

Comments
 (0)