feat(sofiia-console): add audit query endpoint with cursor pagination
Made-with: Cursor
This commit is contained in:
@@ -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 "
|
||||
|
||||
Reference in New Issue
Block a user