This commit is contained in:
Garret Patti
2026-06-29 10:41:29 -04:00
parent d48c1e973e
commit 2b0b19eb91
23 changed files with 969 additions and 44 deletions

View File

@@ -5,15 +5,19 @@ from sqlalchemy import select
from sqlalchemy.orm import selectinload
from app.database import get_db
from app.models import Library, MediaItem
from app.models import Library, MediaItem, User
from app.schemas import LibraryCreate, LibraryOut, MediaItemOut, BrowseResult, BrowseEntry
from app.services import scanner, watcher as watcher_service
from app.auth import get_current_user
router = APIRouter(prefix="/libraries", tags=["libraries"])
@router.get("", response_model=list[LibraryOut])
async def list_libraries(db: AsyncSession = Depends(get_db)):
async def list_libraries(
db: AsyncSession = Depends(get_db),
_user: User = Depends(get_current_user),
):
result = await db.execute(select(Library))
return result.scalars().all()
@@ -23,6 +27,7 @@ async def create_library(
body: LibraryCreate,
background_tasks: BackgroundTasks,
db: AsyncSession = Depends(get_db),
_user: User = Depends(get_current_user),
):
path = Path(body.path)
if not path.is_dir():
@@ -44,7 +49,10 @@ async def create_library(
@router.get("/{library_id}/scan-status")
async def get_scan_status(library_id: int):
async def get_scan_status(
library_id: int,
_user: User = Depends(get_current_user),
):
return {"scanning": scanner.is_scanning(library_id)}
@@ -53,6 +61,7 @@ async def rescan_library(
library_id: int,
background_tasks: BackgroundTasks,
db: AsyncSession = Depends(get_db),
_user: User = Depends(get_current_user),
):
result = await db.execute(select(Library).where(Library.id == library_id))
lib = result.scalars().first()
@@ -69,6 +78,7 @@ async def doom_scroll(
library_id: int,
path: str = "",
db: AsyncSession = Depends(get_db),
_user: User = Depends(get_current_user),
):
result = await db.execute(select(Library).where(Library.id == library_id))
if not result.scalars().first():
@@ -87,7 +97,11 @@ async def doom_scroll(
@router.delete("/{library_id}", status_code=204)
async def delete_library(library_id: int, db: AsyncSession = Depends(get_db)):
async def delete_library(
library_id: int,
db: AsyncSession = Depends(get_db),
_user: User = Depends(get_current_user),
):
result = await db.execute(select(Library).where(Library.id == library_id))
lib = result.scalars().first()
if not lib:
@@ -98,7 +112,12 @@ async def delete_library(library_id: int, db: AsyncSession = Depends(get_db)):
@router.get("/{library_id}/browse", response_model=BrowseResult)
async def browse_library(library_id: int, path: str = "", db: AsyncSession = Depends(get_db)):
async def browse_library(
library_id: int,
path: str = "",
db: AsyncSession = Depends(get_db),
_user: User = Depends(get_current_user),
):
result = await db.execute(select(Library).where(Library.id == library_id))
lib = result.scalars().first()
if not lib: