"""Pull Request model""" from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, Enum from sqlalchemy.orm import relationship from sqlalchemy.sql import func from datetime import datetime import enum from app.database import Base class PRStatusEnum(str, enum.Enum): """Pull Request status""" OPEN = "open" REVIEWING = "reviewing" REVIEWED = "reviewed" CLOSED = "closed" class PullRequest(Base): """Pull Request model""" __tablename__ = "pull_requests" id = Column(Integer, primary_key=True, index=True) repository_id = Column(Integer, ForeignKey("repositories.id"), nullable=False) pr_number = Column(Integer, nullable=False) title = Column(String, nullable=False) author = Column(String, nullable=False) source_branch = Column(String, nullable=False) target_branch = Column(String, nullable=False) status = Column(Enum(PRStatusEnum), default=PRStatusEnum.OPEN) url = Column(String, nullable=False) created_at = Column(DateTime, default=datetime.utcnow, server_default=func.now()) updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, server_default=func.now()) # Relationships repository = relationship("Repository", back_populates="pull_requests") reviews = relationship("Review", back_populates="pull_request", cascade="all, delete-orphan") def __repr__(self): return f""