Spaces:
Sleeping
Sleeping
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- 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 |
-
|
| 27 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
-
|
| 283 |
-
|
| 284 |
-
derived_preview = ""
|
| 285 |
-
else:
|
| 286 |
adapter = _select_adapter(db_id)
|
| 287 |
pipeline = _build_pipeline(adapter)
|
| 288 |
-
|
|
|
|
|
|
|
|
|
|
| 289 |
|
| 290 |
-
# 2) Resolve schema_preview
|
| 291 |
provided_preview_any: Any = getattr(request, "schema_preview", None)
|
| 292 |
provided_preview: Optional[str] = cast(Optional[str], provided_preview_any)
|
| 293 |
|
| 294 |
-
|
| 295 |
-
|
| 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(
|