"""Review task ORM model.""" from sqlalchemy import Enum, ForeignKey, Integer, String, Text from sqlalchemy.orm import Mapped, mapped_column, relationship from app.domain.enums import ReviewDecision, ReviewTaskStatus from app.infra.db.base import Base, TimestampMixin class ReviewTaskORM(TimestampMixin, Base): """Persisted review task.""" __tablename__ = "review_tasks" id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) order_id: Mapped[int] = mapped_column(ForeignKey("orders.id"), nullable=False, index=True) status: Mapped[ReviewTaskStatus] = mapped_column( Enum(ReviewTaskStatus, native_enum=False), nullable=False, default=ReviewTaskStatus.PENDING, ) decision: Mapped[ReviewDecision | None] = mapped_column( Enum(ReviewDecision, native_enum=False), nullable=True, ) reviewer_id: Mapped[int | None] = mapped_column(Integer, nullable=True) selected_asset_id: Mapped[int | None] = mapped_column(Integer, nullable=True) latest_revision_asset_id: Mapped[int | None] = mapped_column(Integer, nullable=True) resume_asset_id: Mapped[int | None] = mapped_column(Integer, nullable=True) comment: Mapped[str | None] = mapped_column(Text, nullable=True) order = relationship("OrderORM", back_populates="review_tasks")