document.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. import uuid
  2. from datetime import datetime
  3. from sqlalchemy import DateTime, String, Text, func
  4. from sqlalchemy.orm import Mapped, mapped_column
  5. from app.core.database import Base
  6. class Document(Base):
  7. __tablename__ = "documents"
  8. id: Mapped[str] = mapped_column(
  9. String(64),
  10. primary_key=True,
  11. default=lambda: f"doc-{uuid.uuid4().hex[:12]}",
  12. )
  13. title: Mapped[str] = mapped_column(String(255), nullable=False)
  14. content: Mapped[str] = mapped_column(Text, nullable=False, default="")
  15. format: Mapped[str] = mapped_column(String(32), nullable=False, default="markdown")
  16. session_id: Mapped[str | None] = mapped_column(String(128), nullable=True)
  17. template_id: Mapped[str | None] = mapped_column(String(64), nullable=True)
  18. source: Mapped[str] = mapped_column(String(32), nullable=False, default="chat")
  19. created_by: Mapped[str | None] = mapped_column(String(128), nullable=True)
  20. created_at: Mapped[datetime] = mapped_column(
  21. DateTime(timezone=True), server_default=func.now(), nullable=False
  22. )
  23. updated_at: Mapped[datetime] = mapped_column(
  24. DateTime(timezone=True),
  25. server_default=func.now(),
  26. onupdate=func.now(),
  27. nullable=False,
  28. )