|
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] |