33 lines
1.0 KiB
Python
33 lines
1.0 KiB
Python
"""
|
|
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}"} |