llm-ready-data / app /api /v1 /sql_validator.py
light-infer-chat's picture
ok
e68a95d
Raw
History Blame Contribute Delete
1.09 kB
from __future__ import annotations
import time
from fastapi import APIRouter, Depends
from app.api.deps import require_auth
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,
token: str = Depends(require_auth),
):
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"],
)