use chrono::{DateTime, Utc};
use serde::Deserialize;
#[derive(Debug, Deserialize)]
pub(crate) struct ApiPull {
pub(crate) number: u64,
pub(crate) title: String,
pub(crate) user: Option<ApiUser>,
pub(crate) state: String,
pub(crate) created_at: DateTime<Utc>,
pub(crate) merged_at: Option<DateTime<Utc>>,
#[serde(default)]
pub(crate) merge_commit_sha: Option<String>,
}
#[derive(Debug, Deserialize)]
pub(crate) struct ApiUser {
pub(crate) login: String,
}
#[derive(Debug, Clone, Deserialize, serde::Serialize)]
pub struct GitHubIssue {
pub number: u64,
pub title: String,
pub state: String,
pub html_url: String,
#[serde(default)]
pub labels: Vec<GhLabel>,
#[serde(default)]
pub body: Option<String>,
}
#[derive(Debug, Clone, Deserialize, serde::Serialize)]
pub struct GhLabel {
pub name: String,
}
#[derive(Debug, Clone, Deserialize, serde::Serialize)]
pub struct GhUser {
pub login: String,
}
#[derive(Debug, Clone, Deserialize, serde::Serialize)]
pub struct GhAuthor {
pub name: String,
pub email: String,
#[serde(default)]
pub date: Option<String>,
}
#[derive(Debug, Clone, Deserialize, serde::Serialize)]
pub struct GitHubCommitDetail {
pub message: String,
#[serde(default)]
pub author: Option<GhAuthor>,
}
#[derive(Debug, Clone, Deserialize, serde::Serialize)]
pub struct GitHubPrCommit {
pub sha: String,
pub commit: GitHubCommitDetail,
}
#[derive(Debug, Clone, Deserialize, serde::Serialize)]
pub struct GitHubReview {
pub id: u64,
pub state: String,
#[serde(default)]
pub user: Option<GhUser>,
#[serde(default)]
pub submitted_at: Option<String>,
}