#!/usr/bin/env python
"""Diagnostic script to find startup issues"""
import sys
import traceback

print("=== STARTUP DIAGNOSTIC ===")
print("Python version:", sys.version)
print("Current directory:", sys.path[0])
print()

# Test imports one by one
imports_to_test = [
    ("FastAPI", "from fastapi import FastAPI"),
    ("SQLAlchemy", "from sqlalchemy.orm import Session"),
    ("Pydantic", "from pydantic import BaseModel"),
    ("Uvicorn", "import uvicorn"),
    ("Database", "from database import SessionLocal, engine"),
    ("Models", "import models"),
    ("Stateless Webhook", "from stateless_webhook import router"),
    ("Activity Categorization", "from activity_categorization_api import router"),
]

failed_imports = []

for name, import_statement in imports_to_test:
    try:
        print(f"Testing {name}... ", end="")
        exec(import_statement)
        print("✓ OK")
    except Exception as e:
        print(f"✗ FAILED: {e}")
        failed_imports.append((name, str(e)))

print("\n=== DETAILED ERRORS ===")
if failed_imports:
    for name, error in failed_imports:
        print(f"\n{name} Error:")
        print(f"  {error}")
        try:
            exec(imports_to_test[[n for n, _ in imports_to_test].index(name)][1])
        except:
            traceback.print_exc()
else:
    print("All imports successful!")

# Test database connection
print("\n=== DATABASE CONNECTION TEST ===")
try:
    from database import engine
    from sqlalchemy import text
    
    with engine.connect() as conn:
        result = conn.execute(text("SELECT 1"))
        print("✓ Database connection successful!")
except Exception as e:
    print(f"✗ Database connection failed: {e}")
    traceback.print_exc()

# Check if port 8090 is available
print("\n=== PORT AVAILABILITY TEST ===")
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
    sock.bind(('0.0.0.0', 8090))
    sock.close()
    print("✓ Port 8090 is available")
except OSError as e:
    print(f"✗ Port 8090 is already in use or not available: {e}")

print("\n=== RECOMMENDATION ===")
if failed_imports:
    print("Fix the import errors above by:")
    print("1. Installing missing packages: pip install -r requirements.txt")
    print("2. Checking file paths and module names")
else:
    print("Try running the server with more verbose output:")
    print("python -m uvicorn main:app --reload --port 8090 --log-level debug")
