octocrab 0.54.7

A modern, extensible GitHub API client.
Documentation
use super::*;

#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
#[non_exhaustive]
pub enum CampaignState {
    Open,
    Closed,
}

#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
#[non_exhaustive]
pub enum CampaignSort {
    Created,
    Updated,
    EndsAt,
    Published,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct CampaignAlertStats {
    pub open_count: u64,
    pub closed_count: u64,
    pub in_progress_count: u64,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct Campaign {
    pub number: u64,
    pub created_at: DateTime<Utc>,
    pub updated_at: DateTime<Utc>,
    pub name: String,
    pub description: String,
    pub managers: Vec<SimpleUser>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub team_managers: Option<Vec<teams::Team>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub published_at: Option<DateTime<Utc>>,
    pub ends_at: DateTime<Utc>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub closed_at: Option<DateTime<Utc>>,
    pub state: CampaignState,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub contact_link: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub alert_stats: Option<CampaignAlertStats>,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct CampaignCodeScanningAlert {
    pub repository_id: u64,
    pub alert_numbers: Vec<u64>,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct CreateCampaign {
    pub name: String,
    pub description: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub managers: Option<Vec<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub team_managers: Option<Vec<String>>,
    pub ends_at: DateTime<Utc>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub contact_link: Option<String>,
    pub code_scanning_alerts: Vec<CampaignCodeScanningAlert>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub generate_issues: Option<bool>,
}

#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct UpdateCampaign {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub managers: Option<Vec<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub team_managers: Option<Vec<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub ends_at: Option<DateTime<Utc>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub contact_link: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub state: Option<CampaignState>,
}