Spaces:
Sleeping
Sleeping
File size: 1,218 Bytes
570f7bd c1bc4eb 570f7bd c1bc4eb e3e0ac5 c1bc4eb 570f7bd c1bc4eb e3e0ac5 c1bc4eb 570f7bd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
import time
from nl2sql.types import StageResult, StageTrace
from adapters.db.base import DBAdapter
class Executor:
name = "executor"
def __init__(self, db: DBAdapter):
self.db = db
def run(self, sql: str) -> StageResult:
t0 = time.perf_counter()
try:
rows, cols = self.db.execute(sql)
trace = StageTrace(
stage=self.name,
duration_ms=(time.perf_counter() - t0) * 1000,
notes={
"row_count": len(rows),
"col_count": len(cols),
"sql_length": len(sql or ""),
},
)
return StageResult(
ok=True, data={"rows": rows, "columns": cols}, trace=trace
)
except Exception as e:
trace = StageTrace(
stage=self.name,
duration_ms=(time.perf_counter() - t0) * 1000,
notes={
"error": str(e),
"error_type": type(e).__name__,
"sql_length": len(sql or ""),
},
)
return StageResult(ok=False, data=None, trace=trace, error=[str(e)])
|