import logging from datetime import datetime from typing import Dict, Any, Optional import psycopg2 def get_commodity_statistics(conn: psycopg2.extensions.connection) -> Dict[str, Any]: """Get statistics about commodity data.""" cursor = None try: cursor = conn.cursor() stats = {} # Get basic counts cursor.execute(""" SELECT COUNT(DISTINCT id) as total_commodities, COUNT(*) as total_prices, MIN(date) as earliest_date, MAX(date) as latest_date, COUNT(DISTINCT commodity_id) as commodities_with_prices FROM commodities_ref r LEFT JOIN commodities_prices p ON r.id = p.commodity_id WHERE r.is_active = true """) row = cursor.fetchone() if row: stats.update({ 'total_commodities': row[0], 'total_prices': row[1], 'earliest_date': row[2], 'latest_date': row[3], 'commodities_with_prices': row[4] }) return stats except Exception as e: logging.error(f"Error getting commodity statistics: {e}") return {} finally: if cursor: cursor.close()