#!/usr/bin/env python3 """Database Connection Health Monitor""" import sys import time from postgresql_models import engine, SessionLocal, Song, Profile, Plan def check_connection_pool(): """Check database connection pool health""" pool = engine.pool print(f"šŸ“Š Connection Pool Status:") print(f" Size: {pool.size()}") print(f" Checked out: {pool.checkedout()}") print(f" Overflow: {pool.overflow()}") print(f" Checked in: {pool.checkedin()}") return pool.checkedout() < (pool.size() + pool.overflow()) * 0.8 def test_query_performance(): """Test basic query performance""" db = SessionLocal() try: start = time.time() count = db.query(Song).count() duration = time.time() - start print(f"\n⚔ Query Performance:") print(f" Song count: {count}") print(f" Duration: {duration:.3f}s") return duration < 0.5 # Should be under 500ms finally: db.close() def main(): print("šŸ” Database Health Check\n") try: # Test connection conn = engine.connect() conn.close() print("āœ… Database connection: OK\n") # Check pool pool_ok = check_connection_pool() # Test queries query_ok = test_query_performance() if pool_ok and query_ok: print("\nāœ… All checks passed") return 0 else: print("\nāš ļø Some checks failed") return 1 except Exception as e: print(f"\nāŒ Health check failed: {e}") return 2 if __name__ == "__main__": sys.exit(main())