40 lines
1.4 KiB
Python
Raw Normal View History

2025-11-10 01:58:41 +01:00
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"],
)
2025-11-13 23:22:05 +01:00
2025-11-10 01:58:41 +01:00
@router.get("/files", response_model=List[FileOut])
async def list_starred_files(current_user: User = Depends(get_current_user)):
2025-11-13 23:22:05 +01:00
files = await File.filter(
owner=current_user, is_starred=True, is_deleted=False
).order_by("name")
2025-11-10 01:58:41 +01:00
return [await FileOut.from_tortoise_orm(f) for f in files]
2025-11-13 23:22:05 +01:00
2025-11-10 01:58:41 +01:00
@router.get("/folders", response_model=List[FolderOut])
async def list_starred_folders(current_user: User = Depends(get_current_user)):
2025-11-13 23:22:05 +01:00
folders = await Folder.filter(
owner=current_user, is_starred=True, is_deleted=False
).order_by("name")
2025-11-10 01:58:41 +01:00
return [await FolderOut.from_tortoise_orm(f) for f in folders]
2025-11-13 23:22:05 +01:00
@router.get(
"/all", response_model=List[FileOut]
) # This will return files and folders as files for now
2025-11-10 01:58:41 +01:00
async def list_all_starred(current_user: User = Depends(get_current_user)):
2025-11-13 23:22:05 +01:00
starred_files = await File.filter(
owner=current_user, is_starred=True, is_deleted=False
).order_by("name")
2025-11-10 01:58:41 +01:00
# For simplicity, we'll return files only for now. A more complex solution would involve a union or a custom schema.
2025-11-13 23:22:05 +01:00
return [await FileOut.from_tortoise_orm(f) for f in starred_files]