Primakov Alexandr Alexandrovich 09cdd06307 init
2025-10-12 23:15:09 +03:00

44 lines
1.5 KiB
Python

"""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"<PullRequest(id={self.id}, pr_number={self.pr_number}, title={self.title})>"