Spaces:
Running
Running
File size: 1,007 Bytes
e68a95d b7dddbe e68a95d | 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 | from __future__ import annotations
import time
from fastapi import APIRouter
from app.models.schemas import SqlValidationRequest, SqlValidationResponse
from app.services.sql_validator_service import SqlValidatorService
router = APIRouter()
_service = SqlValidatorService()
@router.post(
"/sql/validate",
response_model=SqlValidationResponse,
summary="Validate a SQL query without executing it",
)
async def validate_sql(
body: SqlValidationRequest,
):
start = time.perf_counter()
result = _service.validate(body.query, body.dialect)
elapsed_ms = round((time.perf_counter() - start) * 1000, 3)
return SqlValidationResponse(
success=True,
time_ms=elapsed_ms,
valid=result["valid"],
query_type=result["query_type"],
dialect=result["dialect"],
is_read_only=result["is_read_only"],
errors=result["errors"],
warnings=result["warnings"],
tables=result["tables"],
columns=result["columns"],
)
|