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"], )