Crash bug: self.questdb_url → self.db_url, self.auth → DB_AUTH in delete_analytics_for_date()

Table name validation in get_existing_dates() and delete_analytics_for_date()
Exchange validation in calculate_custom_analytics_daily()
This commit is contained in:
Melchior Reimers
2026-02-16 11:58:14 +01:00
parent 80d8801728
commit 71f8614cb5

View File

@@ -5,6 +5,7 @@ import os
import requests import requests
from typing import Dict, List, Tuple, Optional from typing import Dict, List, Tuple, Optional
import pandas as pd import pandas as pd
from src.utils.validation import validate_table_name, validate_exchange
logging.basicConfig( logging.basicConfig(
level=logging.INFO, level=logging.INFO,
@@ -499,6 +500,10 @@ class AnalyticsWorker:
""" """
if exchange_filter: if exchange_filter:
try:
exchange_filter = validate_exchange(exchange_filter)
except ValueError:
continue
query += f" and exchange = '{exchange_filter}'" query += f" and exchange = '{exchange_filter}'"
query += f" group by date_trunc('day', timestamp), {group_by_field}" query += f" group by date_trunc('day', timestamp), {group_by_field}"
@@ -764,6 +769,7 @@ class AnalyticsWorker:
def get_existing_dates(self, table_name: str) -> set: def get_existing_dates(self, table_name: str) -> set:
"""Holt alle bereits berechneten Daten aus einer Analytics-Tabelle""" """Holt alle bereits berechneten Daten aus einer Analytics-Tabelle"""
table_name = validate_table_name(table_name)
query = f"select distinct date_trunc('day', timestamp) as date from {table_name}" query = f"select distinct date_trunc('day', timestamp) as date from {table_name}"
data = self.query_questdb(query) data = self.query_questdb(query)
if not data: if not data:
@@ -875,12 +881,13 @@ class AnalyticsWorker:
for table in tables: for table in tables:
try: try:
table = validate_table_name(table)
# QuestDB DELETE syntax # QuestDB DELETE syntax
delete_query = f"DELETE FROM {table} WHERE timestamp >= '{date_str}' AND timestamp < '{next_day_str}'" delete_query = f"DELETE FROM {table} WHERE timestamp >= '{date_str}' AND timestamp < '{next_day_str}'"
response = requests.get( response = requests.get(
f"{self.questdb_url}/exec", f"{self.db_url}/exec",
params={'query': delete_query}, params={'query': delete_query},
auth=self.auth, auth=DB_AUTH,
timeout=30 timeout=30
) )
if response.status_code == 200: if response.status_code == 200: