You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

web.py 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from datetime import datetime
  2. import sqlalchemy as sa
  3. from sqlalchemy import DateTime, String, func
  4. from sqlalchemy.orm import Mapped, mapped_column
  5. from models.base import Base
  6. from .engine import db
  7. from .model import Message
  8. from .types import StringUUID
  9. class SavedMessage(Base):
  10. __tablename__ = "saved_messages"
  11. __table_args__ = (
  12. sa.PrimaryKeyConstraint("id", name="saved_message_pkey"),
  13. sa.Index("saved_message_message_idx", "app_id", "message_id", "created_by_role", "created_by"),
  14. )
  15. id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
  16. app_id = mapped_column(StringUUID, nullable=False)
  17. message_id = mapped_column(StringUUID, nullable=False)
  18. created_by_role = mapped_column(
  19. String(255), nullable=False, server_default=sa.text("'end_user'::character varying")
  20. )
  21. created_by = mapped_column(StringUUID, nullable=False)
  22. created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
  23. @property
  24. def message(self):
  25. return db.session.query(Message).where(Message.id == self.message_id).first()
  26. class PinnedConversation(Base):
  27. __tablename__ = "pinned_conversations"
  28. __table_args__ = (
  29. sa.PrimaryKeyConstraint("id", name="pinned_conversation_pkey"),
  30. sa.Index("pinned_conversation_conversation_idx", "app_id", "conversation_id", "created_by_role", "created_by"),
  31. )
  32. id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
  33. app_id = mapped_column(StringUUID, nullable=False)
  34. conversation_id: Mapped[str] = mapped_column(StringUUID)
  35. created_by_role = mapped_column(
  36. String(255), nullable=False, server_default=sa.text("'end_user'::character varying")
  37. )
  38. created_by = mapped_column(StringUUID, nullable=False)
  39. created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())