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