mirror of
https://github.com/DrizzleTime/Foxel.git
synced 2026-09-07 00:27:44 +08:00
feat: add recent files backend APIs (#119)
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
from datetime import datetime, timezone
|
||||
|
||||
from models.database import RecentFile
|
||||
|
||||
|
||||
class RecentFilesService:
|
||||
@staticmethod
|
||||
async def record_opened_file(user_id: int, path: str) -> dict:
|
||||
item, created = await RecentFile.get_or_create(user_id=user_id, path=path)
|
||||
if not created:
|
||||
await RecentFile.filter(id=item.id).update(opened_at=datetime.now(timezone.utc))
|
||||
await item.fetch_from_db()
|
||||
return {"id": item.id, "path": item.path, "opened_at": item.opened_at.isoformat()}
|
||||
|
||||
@staticmethod
|
||||
async def list_recent_files(user_id: int, limit: int) -> list[dict]:
|
||||
items = await RecentFile.filter(user_id=user_id).order_by("-opened_at").limit(limit)
|
||||
return [{"id": i.id, "path": i.path, "opened_at": i.opened_at.isoformat()} for i in items]
|
||||
|
||||
@staticmethod
|
||||
async def clear_recent_files(user_id: int) -> dict:
|
||||
deleted = await RecentFile.filter(user_id=user_id).delete()
|
||||
return {"deleted": deleted}
|
||||
Reference in New Issue
Block a user