Pavanupadhyay27 commited on
Commit
15adfd0
·
1 Parent(s): ec57cbc

feat(backend): add /debug-db endpoint to print startup database errors

Browse files
Files changed (1) hide show
  1. backend/app/main.py +28 -0
backend/app/main.py CHANGED
@@ -34,9 +34,12 @@ app.add_middleware(
34
  allow_headers=["*"],
35
  )
36
 
 
 
37
  # Create folders on startup
38
  @app.on_event("startup")
39
  def startup_event():
 
40
  logger.info("Starting NetraID Backend...")
41
 
42
  # Create upload directory
@@ -51,7 +54,10 @@ def startup_event():
51
  db = SessionLocal()
52
  try:
53
  init_db(db)
 
54
  except Exception as e:
 
 
55
  logger.error(f"Error seeding database: {e}")
56
  finally:
57
  db.close()
@@ -65,6 +71,28 @@ def read_root():
65
  "docs": "/docs"
66
  }
67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  @app.get("/health", tags=["Status"])
69
  def health_check():
70
  return {
 
34
  allow_headers=["*"],
35
  )
36
 
37
+ db_error = None
38
+
39
  # Create folders on startup
40
  @app.on_event("startup")
41
  def startup_event():
42
+ global db_error
43
  logger.info("Starting NetraID Backend...")
44
 
45
  # Create upload directory
 
54
  db = SessionLocal()
55
  try:
56
  init_db(db)
57
+ db_error = "Success"
58
  except Exception as e:
59
+ import traceback
60
+ db_error = f"{e}\n{traceback.format_exc()}"
61
  logger.error(f"Error seeding database: {e}")
62
  finally:
63
  db.close()
 
71
  "docs": "/docs"
72
  }
73
 
74
+ @app.get("/debug-db")
75
+ def debug_db():
76
+ masked_url = None
77
+ if settings.DATABASE_URL:
78
+ # Mask password for security
79
+ parts = settings.DATABASE_URL.split("@")
80
+ if len(parts) >= 2:
81
+ creds = parts[0]
82
+ host_info = "@".join(parts[1:])
83
+ if ":" in creds:
84
+ scheme_user, _ = creds.rsplit(":", 1)
85
+ masked_url = f"{scheme_user}:****@{host_info}"
86
+ else:
87
+ masked_url = f"{creds}:****@{host_info}"
88
+ else:
89
+ masked_url = settings.DATABASE_URL
90
+
91
+ return {
92
+ "db_error": db_error,
93
+ "database_url": masked_url
94
+ }
95
+
96
  @app.get("/health", tags=["Status"])
97
  def health_check():
98
  return {