from datetime import datetime, timezone from sqlalchemy import String, DateTime, ForeignKey, JSON from sqlalchemy.orm import Mapped, mapped_column, relationship from backend.models.base import Base class Summary(Base): __tablename__ = "summaries" id: Mapped[int] = mapped_column(primary_key=True) subreddit_id: Mapped[int] = mapped_column( ForeignKey("monitored_subreddits.id"), nullable=False ) summary_type: Mapped[str] = mapped_column(String(50), nullable=False) content: Mapped[str | None] = mapped_column() metadata_: Mapped[dict | None] = mapped_column("metadata", JSON) period_start: Mapped[datetime | None] = mapped_column(DateTime(timezone=True)) period_end: Mapped[datetime | None] = mapped_column(DateTime(timezone=True)) provider: Mapped[str | None] = mapped_column(String(100)) generated_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), default=lambda: datetime.now(timezone.utc) ) subreddit: Mapped["MonitoredSubreddit"] = relationship(back_populates="summaries") # noqa: F821