69 lines
2.2 KiB
Python
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)
|