""" Folders API router """ from fastapi import APIRouter, Depends, HTTPException from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from typing import List from app.database import get_db from app.models import Folder, SourceRoot router = APIRouter() @router.get("") async def get_folders(db: AsyncSession = Depends(get_db)): """Get folder tree""" result = await db.execute(select(Folder)) folders = result.scalars().all() return folders @router.post("/{folder_id}/scan") async def scan_folder(folder_id: str, db: AsyncSession = Depends(get_db)): """Trigger manual re-scan of folder""" from app.tasks.scan import scan_folder as scan_task result = await db.execute(select(Folder).where(Folder.id == folder_id)) folder = result.scalar_one_or_none() if not folder: raise HTTPException(status_code=404, detail="Folder not found") scan_task.delay(folder.path) return {"status": "success", "message": f"Scan queued for {folder.path}"}