web.py 1.7 KB

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