use serde::{Deserialize, Serialize};
use time::OffsetDateTime;
use crate::model::names::CommitSha;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
pub struct PrCommit {
pub sha: CommitSha,
pub subject: String,
#[cfg_attr(feature = "schemars", schemars(with = "String"))]
#[serde(with = "time::serde::rfc3339")]
pub author_date: OffsetDateTime,
pub kind: PrCommitKind,
}
#[non_exhaustive]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
#[serde(rename_all = "snake_case")]
pub enum PrCommitKind {
Substantive,
ConflictResolution,
ReviewFeedback,
Fixup,
WipOrCleanup,
}
impl PrCommitKind {
#[must_use]
pub fn is_likely_bookkeeping(self) -> bool {
!matches!(self, Self::Substantive)
}
}