import uuid from sqlalchemy import Boolean, ForeignKey, Integer, String, Text from sqlalchemy.orm import Mapped, mapped_column, relationship from app.models.base import Base, TimestampMixin, generate_uuid class SourceLine(Base, TimestampMixin): __tablename__ = "source_lines" id: Mapped[uuid.UUID] = mapped_column( primary_key=True, default=generate_uuid ) job_id: Mapped[uuid.UUID] = mapped_column( ForeignKey("jobs.id", ondelete="CASCADE"), nullable=False ) row_order: Mapped[int] = mapped_column(Integer, nullable=False) en_gb: Mapped[str] = mapped_column(Text, nullable=False) copy_type: Mapped[str | None] = mapped_column(String(100), nullable=True) creative_guidance: Mapped[str | None] = mapped_column(Text, nullable=True) visual_ref: Mapped[str | None] = mapped_column(String(500), nullable=True) char_limit: Mapped[str | None] = mapped_column(String(50), nullable=True) is_display_format: Mapped[bool] = mapped_column(Boolean, default=False) # Relationships job = relationship("Job", back_populates="source_lines") output_rows = relationship( "OutputRow", back_populates="line", lazy="selectin", cascade="all, delete-orphan" )