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)