Skip to content

Commit 882c067

Browse files
authored
models/version: Extract features() fn (#9550)
1 parent 3c970a1 commit 882c067

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

src/models/krate.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -483,8 +483,7 @@ impl Crate {
483483

484484
deps.sort();
485485

486-
let features: BTreeMap<String, Vec<String>> =
487-
serde_json::from_value(version.features).unwrap_or_default();
486+
let features = version.features().unwrap_or_default();
488487
let (features, features2): (BTreeMap<_, _>, BTreeMap<_, _>) =
489488
features.into_iter().partition(|(_k, vals)| {
490489
!vals

src/models/version.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use std::collections::BTreeMap;
33
use chrono::NaiveDateTime;
44
use derive_builder::Builder;
55
use diesel::prelude::*;
6+
use serde::Deserialize;
67

78
use crate::util::errors::{bad_request, AppResult};
89

@@ -63,6 +64,16 @@ impl Version {
6364
None => None,
6465
}
6566
}
67+
68+
/// Deserializes the `features` field from JSON into a `BTreeMap`.
69+
///
70+
/// # Returns
71+
///
72+
/// * `Ok(BTreeMap<String, Vec<String>>)` - If the deserialization was successful.
73+
/// * `Err(serde_json::Error)` - If the deserialization failed.
74+
pub fn features(&self) -> Result<BTreeMap<String, Vec<String>>, serde_json::Error> {
75+
BTreeMap::<String, Vec<String>>::deserialize(&self.features)
76+
}
6677
}
6778

6879
#[derive(Insertable, Debug, Builder)]

0 commit comments

Comments
 (0)