Skip to content

Commit 7a71e00

Browse files
committed
models/version: Convert highest and newest fields to Option
1 parent 93e69e5 commit 7a71e00

File tree

2 files changed

+23
-25
lines changed

2 files changed

+23
-25
lines changed

src/models/krate.rs

+14-2
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,18 @@ impl Crate {
345345
let badges = badges.map(|bs| bs.into_iter().map(Badge::into).collect());
346346
let documentation = Crate::remove_blocked_documentation_urls(documentation);
347347

348+
let max_version = top_versions
349+
.highest
350+
.as_ref()
351+
.map(|v| v.to_string())
352+
.unwrap_or_else(|| "0.0.0".to_string());
353+
354+
let newest_version = top_versions
355+
.newest
356+
.as_ref()
357+
.map(|v| v.to_string())
358+
.unwrap_or_else(|| "0.0.0".to_string());
359+
348360
EncodableCrate {
349361
id: name.clone(),
350362
name: name.clone(),
@@ -356,8 +368,8 @@ impl Crate {
356368
keywords: keyword_ids,
357369
categories: category_ids,
358370
badges,
359-
max_version: top_versions.highest.to_string(),
360-
newest_version: top_versions.newest.to_string(),
371+
max_version,
372+
newest_version,
361373
documentation,
362374
homepage,
363375
exact_match,

src/models/version.rs

+9-23
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ pub struct NewVersion {
4242
#[derive(Debug, Clone, Eq, PartialEq)]
4343
pub struct TopVersions {
4444
/// The "highest" version in terms of semver
45-
pub highest: semver::Version,
45+
pub highest: Option<semver::Version>,
4646
/// The "newest" version in terms of publishing date
47-
pub newest: semver::Version,
47+
pub newest: Option<semver::Version>,
4848
}
4949

5050
impl TopVersions {
@@ -63,21 +63,7 @@ impl TopVersions {
6363
let newest = pairs.clone().into_iter().max().map(|(_, v)| v);
6464
let highest = pairs.into_iter().map(|(_, v)| v).max();
6565

66-
Self {
67-
newest: newest.unwrap_or_else(default_semver_version),
68-
highest: highest.unwrap_or_else(default_semver_version),
69-
}
70-
}
71-
}
72-
73-
/// A default semver value, "0.0.0", for use in TopVersions
74-
fn default_semver_version() -> semver::Version {
75-
semver::Version {
76-
major: 0,
77-
minor: 0,
78-
patch: 0,
79-
pre: vec![],
80-
build: vec![],
66+
Self { newest, highest }
8167
}
8268
}
8369

@@ -275,8 +261,8 @@ mod tests {
275261
assert_eq!(
276262
TopVersions::from_date_version_pairs(versions),
277263
TopVersions {
278-
highest: version("0.0.0"),
279-
newest: version("0.0.0"),
264+
highest: None,
265+
newest: None,
280266
}
281267
);
282268
}
@@ -287,8 +273,8 @@ mod tests {
287273
assert_eq!(
288274
TopVersions::from_date_version_pairs(versions),
289275
TopVersions {
290-
highest: version("1.0.0"),
291-
newest: version("1.0.0"),
276+
highest: Some(version("1.0.0")),
277+
newest: Some(version("1.0.0")),
292278
}
293279
);
294280
}
@@ -303,8 +289,8 @@ mod tests {
303289
assert_eq!(
304290
TopVersions::from_date_version_pairs(versions),
305291
TopVersions {
306-
highest: version("2.0.0-alpha.1"),
307-
newest: version("1.1.0"),
292+
highest: Some(version("2.0.0-alpha.1")),
293+
newest: Some(version("1.1.0")),
308294
}
309295
);
310296
}

0 commit comments

Comments
 (0)