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)