diff --git a/packages/web/src/appobj/databaseObjectAppObject.js b/packages/web/src/appobj/databaseObjectAppObject.js index 771e9d311..2969be0fc 100644 --- a/packages/web/src/appobj/databaseObjectAppObject.js +++ b/packages/web/src/appobj/databaseObjectAppObject.js @@ -44,6 +44,10 @@ const menus = { label: 'Show CREATE PROCEDURE script', tab: 'SqlObjectCreateScriptTab', }, + { + label: 'Show EXECUTE script', + tab: 'ExecuteProcedureTab', + }, ], functions: [ { diff --git a/packages/web/src/tabs/ExecuteProcedureTab.js b/packages/web/src/tabs/ExecuteProcedureTab.js new file mode 100644 index 000000000..9bf7fccd4 --- /dev/null +++ b/packages/web/src/tabs/ExecuteProcedureTab.js @@ -0,0 +1,16 @@ +import React from 'react'; +import engines from '@dbgate/engines'; +import { useConnectionInfo, useSqlObjectInfo } from '../utility/metadataLoaders'; +import QueryTab from './QueryTab'; + +export default function ExecuteProcedureTab(props) { + const procedureInfo = useSqlObjectInfo(props); + const connnection = useConnectionInfo(props); + if (!connnection || !procedureInfo) return null; + + const driver = engines(connnection.engine); + const dmp = driver.createDumper(); + if (procedureInfo) dmp.put('^execute %f', procedureInfo); + + return ; +} diff --git a/packages/web/src/tabs/QueryTab.js b/packages/web/src/tabs/QueryTab.js index 4d76f71d0..73f12b502 100644 --- a/packages/web/src/tabs/QueryTab.js +++ b/packages/web/src/tabs/QueryTab.js @@ -23,9 +23,9 @@ import keycodes from '../utility/keycodes'; // height: 200px; // `; -export default function QueryTab({ tabid, conid, database, tabVisible, toolbarPortalRef }) { +export default function QueryTab({ tabid, conid, database, tabVisible, toolbarPortalRef, initialScript }) { const localStorageKey = `sql_${tabid}`; - const [queryText, setQueryText] = React.useState(() => localStorage.getItem(localStorageKey) || ''); + const [queryText, setQueryText] = React.useState(() => localStorage.getItem(localStorageKey) || initialScript || ''); const queryTextRef = React.useRef(queryText); const [sessionId, setSessionId] = React.useState(null); const [executeNumber, setExecuteNumber] = React.useState(0); diff --git a/packages/web/src/tabs/SqlObjectCreateScriptTab.js b/packages/web/src/tabs/SqlObjectCreateScriptTab.js index 93524865b..20bccdbde 100644 --- a/packages/web/src/tabs/SqlObjectCreateScriptTab.js +++ b/packages/web/src/tabs/SqlObjectCreateScriptTab.js @@ -1,10 +1,20 @@ import React from 'react'; import { useConnectionInfo, useSqlObjectInfo } from '../utility/metadataLoaders'; import SqlEditor from '../sqleditor/SqlEditor'; +import { useUpdateDatabaseForTab } from '../utility/globalState'; -export default function SqlObjectCreateScriptTab({ objectTypeField, conid, database, schemaName, pureName }) { +export default function SqlObjectCreateScriptTab({ + objectTypeField, + conid, + database, + schemaName, + pureName, + tabVisible, +}) { const sqlObjectInfo = useSqlObjectInfo({ conid, database, schemaName, pureName, objectTypeField }); const connnection = useConnectionInfo({ conid }); + useUpdateDatabaseForTab(tabVisible, conid, database); + if (!connnection || !sqlObjectInfo) return null; return ; diff --git a/packages/web/src/tabs/index.js b/packages/web/src/tabs/index.js index deefebce1..81f28d610 100644 --- a/packages/web/src/tabs/index.js +++ b/packages/web/src/tabs/index.js @@ -4,6 +4,7 @@ import TableStructureTab from './TableStructureTab'; import TableCreateScriptTab from './TableCreateScriptTab'; import SqlObjectCreateScriptTab from './SqlObjectCreateScriptTab'; import QueryTab from './QueryTab'; +import ExecuteProcedureTab from './ExecuteProcedureTab'; export default { TableDataTab, @@ -12,4 +13,5 @@ export default { TableCreateScriptTab, QueryTab, SqlObjectCreateScriptTab, + ExecuteProcedureTab, };