61 lines
2.0 KiB
Python
61 lines
2.0 KiB
Python
from flask import Blueprint, jsonify, request, current_app
|
|
from ..utils import get_db_connection
|
|
|
|
max_time_diff_bp = Blueprint('max_time_diff', __name__, url_prefix='/max_time_diff')
|
|
|
|
@max_time_diff_bp.route('/', strict_slashes=False)
|
|
def max_time_diff():
|
|
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.'})
|
|
|
|
conn = get_db_connection()
|
|
cursor = conn.cursor()
|
|
|
|
# Angepasste SQL-Abfrage
|
|
query = """
|
|
WITH time_differences AS (
|
|
SELECT
|
|
create_time AS start_time,
|
|
LEAD(create_time) OVER (ORDER BY create_time) AS end_time,
|
|
TIMESTAMPDIFF(SECOND, create_time, LEAD(create_time) OVER (ORDER BY create_time)) AS time_diff
|
|
FROM gi_debugger_entry
|
|
WHERE webservice_id = %s
|
|
AND create_time BETWEEN %s AND %s
|
|
)
|
|
SELECT start_time, end_time, time_diff
|
|
FROM time_differences
|
|
WHERE time_diff = (
|
|
SELECT MAX(time_diff)
|
|
FROM time_differences
|
|
);
|
|
"""
|
|
start_datetime = f"{start_date} {start_time}"
|
|
end_datetime = f"{end_date} {end_time}"
|
|
|
|
try:
|
|
cursor.execute(query, (current_app.config['WEB_SERVICE_ID'], start_datetime, end_datetime))
|
|
result = cursor.fetchone()
|
|
conn.close()
|
|
|
|
# Ergebnis zurückgeben
|
|
if result and result[2] is not None:
|
|
return jsonify({
|
|
'max_time_diff_seconds': result[2],
|
|
'start_time': result[0],
|
|
'end_time': result[1]
|
|
})
|
|
else:
|
|
return jsonify({
|
|
'max_time_diff_seconds': 0,
|
|
'start_time': None,
|
|
'end_time': None
|
|
})
|
|
except Exception as e:
|
|
conn.close()
|
|
return jsonify({'error': str(e)})
|