@@ -5,15 +5,12 @@ import classnames from 'classnames';
55import IndexList , { IIndexListRef } from './IndexList' ;
66import ColumnList , { IColumnListRef } from './ColumnList' ;
77import BaseInfo , { IBaseInfoRef } from './BaseInfo' ;
8- import sqlService , { IModifyTableSqlParams , IExecuteSqlParams } from '@/service/sql' ;
9- import MonacoEditor , { IExportRefFunction } from '@/components/Console/MonacoEditor ' ;
8+ import sqlService , { IModifyTableSqlParams } from '@/service/sql' ;
9+ import ExecuteSQL from '@/components/ExecuteSQL ' ;
1010import { IEditTableInfo , IWorkspaceTab } from '@/typings' ;
1111import { DatabaseTypeCode , WorkspaceTabType } from '@/constants' ;
1212import i18n from '@/i18n' ;
1313import lodash from 'lodash' ;
14- import Iconfont from '@/components/Iconfont' ;
15- import { formatSql } from '@/utils' ;
16-
1714interface IProps {
1815 dataSourceId : number ;
1916 databaseName : string ;
@@ -48,9 +45,6 @@ export default memo((props: IProps) => {
4845 const baseInfoRef = useRef < IBaseInfoRef > ( null ) ;
4946 const columnListRef = useRef < IColumnListRef > ( null ) ;
5047 const indexListRef = useRef < IIndexListRef > ( null ) ;
51- const monacoEditorRef = useRef < IExportRefFunction > ( null ) ;
52- const [ executeSqlResult , setExecuteSqlResult ] = useState < string | null > ( null ) ;
53- const [ executeLoading , setExecuteLoading ] = useState < boolean > ( false ) ;
5448 const [ appendValue , setAppendValue ] = useState < string > ( '' ) ;
5549 const tabList = useMemo ( ( ) => {
5650 return [
@@ -80,12 +74,6 @@ export default memo((props: IProps) => {
8074 setCurrentTab ( item ) ;
8175 }
8276
83- useEffect ( ( ) => {
84- if ( ! viewSqlModal ) {
85- setExecuteSqlResult ( null ) ;
86- }
87- } , [ viewSqlModal ] ) ;
88-
8977 useEffect ( ( ) => {
9078 if ( tableName ) {
9179 getTableDetails ( { } ) ;
@@ -136,62 +124,22 @@ export default memo((props: IProps) => {
136124 }
137125 }
138126
139- const executeSql = ( ) => {
140- const executeSQLParams : IExecuteSqlParams = {
141- sql : monacoEditorRef . current ?. getAllContent ( ) || '' ,
142- dataSourceId,
143- databaseName,
144- schemaName,
145- } ;
146- setExecuteLoading ( true ) ;
147- sqlService
148- . executeDDL ( executeSQLParams )
149- . then ( ( res ) => {
150- if ( res . success ) {
151- setViewSqlModal ( false ) ;
152- message . success ( i18n ( 'common.text.successfulExecution' ) ) ;
153- const newTableName = baseInfoRef . current ?. getBaseInfo ( ) . name ;
154- getTableDetails ( { tableNameProps : newTableName } ) ;
155- if ( ! tableName ) {
156- changeTabDetails ( {
157- ...tabDetails ,
158- title : `${ newTableName } ` ,
159- type : WorkspaceTabType . EditTable ,
160- uniqueData : {
161- ...( tabDetails . uniqueData || { } ) ,
162- tableName : newTableName ,
163- } ,
164- } ) ;
165- }
166- } else {
167- setExecuteSqlResult ( res . message ) ;
168- }
169- } )
170- . finally ( ( ) => {
171- setExecuteLoading ( false ) ;
127+ const executeSuccessCallBack = ( ) => {
128+ setViewSqlModal ( false ) ;
129+ message . success ( i18n ( 'common.text.successfulExecution' ) ) ;
130+ const newTableName = baseInfoRef . current ?. getBaseInfo ( ) . name ;
131+ getTableDetails ( { tableNameProps : newTableName } ) ;
132+ if ( ! tableName ) {
133+ changeTabDetails ( {
134+ ...tabDetails ,
135+ title : `${ newTableName } ` ,
136+ type : WorkspaceTabType . EditTable ,
137+ uniqueData : {
138+ ...( tabDetails . uniqueData || { } ) ,
139+ tableName : newTableName ,
140+ } ,
172141 } ) ;
173- } ;
174-
175- //
176- const renderMonacoEditor = useMemo ( ( ) => {
177- return (
178- < MonacoEditor
179- className = { styles . monacoEditor }
180- id = "view_sql"
181- ref = { monacoEditorRef }
182- appendValue = { {
183- text : appendValue ,
184- range : 'reset' ,
185- } }
186- />
187- ) ;
188- } , [ appendValue ] ) ;
189-
190- const handleFormatSql = ( ) => {
191- const sql = monacoEditorRef . current ?. getAllContent ( ) || '' ;
192- formatSql ( sql , databaseType ) . then ( ( res ) => {
193- setAppendValue ( res ) ;
194- } ) ;
142+ }
195143 } ;
196144
197145 return (
@@ -244,30 +192,17 @@ export default memo((props: IProps) => {
244192 width = "60vw"
245193 maskClosable = { false }
246194 footer = { false }
195+ destroyOnClose = { true }
247196 >
248- < div className = { styles . monacoEditorModal } >
249- < div className = { styles . monacoEditorContent } >
250- < div className = { styles . monacoEditorHeader } >
251- < div className = { styles . formatButton } onClick = { handleFormatSql } >
252- < Iconfont code = "" />
253- { i18n ( 'common.button.format' ) }
254- </ div >
255- < Button className = { styles . executeButton } type = "primary" onClick = { executeSql } loading = { executeLoading } >
256- < Iconfont code = "" />
257- { i18n ( 'common.button.execute' ) }
258- </ Button >
259- </ div >
260- { renderMonacoEditor }
261- </ div >
262- { executeSqlResult && (
263- < div className = { styles . result } >
264- < div className = { styles . resultHeader } > { i18n ( 'common.text.errorMessage' ) } </ div >
265- < div className = { styles . resultContent } >
266- < div className = { styles . errorMessage } > { executeSqlResult } </ div >
267- </ div >
268- </ div >
269- ) }
270- </ div >
197+ < ExecuteSQL
198+ initSql = { appendValue }
199+ databaseName = { databaseName }
200+ dataSourceId = { dataSourceId }
201+ tableName = { tableName }
202+ schemaName = { schemaName }
203+ databaseType = { databaseType }
204+ executeSuccessCallBack = { executeSuccessCallBack }
205+ />
271206 </ Modal >
272207 </ Context . Provider >
273208 ) ;
0 commit comments