from sqlalchemy import ForeignKey, Text from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship class Base(DeclarativeBase): pass class Project(Base): __tablename__ = "projects" id: Mapped[int] = mapped_column(primary_key=True) name: Mapped[str] = mapped_column() drug_name: Mapped[str | None] = mapped_column(Text, nullable=True) structure_input: Mapped[str] = mapped_column(Text) structure_format: Mapped[str] = mapped_column() target_name: Mapped[str] = mapped_column() indication: Mapped[str | None] = mapped_column(Text, nullable=True) mechanism: Mapped[str | None] = mapped_column(Text, nullable=True) patent_text: Mapped[str | None] = mapped_column(Text, nullable=True) jobs: Mapped[list["Job"]] = relationship(back_populates="project") class Job(Base): __tablename__ = "jobs" id: Mapped[int] = mapped_column(primary_key=True) project_id: Mapped[int] = mapped_column(ForeignKey("projects.id")) status: Mapped[str] = mapped_column(default="created") error: Mapped[str | None] = mapped_column(Text, nullable=True) artifact_json: Mapped[str | None] = mapped_column(Text, nullable=True) project: Mapped[Project] = relationship(back_populates="jobs")