use crate::models::base_info::UserBaseInfo; use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use uuid::Uuid; #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, sqlx::FromRow, utoipa::ToSchema)] pub struct PrReview { pub id: Uuid, pub pull_request_id: Uuid, pub author_id: Uuid, pub state: String, pub body: Option, pub commit_sha: Option, pub submitted_at: Option>, pub dismissed_at: Option>, pub dismissed_by: Option, pub dismiss_reason: Option, pub created_at: DateTime, pub updated_at: DateTime, } #[derive(Debug, Clone, Serialize, Deserialize, utoipa::ToSchema)] pub struct PrReviewDetail { pub id: Uuid, pub pull_request_id: Uuid, pub author: UserBaseInfo, pub state: String, pub body: Option, pub dismissed: bool, pub dismissed_by: Option, pub dismissed_at: Option>, pub created_at: DateTime, pub updated_at: DateTime, } impl PrReview { pub fn into_detail(self, author: UserBaseInfo) -> PrReviewDetail { PrReviewDetail { id: self.id, pull_request_id: self.pull_request_id, author, state: self.state, body: self.body, dismissed: self.dismissed_at.is_some(), dismissed_by: self.dismissed_by, dismissed_at: self.dismissed_at, created_at: self.created_at, updated_at: self.updated_at, } } }