Spaces:
Sleeping
Sleeping
| """ | |
| Cached query wrappers for Streamlit performance. | |
| Uses @st.cache_data to avoid re-fetching identical data on every rerun. | |
| Tag names must be passed as tuples (not lists) for hashability. | |
| """ | |
| import streamlit as st | |
| from typing import Optional | |
| from datetime import datetime | |
| from core.db_connector import get_db_connector | |
| def cached_get_pivot_data( | |
| tag_names: tuple, | |
| start_time: datetime, | |
| end_time: datetime, | |
| table_override: Optional[str] = None, | |
| _cache_ver: int = 2, | |
| ): | |
| """Cached pivot data query (10-minute TTL). Supports table_override for resolution control.""" | |
| db = get_db_connector() | |
| if table_override: | |
| # Fetch via get_sensor_data with override, then pivot manually | |
| df = db.get_sensor_data(list(tag_names), start_time, end_time, table_override=table_override) | |
| if df.empty: | |
| return df | |
| pivot_df = df.pivot_table(index='timestamp', columns='tag_name', values='value').reset_index() | |
| pivot_df.columns.name = None | |
| return pivot_df | |
| return db.get_pivot_data(list(tag_names), start_time, end_time) | |
| def cached_get_sensor_data( | |
| tag_names: tuple, | |
| start_time: datetime, | |
| end_time: datetime, | |
| table_override: Optional[str] = None, | |
| _cache_ver: int = 2, | |
| ): | |
| """Cached sensor data query (10-minute TTL)""" | |
| db = get_db_connector() | |
| return db.get_sensor_data(list(tag_names), start_time, end_time, table_override=table_override) | |
| def cached_get_available_months(): | |
| """Cached available months query (1-hour TTL)""" | |
| db = get_db_connector() | |
| return db.get_available_months() | |