use serde::{Deserialize, Serialize};
#[derive(Debug, Clone)]
pub struct Forge {
pub kind: ForgeKind,
pub owner: String,
pub repo: String,
pub host: String, }
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ForgeKind {
GitHub,
Gitea, None, }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Issue {
pub number: i64,
pub title: String,
pub body: Option<String>,
pub state: IssueState,
pub author: String,
pub labels: Vec<String>,
pub created_at: String,
pub updated_at: String,
pub url: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PullRequest {
pub number: i64,
pub title: String,
pub body: Option<String>,
pub state: PrState,
pub author: String,
pub labels: Vec<String>,
pub created_at: String,
pub merged_at: Option<String>,
pub url: String,
pub linked_issues: Vec<i64>,
pub comments: Vec<Comment>,
pub approvals: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Comment {
pub author: String,
pub body: String,
pub created_at: String,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum IssueState {
Open,
Closed,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum PrState {
Open,
Merged,
Closed,
}