94 lines
3.1 KiB
Rust
94 lines
3.1 KiB
Rust
use serde::{Deserialize, Serialize};
|
|
|
|
/// Overall PR status. Combines review decision and merge readiness into a
|
|
/// single enum for quick querying.
|
|
///
|
|
/// Stored as `"draft"`, `"open"`, `"approved"`, `"changes_requested"`,
|
|
/// `"conflict"`, `"merged"`, or `"closed"`.
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub enum PrStatus {
|
|
Draft,
|
|
Open,
|
|
Approved,
|
|
ChangesRequested,
|
|
Conflict,
|
|
Merged,
|
|
Closed,
|
|
}
|
|
|
|
impl std::fmt::Display for PrStatus {
|
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
match self {
|
|
PrStatus::Draft => write!(f, "draft"),
|
|
PrStatus::Open => write!(f, "open"),
|
|
PrStatus::Approved => write!(f, "approved"),
|
|
PrStatus::ChangesRequested => write!(f, "changes_requested"),
|
|
PrStatus::Conflict => write!(f, "conflict"),
|
|
PrStatus::Merged => write!(f, "merged"),
|
|
PrStatus::Closed => write!(f, "closed"),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl std::str::FromStr for PrStatus {
|
|
type Err = &'static str;
|
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
|
match s {
|
|
"draft" => Ok(PrStatus::Draft),
|
|
"open" => Ok(PrStatus::Open),
|
|
"approved" => Ok(PrStatus::Approved),
|
|
"changes_requested" => Ok(PrStatus::ChangesRequested),
|
|
"conflict" => Ok(PrStatus::Conflict),
|
|
"merged" => Ok(PrStatus::Merged),
|
|
"closed" => Ok(PrStatus::Closed),
|
|
_ => Err("unknown PR status"),
|
|
}
|
|
}
|
|
}
|
|
|
|
/// Overall review decision from a single reviewer. Stored as `"pending"`,
|
|
/// `"approved"`, `"changes_requested"`, or `"comment"`.
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub enum ReviewState {
|
|
Pending,
|
|
Approved,
|
|
ChangesRequested,
|
|
Comment,
|
|
}
|
|
|
|
impl std::fmt::Display for ReviewState {
|
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
match self {
|
|
ReviewState::Pending => write!(f, "pending"),
|
|
ReviewState::Approved => write!(f, "approved"),
|
|
ReviewState::ChangesRequested => write!(f, "changes_requested"),
|
|
ReviewState::Comment => write!(f, "comment"),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl std::str::FromStr for ReviewState {
|
|
type Err = &'static str;
|
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
|
match s {
|
|
"pending" => Ok(ReviewState::Pending),
|
|
"approved" => Ok(ReviewState::Approved),
|
|
"changes_requested" => Ok(ReviewState::ChangesRequested),
|
|
"comment" => Ok(ReviewState::Comment),
|
|
_ => Err("unknown review state"),
|
|
}
|
|
}
|
|
}
|
|
|
|
pub use pull_request::Entity as PullRequest;
|
|
pub use pull_request_commit::Entity as PullRequestCommit;
|
|
pub use pull_request_review::Entity as PullRequestReview;
|
|
pub use pull_request_review_comment::Entity as PullRequestReviewComment;
|
|
pub use pull_request_review_request::Entity as PullRequestReviewRequest;
|
|
|
|
pub mod pull_request;
|
|
pub mod pull_request_commit;
|
|
pub mod pull_request_review;
|
|
pub mod pull_request_review_comment;
|
|
pub mod pull_request_review_request;
|