WismerBot / material.py
tonydong365
Develop first time
3894d14
Raw
History Blame Contribute Delete
1.39 kB
import time
CATEGORIES = ["Language", "Math", "Science", "Music", "Geography", "History", "Transition", "Health"]
# --- 内部辅助:获取自增 ID ---
async def _get_next_id(db, category):
await db.inc("counters", category, "current_value", 1)
doc = await db.get("counters", category)
return str(doc["current_value"])
# --- 上传资料 (默认 pending 状态) ---
async def upload_material_logic(db, category, title, url, user_id):
if category not in CATEGORIES: return None
new_id = await _get_next_id(db, category)
data = {
"title": title,
"url": url,
"author": user_id,
"status": "pending", # 初始状态为待审核
"time": int(time.time())
}
await db.set(category, new_id, data)
return new_id
# --- 审核资料 ---
async def approve_material_logic(db, category, index_id):
return await db.update(category, index_id, {"status": "approved"})
# --- 删除资料 ---
async def delete_material_logic(db, category, index_id):
return await db.delete(category, index_id)
# --- 获取列表 (根据状态过滤) ---
async def list_materials_logic(db, category, status="approved"):
# 如果传入了 category,只查该学科;否则可能需要遍历(为了简洁,这里建议指定 category)
query = {"status": status}
return await db.find_many(category, query=query, limit=20)