implement delete session endpoint
This commit is contained in:
parent
36fbe26406
commit
76f5540f19
3 changed files with 88 additions and 0 deletions
|
|
@ -155,3 +155,27 @@ async def langflow_history_endpoint(request: Request, chat_service, session_mana
|
||||||
return JSONResponse(
|
return JSONResponse(
|
||||||
{"error": f"Failed to get langflow history: {str(e)}"}, status_code=500
|
{"error": f"Failed to get langflow history: {str(e)}"}, status_code=500
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def delete_session_endpoint(request: Request, chat_service, session_manager):
|
||||||
|
"""Delete a chat session"""
|
||||||
|
user = request.state.user
|
||||||
|
user_id = user.user_id
|
||||||
|
session_id = request.path_params["session_id"]
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Delete from both local storage and Langflow
|
||||||
|
result = await chat_service.delete_session(user_id, session_id)
|
||||||
|
|
||||||
|
if result.get("success"):
|
||||||
|
return JSONResponse({"message": "Session deleted successfully"})
|
||||||
|
else:
|
||||||
|
return JSONResponse(
|
||||||
|
{"error": result.get("error", "Failed to delete session")},
|
||||||
|
status_code=500
|
||||||
|
)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Error deleting session: {e}")
|
||||||
|
return JSONResponse(
|
||||||
|
{"error": f"Failed to delete session: {str(e)}"}, status_code=500
|
||||||
|
)
|
||||||
|
|
|
||||||
12
src/main.py
12
src/main.py
|
|
@ -786,6 +786,18 @@ async def create_app():
|
||||||
),
|
),
|
||||||
methods=["GET"],
|
methods=["GET"],
|
||||||
),
|
),
|
||||||
|
# Session deletion endpoint
|
||||||
|
Route(
|
||||||
|
"/sessions/{session_id}",
|
||||||
|
require_auth(services["session_manager"])(
|
||||||
|
partial(
|
||||||
|
chat.delete_session_endpoint,
|
||||||
|
chat_service=services["chat_service"],
|
||||||
|
session_manager=services["session_manager"],
|
||||||
|
)
|
||||||
|
),
|
||||||
|
methods=["DELETE"],
|
||||||
|
),
|
||||||
# Authentication endpoints
|
# Authentication endpoints
|
||||||
Route(
|
Route(
|
||||||
"/auth/init",
|
"/auth/init",
|
||||||
|
|
|
||||||
|
|
@ -484,3 +484,55 @@ class ChatService:
|
||||||
"total_conversations": len(all_conversations),
|
"total_conversations": len(all_conversations),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async def delete_session(self, user_id: str, session_id: str):
|
||||||
|
"""Delete a session from both local storage and Langflow"""
|
||||||
|
try:
|
||||||
|
# Delete from local conversation storage
|
||||||
|
from agent import delete_user_conversation
|
||||||
|
local_deleted = delete_user_conversation(user_id, session_id)
|
||||||
|
|
||||||
|
# Delete from Langflow using the monitor API
|
||||||
|
langflow_deleted = await self._delete_langflow_session(session_id)
|
||||||
|
|
||||||
|
success = local_deleted or langflow_deleted
|
||||||
|
error_msg = None
|
||||||
|
|
||||||
|
if not success:
|
||||||
|
error_msg = "Session not found in local storage or Langflow"
|
||||||
|
|
||||||
|
return {
|
||||||
|
"success": success,
|
||||||
|
"local_deleted": local_deleted,
|
||||||
|
"langflow_deleted": langflow_deleted,
|
||||||
|
"error": error_msg
|
||||||
|
}
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Error deleting session {session_id} for user {user_id}: {e}")
|
||||||
|
return {
|
||||||
|
"success": False,
|
||||||
|
"error": str(e)
|
||||||
|
}
|
||||||
|
|
||||||
|
async def _delete_langflow_session(self, session_id: str):
|
||||||
|
"""Delete a session from Langflow using the monitor API"""
|
||||||
|
try:
|
||||||
|
response = await clients.langflow_request(
|
||||||
|
"DELETE",
|
||||||
|
f"/api/v1/monitor/messages/session/{session_id}"
|
||||||
|
)
|
||||||
|
|
||||||
|
if response.status_code == 200 or response.status_code == 204:
|
||||||
|
logger.info(f"Successfully deleted session {session_id} from Langflow")
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
logger.warning(
|
||||||
|
f"Failed to delete session {session_id} from Langflow: "
|
||||||
|
f"{response.status_code} - {response.text}"
|
||||||
|
)
|
||||||
|
return False
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Error deleting session {session_id} from Langflow: {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue