from flask import Blueprint, jsonify, request, current_app from ..utils import get_db_connection fuenf_minuten_bp = Blueprint('fuenf_minuten', __name__, url_prefix='/fuenf_minuten') @fuenf_minuten_bp.route('/', strict_slashes=False) def fuenf_minuten(): # Abrufen der Filterparameter aus der Anfrage start_date = request.args.get('start_date') end_date = request.args.get('end_date') start_time = request.args.get('start_time', '00:00') end_time = request.args.get('end_time', '23:59') if not start_date or not end_date: return jsonify({'error': 'Bitte sowohl Start- als auch End-Datum auswählen.'}) # Aufbau der Verbindung zur Datenbank conn = get_db_connection() cursor = conn.cursor() # SQL-Abfrage query = """ WITH time_slots AS ( SELECT DATE_FORMAT(create_time, '%Y-%m-%d %H:%i') AS time_slot, COUNT(*) AS transmission_count FROM gi_debugger_entry WHERE webservice_id = %s AND create_time BETWEEN %s AND %s GROUP BY time_slot ), all_times AS ( SELECT DATE_FORMAT(TIMESTAMPADD(MINUTE, (@row := @row + 5), %s), '%Y-%m-%d %H:%i') AS time_slot FROM (SELECT @row := -5) AS vars CROSS JOIN ( SELECT 1 AS dummy FROM gi_debugger_entry LIMIT 100000 ) AS generator WHERE TIMESTAMPADD(MINUTE, @row, %s) <= %s ) SELECT all_times.time_slot, COALESCE(time_slots.transmission_count, 0) AS transmission_count FROM all_times LEFT JOIN time_slots ON all_times.time_slot = time_slots.time_slot ORDER BY all_times.time_slot; """ start_datetime = f"{start_date} {start_time}" end_datetime = f"{end_date} {end_time}" # Debugging: Ausgabe der Parameter print(f"Start datetime: {start_datetime}") print(f"End datetime: {end_datetime}") print(f"Executing query for WEB_SERVICE_ID: {current_app.config['WEB_SERVICE_ID']}") try: # Ausführen der SQL-Abfrage cursor.execute(query, ( current_app.config['WEB_SERVICE_ID'], start_datetime, end_datetime, start_datetime, start_datetime, end_datetime )) results = cursor.fetchall() # Debugging: Ausgabe der Ergebnisse print("SQL query executed successfully.") print("Results:", results) conn.close() # Formatierung der Ergebnisse für die API-Antwort return jsonify([{'time_slot': row[0], 'transmission_count': row[1]} for row in results]) except Exception as e: # Fehlerbehandlung und Debugging conn.close() print("Error during SQL execution:", str(e)) return jsonify({'error': str(e)})