use chrono::NaiveDateTime;
use serde_derive::{Deserialize, Serialize};
use super::cargo::{CrateMetadata, IndexCrateMetadata, RegistryUser};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CrateInfo {
pub metadata: Option<CrateMetadata>,
#[serde(rename = "isDeprecated")]
pub is_deprecated: bool,
pub versions: Vec<CrateInfoVersion>,
pub targets: Vec<CrateInfoTarget>,
pub capabilities: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CrateInfoTarget {
pub target: String,
#[serde(rename = "docsUseNative")]
pub docs_use_native: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CrateInfoVersion {
pub index: IndexCrateMetadata,
pub upload: NaiveDateTime,
#[serde(rename = "uploadedBy")]
pub uploaded_by: RegistryUser,
#[serde(rename = "downloadCount")]
pub download_count: i64,
#[serde(rename = "depsLastCheck")]
pub deps_last_check: NaiveDateTime,
#[serde(rename = "depsHasOutdated")]
pub deps_has_outdated: bool,
#[serde(rename = "depsHasCVEs")]
pub deps_has_cves: bool,
pub docs: Vec<CrateInfoVersionDocs>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CrateInfoVersionDocs {
pub target: String,
#[serde(rename = "isAttempted")]
pub is_attempted: bool,
#[serde(rename = "isPresent")]
pub is_present: bool,
}