msg.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from typing import Optional
  2. from collections import namedtuple
  3. from sql.msg import read_msg_list, get_msg_count, create_msg, read_msg, get_user_msg_count, delete_msg
  4. import object.user
  5. class _Message:
  6. message_tuple = namedtuple("Message", "email content update_time secret")
  7. @staticmethod
  8. def get_message_list(limit: Optional[int] = None, offset: Optional[int] = None, show_secret: bool = False):
  9. ret = []
  10. for i in read_msg_list(limit=limit, offset=offset, show_secret=show_secret):
  11. ret.append(Message(i))
  12. return ret
  13. @staticmethod
  14. def get_msg_count(auth: "object.user.User" = None):
  15. if auth is None:
  16. return get_msg_count()
  17. return get_user_msg_count(auth.id)
  18. @staticmethod
  19. def create(auth: "object.user.User", content, secret: bool = False):
  20. ret = create_msg(auth.id, content, secret)
  21. if ret is not None:
  22. return Message(ret)
  23. return None
  24. class Message(_Message):
  25. def __init__(self, msg_id):
  26. self.id = msg_id
  27. @property
  28. def info(self):
  29. return Message.message_tuple(*read_msg(self.id))
  30. @property
  31. def auth(self):
  32. return object.user.User(self.info.email)
  33. @property
  34. def content(self):
  35. return self.info.content
  36. @property
  37. def update_time(self):
  38. return self.info.update_time
  39. @property
  40. def secret(self):
  41. return self.info.secret
  42. @property
  43. def is_delete(self):
  44. return not self.auth.is_authenticated and len(self.content) != 0
  45. def delete(self):
  46. return delete_msg(self.id)