use std::collections::BTreeMap;
use chrono::{DateTime, Utc};
use crate::backend::models::{ReviewOutcome, ReviewStatus, SessionState};
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct ForgePullRequestBundle {
pub pull_request: ForgePullRequest,
pub sessions: Vec<ForgeReviewSession>,
pub comments: Vec<ForgeReviewComment>,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct ForgePullRequest {
pub pr_number: u64,
pub forge_id: String,
pub branch: String,
pub base_sha: String,
pub head_sha: String,
pub status: ReviewStatus,
pub reviewed_files: BTreeMap<String, String>,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct ForgeReviewSession {
pub forge_id: String,
pub author_name: String,
pub author_email: String,
pub author_login: String,
pub state: SessionState,
pub outcome: Option<ReviewOutcome>,
pub body: Option<String>,
pub published_at: Option<DateTime<Utc>>,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct ForgeReviewComment {
pub forge_id: String,
pub session_forge_id: Option<String>,
pub reply_to_forge_id: Option<String>,
pub author_name: String,
pub author_email: String,
pub author_login: String,
pub file_path: Option<String>,
pub start_line: Option<u32>,
pub line: Option<u32>,
pub commit_sha: Option<String>,
pub original_start_line: Option<u32>,
pub original_line: Option<u32>,
pub original_commit_sha: Option<String>,
pub body: String,
pub resolved: bool,
pub outdated: bool,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct ForgeDraftCommentInput {
pub body: String,
pub file_path: Option<String>,
pub start_line: Option<u32>,
pub line: Option<u32>,
pub commit_sha: String,
pub reply_to_forge_id: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct ForgeDraftCommentReceipt {
pub pending_review_forge_id: String,
pub comment_forge_id: String,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct ForgeCommentUpdate {
pub body: Option<String>,
pub file_path: Option<String>,
pub start_line: Option<u32>,
pub line: Option<u32>,
pub commit_sha: Option<String>,
pub resolved: Option<bool>,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct ForgeReviewReceipt {
pub review_forge_id: String,
pub published_at: DateTime<Utc>,
}