|
@@ -1,4 +1,7 @@
|
|
|
from sql import db
|
|
|
+from sql.cache import (read_archive_from_cache, write_archive_to_cache, delete_archive_from_cache,
|
|
|
+ get_blog_archive_from_cache, write_blog_archive_to_cache, delete_blog_archive_from_cache,
|
|
|
+ delete_all_blog_archive_from_cache)
|
|
|
from typing import Optional
|
|
|
|
|
|
|
|
@@ -15,25 +18,41 @@ def create_archive(name: str, describe: str):
|
|
|
|
|
|
def read_archive(archive_id: int):
|
|
|
""" 获取归档 ID """
|
|
|
+ res = read_archive_from_cache(archive_id)
|
|
|
+ if res is not None:
|
|
|
+ return res
|
|
|
+
|
|
|
cur = db.search("SELECT Name, DescribeText "
|
|
|
"FROM archive "
|
|
|
"WHERE ID=%s", archive_id)
|
|
|
if cur is None or cur.rowcount == 0:
|
|
|
return ["", ""]
|
|
|
- return cur.fetchone()
|
|
|
+
|
|
|
+ res = cur.fetchone()
|
|
|
+ write_archive_to_cache(archive_id, *res)
|
|
|
+ return res
|
|
|
|
|
|
|
|
|
def get_blog_archive(blog_id: int):
|
|
|
""" 获取文章的归档 """
|
|
|
+ res = get_blog_archive_from_cache(blog_id)
|
|
|
+ if res is not None:
|
|
|
+ return res
|
|
|
+
|
|
|
cur = db.search("SELECT ArchiveID FROM blog_archive_with_name "
|
|
|
"WHERE BlogID=%s "
|
|
|
"ORDER BY ArchiveName", blog_id)
|
|
|
if cur is None or cur.rowcount == 0:
|
|
|
return []
|
|
|
- return [i[0] for i in cur.fetchall()]
|
|
|
+
|
|
|
+ res = [i[0] for i in cur.fetchall()]
|
|
|
+ write_blog_archive_to_cache(blog_id, res)
|
|
|
+ return res
|
|
|
|
|
|
|
|
|
def delete_archive(archive_id: int):
|
|
|
+ delete_archive_from_cache(archive_id)
|
|
|
+ delete_all_blog_archive_from_cache()
|
|
|
cur = db.delete("DELETE FROM blog_archive WHERE ArchiveID=%s", archive_id)
|
|
|
if cur is None:
|
|
|
return False
|
|
@@ -44,6 +63,7 @@ def delete_archive(archive_id: int):
|
|
|
|
|
|
|
|
|
def add_blog_to_archive(blog_id: int, archive_id: int):
|
|
|
+ delete_blog_archive_from_cache(blog_id)
|
|
|
cur = db.search("SELECT BlogID FROM blog_archive WHERE BlogID=%s AND ArchiveID=%s", blog_id, archive_id)
|
|
|
if cur is None:
|
|
|
return False
|
|
@@ -56,6 +76,7 @@ def add_blog_to_archive(blog_id: int, archive_id: int):
|
|
|
|
|
|
|
|
|
def sub_blog_from_archive(blog_id: int, archive_id: int):
|
|
|
+ delete_blog_archive_from_cache(blog_id)
|
|
|
cur = db.delete("DELETE FROM blog_archive WHERE BlogID=%s AND ArchiveID=%s", blog_id, archive_id)
|
|
|
if cur is None:
|
|
|
return False
|
|
@@ -65,16 +86,16 @@ def sub_blog_from_archive(blog_id: int, archive_id: int):
|
|
|
def get_archive_list(limit: Optional[int] = None, offset: Optional[int] = None):
|
|
|
""" 获取归档列表 """
|
|
|
if limit is not None and offset is not None:
|
|
|
- cur = db.search("SELECT ID, Name, DescribeText, Count "
|
|
|
- "FROM archive_with_count "
|
|
|
- "ORDER BY Count DESC , Name "
|
|
|
+ cur = db.search("SELECT ID "
|
|
|
+ "FROM archive " # TODO: 去除 archive_with_count
|
|
|
+ "ORDER BY Name "
|
|
|
"LIMIT %s "
|
|
|
"OFFSET %s ", limit, offset)
|
|
|
else:
|
|
|
- cur = db.search("SELECT ID, Name, DescribeText, Count "
|
|
|
- "FROM archive_with_count "
|
|
|
- "ORDER BY Count DESC , Name")
|
|
|
+ cur = db.search("SELECT ID "
|
|
|
+ "FROM archive "
|
|
|
+ "ORDER BY Name")
|
|
|
|
|
|
if cur is None or cur.rowcount == 0:
|
|
|
return []
|
|
|
- return cur.fetchall()
|
|
|
+ return [i[0] for i in cur.fetchall()]
|