diff --git a/apps/api/app/api/routes/health.py b/apps/api/app/api/routes/health.py index 97b722529..0340e4ba3 100644 --- a/apps/api/app/api/routes/health.py +++ b/apps/api/app/api/routes/health.py @@ -144,93 +144,3 @@ async def _check_migrations() -> dict: return {"status": "unhealthy", "message": f"Migration check failed: {error}"} - -@router.get("/debug/viral-columns") -def debug_viral_columns(): - """Temporary debug: inspect viral_video_jobs columns + alembic_version.""" - try: - from sqlalchemy import create_engine, text - url = settings.effective_database_url - eng = create_engine(url, connect_args={"connect_timeout": 3}) - with eng.connect() as conn: - cols = [r[0] for r in conn.execute(text( - "SELECT column_name FROM information_schema.columns " - "WHERE table_schema='public' AND table_name='viral_video_jobs' " - "ORDER BY ordinal_position" - )).fetchall()] - row = conn.execute(text("SELECT version_num FROM alembic_version")).fetchone() - version = row[0] if row else None - eng.dispose() - return {"columns": cols, "alembic_version": version, "count": len(cols), "db_url": url[:url.find('@')+1] + '***' if '@' in url else url} - except Exception as e: - import traceback - return {"error": f"{type(e).__name__}: {e}", "trace": traceback.format_exc()[-500:]} - - -@router.get("/debug/alembic") -def debug_alembic(): - """Temporary debug: run alembic current/upgrade --sql from the API process.""" - import subprocess - try: - proc = subprocess.run( - ["alembic", "current"], - cwd="/app", capture_output=True, text=True, timeout=15, - env={**__import__("os").environ, "PYTHONPATH": "/app:/app/apps/api"} - ) - return { - "returncode": proc.returncode, - "stdout": proc.stdout[-2000:], - "stderr": proc.stderr[-2000:], - } - except Exception as e: - import traceback - return {"error": str(e), "trace": traceback.format_exc()[-1000:]} - - -@router.get("/debug/ls-alembic") -def debug_ls_alembic(): - import os - out = {} - for d in ["/app/alembic/versions", "/app/migrations"]: - try: - out[d] = sorted(os.listdir(d)) if os.path.isdir(d) else f"NOT_DIR: {os.path.exists(d)}" - except Exception as e: - out[d] = str(e) - out["cwd"] = os.getcwd() - return out - - -@router.get("/debug/alembic-heads") -def debug_alembic_heads(): - import subprocess - try: - def run(args): - proc = subprocess.run( - args, cwd="/app", capture_output=True, text=True, timeout=20, - env={**__import__("os").environ, "PYTHONPATH": "/app:/app/apps/api"} - ) - return {"rc": proc.returncode, "out": proc.stdout[-1500:], "err": proc.stderr[-1500:]} - return { - "current": run(["alembic", "current"]), - "heads": run(["alembic", "heads"]), - "upgrade_sql": run(["alembic", "upgrade", "head", "--sql"]), - } - except Exception as e: - import traceback - return {"error": str(e), "trace": traceback.format_exc()[-1000:]} - - -@router.get("/debug/alembic-upgrade") -def debug_alembic_upgrade(): - """Actually run alembic upgrade head from API process (debug only).""" - import subprocess, os - try: - proc = subprocess.run( - ["alembic", "upgrade", "head"], - cwd="/app", capture_output=True, text=True, timeout=60, - env={**os.environ, "PYTHONPATH": "/app:/app/apps/api"} - ) - return {"rc": proc.returncode, "out": proc.stdout[-3000:], "err": proc.stderr[-3000:]} - except Exception as e: - import traceback - return {"error": str(e), "trace": traceback.format_exc()[-1500:]}