Skip to content

Commit 30a977c

Browse files
committed
Add default version num to admin list
1 parent 1746fbf commit 30a977c

File tree

3 files changed

+14
-4
lines changed

3 files changed

+14
-4
lines changed

src/controllers/admin.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,15 @@ pub async fn list(
4949
DateTime<Utc>,
5050
Option<i64>,
5151
Option<i64>,
52+
i32,
5253
i64,
5354
)> = CrateOwner::by_owner_kind(OwnerKind::User)
5455
.inner_join(crates::table)
5556
.left_join(crate_downloads::table.on(crates::id.eq(crate_downloads::crate_id)))
5657
.left_join(
5758
recent_crate_downloads::table.on(crates::id.eq(recent_crate_downloads::crate_id)),
5859
)
60+
.inner_join(default_versions::table.on(crates::id.eq(default_versions::crate_id)))
5961
.filter(crate_owners::owner_id.eq(user.id))
6062
.select((
6163
crates::id,
@@ -64,6 +66,7 @@ pub async fn list(
6466
crates::updated_at,
6567
crate_downloads::downloads.nullable(),
6668
recent_crate_downloads::downloads.nullable(),
69+
default_versions::version_id,
6770
rev_deps_subquery(),
6871
))
6972
.order(crates::name.asc())
@@ -94,10 +97,12 @@ pub async fn list(
9497
updated_at,
9598
downloads,
9699
recent_crate_downloads,
100+
default_version,
97101
num_rev_deps,
98102
)| {
99103
let versions = versions_by_crate_id.get(&crate_id);
100-
let last_version = versions.and_then(|v| v.last());
104+
let default_version =
105+
versions.and_then(|versions| versions.iter().find(|v| v.id == default_version));
101106
AdminCrateInfo {
102107
name,
103108
description,
@@ -106,8 +111,9 @@ pub async fn list(
106111
+ recent_crate_downloads.unwrap_or_default(),
107112
num_rev_deps,
108113
num_versions: versions.map(|v| v.len()).unwrap_or(0),
109-
crate_size: last_version.map(|v| v.crate_size).unwrap_or(0),
110-
bin_names: last_version
114+
default_version_num: default_version.map(|v| v.num.clone()).unwrap_or_default(),
115+
crate_size: default_version.map(|v| v.crate_size).unwrap_or(0),
116+
bin_names: default_version
111117
.map(|v| v.bin_names.clone())
112118
.unwrap_or_default(),
113119
}
@@ -134,6 +140,7 @@ pub struct AdminCrateInfo {
134140
pub downloads: i64,
135141
pub num_rev_deps: i64,
136142
pub num_versions: usize,
143+
pub default_version_num: String,
137144
pub crate_size: i32,
138145
pub bin_names: Option<Vec<Option<String>>>,
139146
}

src/tests/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ pub struct AdminCrateInfo {
9595
description: Option<String>,
9696
downloads: i64,
9797
num_versions: usize,
98+
default_version_num: String,
9899
num_rev_deps: i64,
99100
}
100101
#[derive(Deserialize, Debug)]

src/tests/routes/crates/admin.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ async fn index_include_yanked() -> anyhow::Result<()> {
4848
.recent_downloads(36)
4949
.version(VersionBuilder::new("0.1.0").yanked(true))
5050
.version(VersionBuilder::new("1.0.0"))
51-
.version(VersionBuilder::new("2.0.0"))
51+
.version(VersionBuilder::new("2.0.0").yanked(true))
5252
.expect_build(&mut conn)
5353
.await;
5454

@@ -75,13 +75,15 @@ async fn index_include_yanked() -> anyhow::Result<()> {
7575
assert!(json_crate_0.description.is_none());
7676
assert_eq!(json_crate_0.downloads, 0);
7777
assert_eq!(json_crate_0.num_versions, 2);
78+
assert_eq!(json_crate_0.default_version_num, "2.0.0");
7879
assert_eq!(json_crate_0.num_rev_deps, 0);
7980

8081
let json_crate_1 = &json.crates[1];
8182
assert_eq!(json_crate_1.name, "unyanked");
8283
assert_eq!(json_crate_1.description.as_ref().unwrap(), "My Fun Crate");
8384
assert_eq!(json_crate_1.downloads, 536);
8485
assert_eq!(json_crate_1.num_versions, 3);
86+
assert_eq!(json_crate_1.default_version_num, "1.0.0");
8587
assert_eq!(json_crate_1.num_rev_deps, 1);
8688

8789
Ok(())

0 commit comments

Comments
 (0)