1- import { useEffect , useState , useCallback } from 'react' ;
1+ import { useEffect , useState , useCallback , useRef } from 'react' ;
22import { useParams , Navigate , useSearchParams } from 'react-router-dom' ;
33import { fetchSource } from '../../api/sources' ;
44import { executeTool , type QueryResult } from '../../api/tools' ;
55import { ApiError } from '../../api/errors' ;
66import type { Tool } from '../../types/datasource' ;
7- import { SqlEditor , ParameterForm , RunButton , ResultsTabs , type ResultTab } from '../tool' ;
7+ import { SqlEditor , ParameterForm , RunButton , ResultsTabs , type ResultTab , type SqlEditorHandle } from '../tool' ;
88import LockIcon from '../icons/LockIcon' ;
99import CopyIcon from '../icons/CopyIcon' ;
1010import CheckIcon from '../icons/CheckIcon' ;
@@ -16,6 +16,9 @@ export default function ToolDetailView() {
1616 const [ isLoading , setIsLoading ] = useState ( true ) ;
1717 const [ error , setError ] = useState < ApiError | null > ( null ) ;
1818
19+ // Ref to access SqlEditor's selection
20+ const sqlEditorRef = useRef < SqlEditorHandle > ( null ) ;
21+
1922 // Query state
2023 const [ sql , setSql ] = useState ( ( ) => {
2124 // Only for execute_sql tools - read from URL on mount
@@ -210,8 +213,9 @@ export default function ToolDetailView() {
210213 let sqlToExecute : string ;
211214
212215 if ( toolType === 'execute_sql' ) {
213- sqlToExecute = sql ;
214- queryResult = await executeTool ( toolName , { sql } ) ;
216+ // Get selected SQL from editor (returns selection if any, otherwise full content)
217+ sqlToExecute = sqlEditorRef . current ?. getSelectedSql ( ) ?? sql ;
218+ queryResult = await executeTool ( toolName , { sql : sqlToExecute } ) ;
215219 } else {
216220 sqlToExecute = getSqlPreview ( ) ;
217221 queryResult = await executeTool ( toolName , params ) ;
@@ -386,6 +390,7 @@ export default function ToolDetailView() {
386390 </ button >
387391 </ div >
388392 < SqlEditor
393+ ref = { sqlEditorRef }
389394 value = { toolType === 'execute_sql' ? sql : getSqlPreview ( ) }
390395 onChange = { toolType === 'execute_sql' ? setSql : undefined }
391396 onRunShortcut = { handleRun }
0 commit comments