feat(asyncify): migrate delete provider (#2439)

This commit is contained in:
cthomas
2025-05-26 13:38:42 -07:00
committed by GitHub
parent 8c64bb7fec
commit a6a7de7941
2 changed files with 18 additions and 3 deletions

View File

@@ -87,7 +87,7 @@ def check_provider(
@router.delete("/{provider_id}", response_model=None, operation_id="delete_provider")
def delete_provider(
async def delete_provider(
provider_id: str,
actor_id: Optional[str] = Header(None, alias="user_id"),
server: "SyncServer" = Depends(get_letta_server),
@@ -96,8 +96,8 @@ def delete_provider(
Delete an existing custom provider
"""
try:
actor = server.user_manager.get_user_or_default(user_id=actor_id)
server.provider_manager.delete_provider_by_id(provider_id=provider_id, actor=actor)
actor = await server.user_manager.get_actor_or_default_async(actor_id=actor_id)
await server.provider_manager.delete_provider_by_id_async(provider_id=provider_id, actor=actor)
return JSONResponse(status_code=status.HTTP_200_OK, content={"message": f"Provider id={provider_id} successfully deleted"})
except NoResultFound:
raise HTTPException(status_code=404, detail=f"Provider provider_id={provider_id} not found for user_id={actor.id}.")

View File

@@ -86,6 +86,21 @@ class ProviderManager:
session.commit()
@enforce_types
@trace_method
async def delete_provider_by_id_async(self, provider_id: str, actor: PydanticUser):
"""Delete a provider."""
async with db_registry.async_session() as session:
# Clear api key field
existing_provider = await ProviderModel.read_async(db_session=session, identifier=provider_id, actor=actor)
existing_provider.api_key = None
await existing_provider.update_async(session, actor=actor)
# Soft delete in provider table
await existing_provider.delete_async(session, actor=actor)
await session.commit()
@enforce_types
@trace_method
def list_providers(