use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AurPackage {
pub name: String,
pub version: String,
pub description: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub popularity: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub out_of_date: Option<u64>,
#[serde(default)]
pub orphaned: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub maintainer: Option<String>,
}
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
pub struct AurPackageDetails {
pub name: String,
pub version: String,
pub description: String,
pub url: String,
pub licenses: Vec<String>,
pub groups: Vec<String>,
pub provides: Vec<String>,
pub depends: Vec<String>,
pub make_depends: Vec<String>,
pub opt_depends: Vec<String>,
pub conflicts: Vec<String>,
pub replaces: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub maintainer: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub first_submitted: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub last_modified: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub popularity: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub num_votes: Option<u64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub out_of_date: Option<u64>,
#[serde(default)]
pub orphaned: bool,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct MetadataFetchLimits {
pub max_response_bytes: usize,
pub max_candidates: usize,
}
impl Default for MetadataFetchLimits {
fn default() -> Self {
Self {
max_response_bytes: 512 * 1024,
max_candidates: 16,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct MirrorHealthLimits {
pub max_mirrors: usize,
}
impl Default for MirrorHealthLimits {
fn default() -> Self {
Self { max_mirrors: 16 }
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub enum MirrorHealthStatus {
Reachable,
Unreachable,
Invalid,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct MirrorHealth {
pub mirror_url: String,
pub status: MirrorHealthStatus,
pub status_code: Option<u16>,
pub detail: Option<String>,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct AurComment {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
pub author: String,
pub date: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub date_timestamp: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub date_url: Option<String>,
pub content: String,
#[serde(default)]
pub pinned: bool,
}