fix: robust error handling in goal value fetcher
Prevents crashes when: - Goal types have NULL source_table/column (lean_mass, inactive placeholders) - Old goals reference inactive goal types - SQL queries fail for any reason Changes: - Guard clause checks table/column before SQL - try-catch wraps all aggregation queries - Returns None gracefully instead of crashing endpoint - Logs warnings for debugging Fixes: Goals page not loading due to /api/goals/list crash
This commit is contained in:
parent
1e758696fd
commit
1f4ee5021e
|
|
@ -245,8 +245,14 @@ def _fetch_by_aggregation_method(
|
||||||
- min_30d: Minimum value in last 30 days
|
- min_30d: Minimum value in last 30 days
|
||||||
- max_30d: Maximum value in last 30 days
|
- max_30d: Maximum value in last 30 days
|
||||||
"""
|
"""
|
||||||
|
# Guard: source_table/column required for simple aggregation
|
||||||
|
if not table or not column:
|
||||||
|
print(f"[WARNING] Missing source_table or source_column for aggregation")
|
||||||
|
return None
|
||||||
|
|
||||||
cur = get_cursor(conn)
|
cur = get_cursor(conn)
|
||||||
|
|
||||||
|
try:
|
||||||
if method == 'latest':
|
if method == 'latest':
|
||||||
cur.execute(f"""
|
cur.execute(f"""
|
||||||
SELECT {column} FROM {table}
|
SELECT {column} FROM {table}
|
||||||
|
|
@ -323,6 +329,10 @@ def _fetch_by_aggregation_method(
|
||||||
print(f"[WARNING] Unknown aggregation method: {method}")
|
print(f"[WARNING] Unknown aggregation method: {method}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"[ERROR] Failed to fetch value from {table}.{column} using {method}: {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
def _execute_calculation_formula(conn, profile_id: str, formula_json: str) -> Optional[float]:
|
def _execute_calculation_formula(conn, profile_id: str, formula_json: str) -> Optional[float]:
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user