From 71f8614cb508b83ccda51f853d46ef5ee0bc0f5d Mon Sep 17 00:00:00 2001 From: Melchior Reimers Date: Mon, 16 Feb 2026 11:58:14 +0100 Subject: [PATCH] =?UTF-8?q?Crash=20bug:=20self.questdb=5Furl=20=E2=86=92?= =?UTF-8?q?=20self.db=5Furl,=20self.auth=20=E2=86=92=20DB=5FAUTH=20in=20de?= =?UTF-8?q?lete=5Fanalytics=5Ffor=5Fdate()=20Table=20name=20validation=20i?= =?UTF-8?q?n=20get=5Fexisting=5Fdates()=20and=20delete=5Fanalytics=5Ffor?= =?UTF-8?q?=5Fdate()=20Exchange=20validation=20in=20calculate=5Fcustom=5Fa?= =?UTF-8?q?nalytics=5Fdaily()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/analytics/worker.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/analytics/worker.py b/src/analytics/worker.py index a0810be..18d8750 100644 --- a/src/analytics/worker.py +++ b/src/analytics/worker.py @@ -5,6 +5,7 @@ import os import requests from typing import Dict, List, Tuple, Optional import pandas as pd +from src.utils.validation import validate_table_name, validate_exchange logging.basicConfig( level=logging.INFO, @@ -499,8 +500,12 @@ class AnalyticsWorker: """ if exchange_filter: + try: + exchange_filter = validate_exchange(exchange_filter) + except ValueError: + continue query += f" and exchange = '{exchange_filter}'" - + query += f" group by date_trunc('day', timestamp), {group_by_field}" data = self.query_questdb(query) @@ -764,6 +769,7 @@ class AnalyticsWorker: def get_existing_dates(self, table_name: str) -> set: """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}" data = self.query_questdb(query) if not data: @@ -875,12 +881,13 @@ class AnalyticsWorker: for table in tables: try: + table = validate_table_name(table) # QuestDB DELETE syntax delete_query = f"DELETE FROM {table} WHERE timestamp >= '{date_str}' AND timestamp < '{next_day_str}'" response = requests.get( - f"{self.questdb_url}/exec", + f"{self.db_url}/exec", params={'query': delete_query}, - auth=self.auth, + auth=DB_AUTH, timeout=30 ) if response.status_code == 200: