Melika Kheirieh commited on
Commit
c1d4d02
·
1 Parent(s): 6a94b42

fix(router): make _db type-safe and clean up nl2sql_handler preview logic

Browse files
Files changed (1) hide show
  1. app/routers/nl2sql.py +19 -14
app/routers/nl2sql.py CHANGED
@@ -23,8 +23,16 @@ from typing import Union, Optional, Dict, TypedDict, Any, cast
23
  router = APIRouter(prefix="/nl2sql")
24
 
25
  # --- Database adapter selection ---
26
- if os.getenv("DB_MODE", "sqlite") == "postgres":
27
- _db = PostgresAdapter(os.environ["POSTGRES_DSN"])
 
 
 
 
 
 
 
 
28
  else:
29
  _db = SQLiteAdapter("data/chinook.db")
30
 
@@ -279,26 +287,23 @@ def nl2sql_handler(request: NL2SQLRequest):
279
  db_id = getattr(request, "db_id", None)
280
  adapter: Optional[Union[PostgresAdapter, SQLiteAdapter]] = None
281
 
282
- if not db_id:
283
- pipeline = _pipeline
284
- derived_preview = ""
285
- else:
286
  adapter = _select_adapter(db_id)
287
  pipeline = _build_pipeline(adapter)
288
- derived_preview = _derive_schema_preview(adapter)
 
 
 
289
 
290
- # 2) Resolve schema_preview (optional in request)
291
  provided_preview_any: Any = getattr(request, "schema_preview", None)
292
  provided_preview: Optional[str] = cast(Optional[str], provided_preview_any)
293
 
294
- derived_preview: str = _derive_schema_preview(adapter)
295
- schema_preview_opt: Optional[str] = (
296
- provided_preview if provided_preview not in ("", None) else derived_preview
297
  )
298
 
299
- # Guarantee a str for Pipeline.run (mypy requirement)
300
- final_preview: str = schema_preview_opt or ""
301
-
302
  # 3) Run pipeline
303
  try:
304
  result = pipeline.run(
 
23
  router = APIRouter(prefix="/nl2sql")
24
 
25
  # --- Database adapter selection ---
26
+ DB_MODE = os.getenv("DB_MODE", "sqlite").lower()
27
+
28
+ _db: Union[PostgresAdapter, SQLiteAdapter]
29
+ if DB_MODE == "postgres":
30
+ dsn = os.environ.get("POSTGRES_DSN")
31
+ if not dsn:
32
+ raise RuntimeError(
33
+ "POSTGRES_DSN environment variable is required in postgres mode"
34
+ )
35
+ _db = PostgresAdapter(dsn)
36
  else:
37
  _db = SQLiteAdapter("data/chinook.db")
38
 
 
287
  db_id = getattr(request, "db_id", None)
288
  adapter: Optional[Union[PostgresAdapter, SQLiteAdapter]] = None
289
 
290
+ # 1) Pick pipeline (+ optional per-request adapter)
291
+ if db_id:
 
 
292
  adapter = _select_adapter(db_id)
293
  pipeline = _build_pipeline(adapter)
294
+ derived_preview_val: str = _derive_schema_preview(adapter)
295
+ else:
296
+ pipeline = _pipeline
297
+ derived_preview_val = "" # no adapter → no derive
298
 
299
+ # 2) Resolve schema_preview
300
  provided_preview_any: Any = getattr(request, "schema_preview", None)
301
  provided_preview: Optional[str] = cast(Optional[str], provided_preview_any)
302
 
303
+ final_preview: str = (
304
+ provided_preview if provided_preview not in (None, "") else derived_preview_val
 
305
  )
306
 
 
 
 
307
  # 3) Run pipeline
308
  try:
309
  result = pipeline.run(