"""Review schemas""" from pydantic import BaseModel, Field from typing import Optional, List from datetime import datetime from app.models.review import ReviewStatusEnum from app.models.comment import SeverityEnum class CommentResponse(BaseModel): """Schema for comment response""" id: int file_path: str line_number: int content: str severity: SeverityEnum posted: bool posted_at: Optional[datetime] = None created_at: datetime class Config: from_attributes = True class PullRequestInfo(BaseModel): """Schema for pull request information""" id: int pr_number: int title: str author: str source_branch: str target_branch: str url: str class Config: from_attributes = True class ReviewResponse(BaseModel): """Schema for review response""" id: int pull_request_id: int pull_request: PullRequestInfo status: ReviewStatusEnum started_at: datetime completed_at: Optional[datetime] = None files_analyzed: int comments_generated: int error_message: Optional[str] = None comments: Optional[List[CommentResponse]] = None class Config: from_attributes = True class ReviewList(BaseModel): """Schema for review list response""" items: List[ReviewResponse] total: int class ReviewStats(BaseModel): """Schema for review statistics""" total_reviews: int active_reviews: int completed_reviews: int failed_reviews: int total_comments: int avg_comments_per_review: float