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