from sqlalchemy import ForeignKey, Integer, Text from sqlalchemy.orm import Mapped, mapped_column from scribe.models import Base from scribe.models.base import TimestampMixin class NoteDraft(Base, TimestampMixin): __tablename__ = "note_drafts" id: Mapped[int] = mapped_column(primary_key=True) note_id: Mapped[int] = mapped_column(Integer, ForeignKey("notes.id", ondelete="CASCADE")) user_id: Mapped[int] = mapped_column(Integer, ForeignKey("users.id", ondelete="CASCADE")) proposed_body: Mapped[str] = mapped_column(Text) original_body: Mapped[str] = mapped_column(Text) instruction: Mapped[str] = mapped_column(Text, default="") scope: Mapped[str] = mapped_column(Text, default="document") def to_dict(self) -> dict: return { "id": self.id, "note_id": self.note_id, "user_id": self.user_id, "proposed_body": self.proposed_body, "original_body": self.original_body, "instruction": self.instruction, "scope": self.scope, "created_at": self.created_at.isoformat(), "updated_at": self.updated_at.isoformat(), }