from datetime import datetime from typing import Any from sqlalchemy import DateTime, ForeignKey, JSON, String, func from sqlalchemy.orm import Mapped, mapped_column from app.core.database import Base from app.utils.ids import prefixed_id class FlashcardSet(Base): __tablename__ = "flashcard_sets" id: Mapped[str] = mapped_column( String(40), primary_key=True, default=lambda: prefixed_id("flash"), ) user_id: Mapped[str] = mapped_column( String(40), ForeignKey("users.id"), index=True, nullable=False, ) document_id: Mapped[str] = mapped_column( String(40), ForeignKey("documents.id"), index=True, nullable=False, ) cards_json: Mapped[dict[str, Any]] = mapped_column(JSON, nullable=False) model_used: Mapped[str] = mapped_column( String(120), default="mock-exam-tutor-v1", nullable=False, ) created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), server_default=func.now(), nullable=False, )