Files
spotizerr-dev/routes/history.py
2025-06-07 18:47:18 +02:00

48 lines
1.8 KiB
Python

from flask import Blueprint, jsonify, request
from routes.utils.history_manager import get_history_entries
import logging
logger = logging.getLogger(__name__)
history_bp = Blueprint("history", __name__, url_prefix="/api/history")
@history_bp.route("", methods=["GET"])
def get_download_history():
"""API endpoint to retrieve download history with pagination, sorting, and filtering."""
try:
limit = request.args.get("limit", 25, type=int)
offset = request.args.get("offset", 0, type=int)
sort_by = request.args.get("sort_by", "timestamp_completed")
sort_order = request.args.get("sort_order", "DESC")
# Basic filtering example: filter by status_final or download_type
filters = {}
status_filter = request.args.get("status_final")
if status_filter:
filters["status_final"] = status_filter
type_filter = request.args.get("download_type")
if type_filter:
filters["download_type"] = type_filter
# Add more filters as needed, e.g., by item_name (would need LIKE for partial match)
# search_term = request.args.get('search')
# if search_term:
# filters['item_name'] = f'%{search_term}%' # This would require LIKE in get_history_entries
entries, total_count = get_history_entries(
limit, offset, sort_by, sort_order, filters
)
return jsonify(
{
"entries": entries,
"total_count": total_count,
"limit": limit,
"offset": offset,
}
)
except Exception as e:
logger.error(f"Error in /api/history endpoint: {e}", exc_info=True)
return jsonify({"error": "Failed to retrieve download history"}), 500