feat: add sort_order parameter to access log retrieval for flexible timestamp sorting

This commit is contained in:
Lorenzo Venerandi
2026-03-04 13:55:10 +01:00
parent 8321164514
commit 5f1fedab3d
2 changed files with 6 additions and 2 deletions

View File

@@ -883,6 +883,7 @@ class DatabaseManager:
ip_filter: Optional[str] = None, ip_filter: Optional[str] = None,
suspicious_only: bool = False, suspicious_only: bool = False,
since_minutes: Optional[int] = None, since_minutes: Optional[int] = None,
sort_order: str = "desc",
) -> Dict[str, Any]: ) -> Dict[str, Any]:
""" """
Retrieve access logs with pagination and optional filtering. Retrieve access logs with pagination and optional filtering.
@@ -893,6 +894,7 @@ class DatabaseManager:
ip_filter: Filter by IP address ip_filter: Filter by IP address
suspicious_only: Only return suspicious requests suspicious_only: Only return suspicious requests
since_minutes: Only return logs from the last N minutes since_minutes: Only return logs from the last N minutes
sort_order: Sort direction for timestamp ('asc' or 'desc')
Returns: Returns:
List of access log dictionaries List of access log dictionaries
@@ -900,7 +902,8 @@ class DatabaseManager:
session = self.session session = self.session
try: try:
offset = (page - 1) * page_size offset = (page - 1) * page_size
query = session.query(AccessLog).order_by(AccessLog.timestamp.desc()) order = AccessLog.timestamp.asc() if sort_order == "asc" else AccessLog.timestamp.desc()
query = session.query(AccessLog).order_by(order)
if ip_filter: if ip_filter:
query = query.filter(AccessLog.ip == sanitize_ip(ip_filter)) query = query.filter(AccessLog.ip == sanitize_ip(ip_filter))

View File

@@ -180,7 +180,8 @@ async def htmx_access_logs_by_ip(
): ):
db = get_db() db = get_db()
result = db.get_access_logs_paginated( result = db.get_access_logs_paginated(
page=max(1, page), page_size=25, ip_filter=ip_filter page=max(1, page), page_size=25, ip_filter=ip_filter,
sort_order=sort_order if sort_order in ("asc", "desc") else "desc",
) )
# Normalize pagination key (DB returns total_attackers, template expects total) # Normalize pagination key (DB returns total_attackers, template expects total)