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)