Files
innotexBoard/backend/app/api/endpoints/packages.py
2026-01-16 18:40:39 +01:00

69 lines
2.2 KiB
Python

from fastapi import APIRouter, Depends, Query
from app.core.security import get_current_user, User
from app.services.packages import PackageService, PackageListResponse, PackageOperationResult
router = APIRouter()
@router.get("/info")
async def get_packages_info(current_user: User = Depends(get_current_user)):
"""Obtient les infos sur les paquets (total, installés, upgradables)"""
try:
return PackageService.get_system_info()
except Exception as e:
return {"error": str(e)}
@router.get("/installed", response_model=PackageListResponse)
async def list_installed_packages(
search: str = Query(None, description="Rechercher un paquet"),
limit: int = Query(50, ge=1, le=200),
offset: int = Query(0, ge=0),
current_user: User = Depends(get_current_user)
):
"""Liste les paquets installés"""
try:
return PackageService.list_installed_packages(search=search, limit=limit, offset=offset)
except Exception as e:
return {"error": str(e)}
@router.get("/search")
async def search_packages(
q: str = Query(..., description="Termes de recherche"),
limit: int = Query(20, ge=1, le=100),
current_user: User = Depends(get_current_user)
):
"""Recherche des paquets disponibles"""
try:
return PackageService.search_packages(q, limit=limit)
except Exception as e:
return {"error": str(e)}
@router.post("/install")
async def install_package(
package: str = Query(..., description="Nom du paquet à installer"),
current_user: User = Depends(get_current_user)
) -> PackageOperationResult:
"""Installe un paquet"""
return await PackageService.install_package(package)
@router.post("/remove")
async def remove_package(
package: str = Query(..., description="Nom du paquet à supprimer"),
current_user: User = Depends(get_current_user)
) -> PackageOperationResult:
"""Supprime un paquet"""
return await PackageService.remove_package(package)
@router.post("/upgrade")
async def upgrade_package(
package: str = Query(..., description="Nom du paquet à mettre à jour"),
current_user: User = Depends(get_current_user)
) -> PackageOperationResult:
"""Met à jour un paquet"""
return await PackageService.upgrade_package(package)