968 add flagged message table and endpoints (#1325)

* Added flagged message table

* Added alembic migration and updated imports to match style

* Added GET endpoint to query all flagged messages

* Updates from linter

* Added POST endpoint for processing flagged messages

* Added pydantic interface model and fixed limit update bug

* fixed session in admin endpoint and added require session refresh for returned update

* removed unused import
This commit is contained in:
Graeme Harris
2023-02-07 22:39:24 +01:00
committed by GitHub
parent 1153734edb
commit 66b7ed2b9b
5 changed files with 132 additions and 0 deletions
+35
View File
@@ -1,4 +1,5 @@
from datetime import datetime
from typing import Optional
from uuid import UUID
import pydantic
@@ -162,3 +163,37 @@ async def purge_user_messages(
logger.info(f"{before=}; {after=}")
return PurgeResultModel(before=before, after=after, preview=preview, duration=timer.elapsed)
class FlaggedMessageResponse(pydantic.BaseModel):
message_id: UUID
processed: bool
created_date: Optional[datetime]
@router.get("/flagged_messages", response_model=list[FlaggedMessageResponse])
async def get_flagged_messages(
max_count: Optional[int],
session: deps.Session = Depends(deps.get_db),
api_client: ApiClient = Depends(deps.get_trusted_api_client),
) -> str:
assert api_client.trusted
pr = PromptRepository(session, api_client)
flagged_messages = pr.fetch_flagged_messages(max_count=max_count)
resp = [FlaggedMessageResponse(**msg.__dict__) for msg in flagged_messages]
return resp
@router.post("/admin/flagged_messages/{message_id}/processed", response_model=FlaggedMessageResponse)
async def process_flagged_messages(
message_id: UUID,
session: deps.Session = Depends(deps.get_db),
api_client: ApiClient = Depends(deps.get_trusted_api_client),
) -> str:
assert api_client.trusted
pr = PromptRepository(session, api_client)
flagged_msg = pr.process_flagged_message(message_id=message_id)
resp = FlaggedMessageResponse(**flagged_msg.__dict__)
return resp