40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
from datetime import datetime
|
|
from typing import Optional
|
|
|
|
from fastapi import APIRouter, HTTPException
|
|
from pydantic import BaseModel
|
|
|
|
from tools.conversation_cleanup import (
|
|
delete_conversation_by_chat_id,
|
|
delete_conversations_by_time,
|
|
)
|
|
|
|
|
|
router = APIRouter(prefix="/api/admin", tags=["admin"])
|
|
|
|
|
|
class DeleteConversationByChatRequest(BaseModel):
|
|
chat_id: str
|
|
|
|
|
|
class DeleteConversationsByTimeRequest(BaseModel):
|
|
before: Optional[datetime] = None
|
|
after: Optional[datetime] = None
|
|
|
|
|
|
@router.post("/conversations/delete/by-chat")
|
|
async def delete_by_chat(request: DeleteConversationByChatRequest):
|
|
if not request.chat_id.strip():
|
|
raise HTTPException(status_code=400, detail="chat_id is empty")
|
|
return await delete_conversation_by_chat_id(request.chat_id)
|
|
|
|
|
|
@router.post("/conversations/delete/by-time")
|
|
async def delete_by_time(request: DeleteConversationsByTimeRequest):
|
|
if request.before is None and request.after is None:
|
|
raise HTTPException(status_code=400, detail="before or after is required")
|
|
return await delete_conversations_by_time(
|
|
before=request.before,
|
|
after=request.after,
|
|
)
|