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
|
||||
- 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)
|
||||
|
||||
try:
|
||||
if method == 'latest':
|
||||
cur.execute(f"""
|
||||
SELECT {column} FROM {table}
|
||||
|
|
@ -323,6 +329,10 @@ def _fetch_by_aggregation_method(
|
|||
print(f"[WARNING] Unknown aggregation method: {method}")
|
||||
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]:
|
||||
"""
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user