| from sqlalchemy import JSON, Column, DateTime, Integer, String, Text, UniqueConstraint |
|
|
| from .db import Base |
| from .time_utils import now_ist |
|
|
|
|
| class ResearchRunRecord(Base): |
| __tablename__ = "research_runs" |
|
|
| id = Column(String(64), primary_key=True) |
| status = Column(String(32), nullable=False, index=True) |
| input_type = Column(String(32), nullable=False, index=True) |
| input_payload = Column(JSON, nullable=False) |
| report_payload = Column(JSON, nullable=True) |
| error_message = Column(Text, nullable=True) |
| created_at = Column(DateTime(timezone=True), nullable=False, default=now_ist) |
| updated_at = Column(DateTime(timezone=True), nullable=False, default=now_ist, onupdate=now_ist) |
| completed_at = Column(DateTime(timezone=True), nullable=True) |
|
|
|
|
| class ArtifactCacheRecord(Base): |
| __tablename__ = "artifact_cache" |
| __table_args__ = (UniqueConstraint("source", "cache_key", name="uq_source_cache_key"),) |
|
|
| id = Column(Integer, primary_key=True, autoincrement=True) |
| source = Column(String(64), nullable=False, index=True) |
| cache_key = Column(String(255), nullable=False, index=True) |
| payload = Column(JSON, nullable=False) |
| created_at = Column(DateTime(timezone=True), nullable=False, default=now_ist) |
| updated_at = Column(DateTime(timezone=True), nullable=False, default=now_ist, onupdate=now_ist) |
|
|