reafactor: 优化代码设置
This commit is contained in:
parent
1bdccb437b
commit
232a86e11f
|
|
@ -2,8 +2,9 @@
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from fastapi import APIRouter, Depends, HTTPException
|
from fastapi import APIRouter, Depends, HTTPException
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
from luxx.database import get_db, SessionLocal
|
from luxx.database import get_db
|
||||||
from luxx.models import User, LLMProvider
|
from luxx.models import User, LLMProvider
|
||||||
from luxx.routes.auth import get_current_user
|
from luxx.routes.auth import get_current_user
|
||||||
from luxx.utils.helpers import success_response
|
from luxx.utils.helpers import success_response
|
||||||
|
|
@ -37,11 +38,10 @@ class ProviderUpdate(BaseModel):
|
||||||
|
|
||||||
@router.get("/", response_model=dict)
|
@router.get("/", response_model=dict)
|
||||||
def list_providers(
|
def list_providers(
|
||||||
current_user: User = Depends(get_current_user)
|
current_user: User = Depends(get_current_user),
|
||||||
|
db: Session = Depends(get_db)
|
||||||
):
|
):
|
||||||
"""Get user's LLM providers"""
|
"""Get user's LLM providers"""
|
||||||
db = SessionLocal()
|
|
||||||
try:
|
|
||||||
providers = db.query(LLMProvider).filter(
|
providers = db.query(LLMProvider).filter(
|
||||||
LLMProvider.user_id == current_user.id
|
LLMProvider.user_id == current_user.id
|
||||||
).order_by(LLMProvider.is_default.desc(), LLMProvider.created_at.desc()).all()
|
).order_by(LLMProvider.is_default.desc(), LLMProvider.created_at.desc()).all()
|
||||||
|
|
@ -50,19 +50,16 @@ def list_providers(
|
||||||
"providers": [p.to_dict() for p in providers],
|
"providers": [p.to_dict() for p in providers],
|
||||||
"total": len(providers)
|
"total": len(providers)
|
||||||
})
|
})
|
||||||
finally:
|
|
||||||
db.close()
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/", response_model=dict)
|
@router.post("/", response_model=dict)
|
||||||
def create_provider(
|
def create_provider(
|
||||||
provider: ProviderCreate,
|
provider: ProviderCreate,
|
||||||
current_user: User = Depends(get_current_user)
|
current_user: User = Depends(get_current_user),
|
||||||
|
db: Session = Depends(get_db)
|
||||||
):
|
):
|
||||||
"""Create a new LLM provider"""
|
"""Create a new LLM provider"""
|
||||||
db = SessionLocal()
|
|
||||||
try:
|
try:
|
||||||
|
|
||||||
db_provider = LLMProvider(
|
db_provider = LLMProvider(
|
||||||
user_id=current_user.id,
|
user_id=current_user.id,
|
||||||
name=provider.name,
|
name=provider.name,
|
||||||
|
|
@ -80,18 +77,15 @@ def create_provider(
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
db.rollback()
|
db.rollback()
|
||||||
raise HTTPException(status_code=400, detail=str(e))
|
raise HTTPException(status_code=400, detail=str(e))
|
||||||
finally:
|
|
||||||
db.close()
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{provider_id}", response_model=dict)
|
@router.get("/{provider_id}", response_model=dict)
|
||||||
def get_provider(
|
def get_provider(
|
||||||
provider_id: int,
|
provider_id: int,
|
||||||
current_user: User = Depends(get_current_user)
|
current_user: User = Depends(get_current_user),
|
||||||
|
db: Session = Depends(get_db)
|
||||||
):
|
):
|
||||||
"""Get provider details"""
|
"""Get provider details"""
|
||||||
db = SessionLocal()
|
|
||||||
try:
|
|
||||||
provider = db.query(LLMProvider).filter(
|
provider = db.query(LLMProvider).filter(
|
||||||
LLMProvider.id == provider_id,
|
LLMProvider.id == provider_id,
|
||||||
LLMProvider.user_id == current_user.id
|
LLMProvider.user_id == current_user.id
|
||||||
|
|
@ -101,19 +95,16 @@ def get_provider(
|
||||||
raise HTTPException(status_code=404, detail="Provider not found")
|
raise HTTPException(status_code=404, detail="Provider not found")
|
||||||
|
|
||||||
return success_response(data=provider.to_dict(include_key=True))
|
return success_response(data=provider.to_dict(include_key=True))
|
||||||
finally:
|
|
||||||
db.close()
|
|
||||||
|
|
||||||
|
|
||||||
@router.put("/{provider_id}", response_model=dict)
|
@router.put("/{provider_id}", response_model=dict)
|
||||||
def update_provider(
|
def update_provider(
|
||||||
provider_id: int,
|
provider_id: int,
|
||||||
update: ProviderUpdate,
|
update: ProviderUpdate,
|
||||||
current_user: User = Depends(get_current_user)
|
current_user: User = Depends(get_current_user),
|
||||||
|
db: Session = Depends(get_db)
|
||||||
):
|
):
|
||||||
"""Update provider"""
|
"""Update provider"""
|
||||||
db = SessionLocal()
|
|
||||||
try:
|
|
||||||
provider = db.query(LLMProvider).filter(
|
provider = db.query(LLMProvider).filter(
|
||||||
LLMProvider.id == provider_id,
|
LLMProvider.id == provider_id,
|
||||||
LLMProvider.user_id == current_user.id
|
LLMProvider.user_id == current_user.id
|
||||||
|
|
@ -137,27 +128,24 @@ def update_provider(
|
||||||
for key, value in update_data.items():
|
for key, value in update_data.items():
|
||||||
setattr(provider, key, value)
|
setattr(provider, key, value)
|
||||||
|
|
||||||
|
try:
|
||||||
db.commit()
|
db.commit()
|
||||||
db.refresh(provider)
|
db.refresh(provider)
|
||||||
|
|
||||||
return success_response(data=provider.to_dict(include_key=True))
|
return success_response(data=provider.to_dict(include_key=True))
|
||||||
except HTTPException:
|
except HTTPException:
|
||||||
raise
|
raise
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
db.rollback()
|
db.rollback()
|
||||||
raise HTTPException(status_code=400, detail=str(e))
|
raise HTTPException(status_code=400, detail=str(e))
|
||||||
finally:
|
|
||||||
db.close()
|
|
||||||
|
|
||||||
|
|
||||||
@router.delete("/{provider_id}", response_model=dict)
|
@router.delete("/{provider_id}", response_model=dict)
|
||||||
def delete_provider(
|
def delete_provider(
|
||||||
provider_id: int,
|
provider_id: int,
|
||||||
current_user: User = Depends(get_current_user)
|
current_user: User = Depends(get_current_user),
|
||||||
|
db: Session = Depends(get_db)
|
||||||
):
|
):
|
||||||
"""Delete provider"""
|
"""Delete provider"""
|
||||||
db = SessionLocal()
|
|
||||||
try:
|
|
||||||
provider = db.query(LLMProvider).filter(
|
provider = db.query(LLMProvider).filter(
|
||||||
LLMProvider.id == provider_id,
|
LLMProvider.id == provider_id,
|
||||||
LLMProvider.user_id == current_user.id
|
LLMProvider.user_id == current_user.id
|
||||||
|
|
@ -170,19 +158,15 @@ def delete_provider(
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
||||||
return success_response(message="Provider deleted")
|
return success_response(message="Provider deleted")
|
||||||
finally:
|
|
||||||
db.close()
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{provider_id}/test")
|
@router.post("/{provider_id}/test")
|
||||||
def test_provider(
|
def test_provider(
|
||||||
provider_id: int,
|
provider_id: int,
|
||||||
current_user: User = Depends(get_current_user)
|
current_user: User = Depends(get_current_user),
|
||||||
|
db: Session = Depends(get_db)
|
||||||
):
|
):
|
||||||
"""Test provider connection"""
|
"""Test provider connection"""
|
||||||
|
|
||||||
try:
|
|
||||||
db = SessionLocal()
|
|
||||||
try:
|
try:
|
||||||
provider = db.query(LLMProvider).filter(
|
provider = db.query(LLMProvider).filter(
|
||||||
LLMProvider.id == provider_id,
|
LLMProvider.id == provider_id,
|
||||||
|
|
@ -220,7 +204,5 @@ def test_provider(
|
||||||
"message": result.get("message") or (f"HTTP {result.get('status_code', '?')}: {result.get('response_body') or 'Unknown error'}"),
|
"message": result.get("message") or (f"HTTP {result.get('status_code', '?')}: {result.get('response_body') or 'Unknown error'}"),
|
||||||
"data": result
|
"data": result
|
||||||
}
|
}
|
||||||
finally:
|
|
||||||
db.close()
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return {"success": False, "message": f"Exception {str(e)}", "error_type": type(e).__name__, "traceback": traceback.format_exc()[:500]}
|
return {"success": False, "message": f"Exception {str(e)}", "error_type": type(e).__name__, "traceback": traceback.format_exc()[:500]}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue