archive.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. from collections import namedtuple
  2. import sql.blog # 不用 from import 避免循环导入
  3. from sql.archive import (read_archive,
  4. create_archive,
  5. get_archive_list,
  6. get_blog_archive,
  7. delete_archive,
  8. add_blog_to_archive,
  9. sub_blog_from_archive)
  10. from sql.statistics import get_archive_click
  11. class _Archive:
  12. archive_tuple = namedtuple('Archive', 'name describe')
  13. @staticmethod
  14. def get_archive_list():
  15. ret = []
  16. for i in get_archive_list():
  17. ret.append(Archive(i))
  18. return ret
  19. @staticmethod
  20. def get_blog_archive(blog_id: int):
  21. archive_list = []
  22. for i in get_blog_archive(blog_id):
  23. archive_list.append(Archive(i))
  24. return archive_list
  25. @staticmethod
  26. def create(name, describe):
  27. ret = create_archive(name, describe)
  28. if ret is None:
  29. return None
  30. return Archive(ret)
  31. class Archive(_Archive):
  32. def __init__(self, archive_id):
  33. self.id = archive_id
  34. @property
  35. def info(self):
  36. return Archive.archive_tuple(*read_archive(self.id))
  37. @property
  38. def name(self):
  39. return self.info.name
  40. @property
  41. def describe(self):
  42. return self.info.describe
  43. @property
  44. def count(self):
  45. return sql.blog.get_archive_blog_count(self.id)
  46. @property
  47. def clicks(self):
  48. return get_archive_click(self.id)
  49. def is_delete(self):
  50. return len(self.name) != 0
  51. def delete(self):
  52. return delete_archive(self.id)
  53. def add_blog(self, blog_id: int):
  54. add_blog_to_archive(blog_id, self.id)
  55. def sub_blog(self, blog_id: int):
  56. sub_blog_from_archive(blog_id, self.id)