""" Metrics Cleanup Script Deletes PerformanceMetric records older than 30 days to manage database size. Intended to be run as a cron job or scheduled task. """ import os import sys from datetime import datetime, timedelta # Add backend to path for imports sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) from core.database import SessionLocal from core.logging import logger from core.models.performance import PerformanceMetric def cleanup_metrics(retention_days: int = 30): """Delete metrics older than retention period""" cutoff_date = datetime.utcnow() - timedelta(days=retention_days) logger.info(f"Starting metrics cleanup. Deleting records older than {cutoff_date.isoformat()}") db = SessionLocal() try: deleted_count = db.query(PerformanceMetric).filter( PerformanceMetric.timestamp < cutoff_date ).delete(synchronize_session=False) db.commit() logger.info(f"✅ Cleanup complete: Deleted {deleted_count} stale metric records.") except Exception as e: db.rollback() logger.error(f"❌ Cleanup failed: {e}") finally: db.close() if __name__ == "__main__": retention = int(os.getenv("METRICS_RETENTION_DAYS", 30)) cleanup_metrics(retention)