blog.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. from sql import db
  2. from typing import Optional, List
  3. import core.file
  4. def write_blog(auth_id: int, title: str, subtitle:str, context: str, file_list: List[core.file.File]) -> bool:
  5. cur = db.insert(table="blog", columns=["Auth", "Title", "SubTitle", "Context"],
  6. values=f"{auth_id}, '{title}', '{subtitle}', '{context}'")
  7. if cur is None or cur.rowcount == 0:
  8. return False
  9. blog_id = cur.lastrowid
  10. for file in file_list:
  11. cur = db.insert(table="blog_file", columns=["BlogID", "FileID"],
  12. values=f"{blog_id}, {file.id}")
  13. if cur is None or cur.rowcount == 0:
  14. return False
  15. return True
  16. def read_blog(blog_id: int) -> list:
  17. cur = db.search(columns=["Auth", "Title", "SubTitle", "Context", "Quote", "Spider", "UpdateTime", "Top"],
  18. table="blog",
  19. where=f"ID={blog_id}")
  20. if cur is None or cur.rowcount == 0:
  21. return []
  22. return cur.fetchone()
  23. def get_blog_list(limit: Optional[int] = None, offset: Optional[int] = None) -> list:
  24. cur = db.search(columns=["ID", "Title", "SubTitle", "UpdateTime", "Top"], table="blog_with_top",
  25. limit=limit,
  26. offset=offset)
  27. if cur is None or cur.rowcount == 0:
  28. return []
  29. return cur.fetchall()
  30. def get_blog_list_not_top(limit: Optional[int] = None, offset: Optional[int] = None) -> list:
  31. cur = db.search(columns=["ID", "Title", "SubTitle", "UpdateTime"], table="blog",
  32. order_by=[("UpdateTime", "DESC")],
  33. limit=limit,
  34. offset=offset)
  35. if cur is None or cur.rowcount == 0:
  36. return []
  37. return cur.fetchall()
  38. def get_blog_count() -> int:
  39. cur = db.search(columns=["count(ID)"], table="blog")
  40. if cur is None or cur.rowcount == 0:
  41. return 0
  42. return cur.fetchone()[0]
  43. def get_blog_list_with_file(file_id, limit: Optional[int] = None, offset: Optional[int] = None) -> list:
  44. cur = db.search(columns=["BlogID", "Title", "SubTitle", "UpdateTime", "Top"], table="blog_with_file",
  45. where=f"FileID={file_id}",
  46. limit=limit,
  47. offset=offset)
  48. if cur is None or cur.rowcount == 0:
  49. return []
  50. return cur.fetchall()
  51. def get_blog_with_file_count(file_id) -> int:
  52. cur = db.search(columns=["count(ID)"], table="blog_with_file",
  53. where=f"FileID={file_id}")
  54. if cur is None or cur.rowcount == 0:
  55. return 0
  56. return cur.fetchone()[0]
  57. def get_blog_user_count(user_id: int) -> int:
  58. cur = db.search(columns=["count(ID)"], table="blog",
  59. where=f"Auth={user_id}")
  60. if cur is None or cur.rowcount == 0:
  61. return 0
  62. return cur.fetchone()[0]