from typing import List from fastapi import APIRouter, Depends from ..auth import get_current_user from ..models import User, File, Folder from ..schemas import FileOut, FolderOut router = APIRouter( prefix="/starred", tags=["starred"], ) @router.get("/files", response_model=List[FileOut]) async def list_starred_files(current_user: User = Depends(get_current_user)): files = await File.filter(owner=current_user, is_starred=True, is_deleted=False).order_by("name") return [await FileOut.from_tortoise_orm(f) for f in files] @router.get("/folders", response_model=List[FolderOut]) async def list_starred_folders(current_user: User = Depends(get_current_user)): folders = await Folder.filter(owner=current_user, is_starred=True, is_deleted=False).order_by("name") return [await FolderOut.from_tortoise_orm(f) for f in folders] @router.get("/all", response_model=List[FileOut]) # This will return files and folders as files for now async def list_all_starred(current_user: User = Depends(get_current_user)): starred_files = await File.filter(owner=current_user, is_starred=True, is_deleted=False).order_by("name") # For simplicity, we'll return files only for now. A more complex solution would involve a union or a custom schema. return [await FileOut.from_tortoise_orm(f) for f in starred_files]