from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from app.common.db.session import get_db from app.common.responses.api_response import success_response from app.common.security.deps import require_admin_permission from app.modules.providers.schema import ProviderAccountPayload, ProviderModelPayload from app.modules.providers.service import ProvidersService router = APIRouter(prefix="/api/v1/admin", tags=["admin-providers"]) @router.get("/provider-accounts") def list_provider_accounts( _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(ProvidersService(db).list_accounts()) @router.post("/provider-accounts") def create_provider_account( payload: ProviderAccountPayload, _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(ProvidersService(db).create_account(payload)) @router.put("/provider-accounts/{account_id}") def update_provider_account( account_id: int, payload: ProviderAccountPayload, _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(ProvidersService(db).update_account(account_id, payload)) @router.get("/provider-models") def list_provider_models( _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(ProvidersService(db).list_models()) @router.post("/provider-models") def create_provider_model( payload: ProviderModelPayload, _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(ProvidersService(db).create_model(payload)) @router.put("/provider-models/{model_id}") def update_provider_model( model_id: int, payload: ProviderModelPayload, _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(ProvidersService(db).update_model(model_id, payload))