feat(sofiia-console): add audit query endpoint with cursor pagination

Made-with: Cursor
This commit is contained in:
Apple
2026-03-02 09:36:11 -08:00
parent 9e70fc83d2
commit 11e0ba7264
3 changed files with 145 additions and 2 deletions

View File

@@ -814,8 +814,31 @@ async def list_audit_events(
*,
event: Optional[str] = None,
operator_id: Optional[str] = None,
status: Optional[str] = None,
node_id: Optional[str] = None,
chat_id: Optional[str] = None,
limit: int = 100,
) -> List[Dict[str, Any]]:
return await list_audit_events_page(
event=event,
operator_id=operator_id,
status=status,
node_id=node_id,
chat_id=chat_id,
limit=limit,
)
async def list_audit_events_page(
*,
event: Optional[str] = None,
operator_id: Optional[str] = None,
status: Optional[str] = None,
node_id: Optional[str] = None,
chat_id: Optional[str] = None,
limit: int = 100,
before_ts: Optional[str] = None,
before_id: Optional[str] = None,
) -> List[Dict[str, Any]]:
db = await get_db()
clauses = ["1=1"]
@@ -826,9 +849,19 @@ async def list_audit_events(
if operator_id:
clauses.append("operator_id=?")
params.append(operator_id)
if status:
clauses.append("status=?")
params.append(status)
if node_id:
clauses.append("node_id=?")
params.append(node_id)
if chat_id:
clauses.append("chat_id=?")
params.append(chat_id)
if before_ts:
bid = before_id or "~~~~~~~~"
clauses.append("(ts < ? OR (ts = ? AND id < ?))")
params.extend([before_ts, before_ts, bid])
params.append(max(1, min(int(limit), 500)))
sql = (
"SELECT * FROM audit_events WHERE "