Skip to content

Commit a198866

Browse files
committed
fix: fix originalSQL
1 parent d514753 commit a198866

3 files changed

Lines changed: 60 additions & 49 deletions

File tree

chat2db-client/src/components/SearchResult/TableBox/index.tsx

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ interface ITableProps {
2424
config: IResultConfig;
2525
onConfigChange: (config: IResultConfig) => void;
2626
onSearchTotal: () => Promise<number | undefined>;
27-
onExport: (exportType: ExportTypeEnum, exportSize: ExportSizeEnum) => void;
27+
onExport: (sql: string, originalSql: string, exportType: ExportTypeEnum, exportSize: ExportSizeEnum) => void;
2828
}
2929

3030
interface IViewTableCellData {
@@ -54,42 +54,46 @@ export default function TableBox(props: ITableProps) {
5454
const [appTheme] = useTheme();
5555
const isDarkTheme = useMemo(() => appTheme.backgroundColor === ThemeType.Dark, [appTheme]);
5656

57+
const handleExport = (exportType: ExportTypeEnum, exportSize: ExportSizeEnum) => {
58+
props.onExport && props.onExport(data.sql, data.originalSql, exportType, exportSize);
59+
};
60+
5761
const items: MenuProps['items'] = useMemo(
5862
() => [
5963
{
6064
label: '导出全部数据为csv',
6165
key: '1',
6266
icon: <UserOutlined />,
6367
onClick: () => {
64-
props.onExport && props.onExport(ExportTypeEnum.CSV, ExportSizeEnum.ALL);
68+
handleExport(ExportTypeEnum.CSV, ExportSizeEnum.ALL);
6569
},
6670
},
6771
{
6872
label: '导出全部数据为插入语句',
6973
key: '2',
7074
icon: <UserOutlined />,
7175
onClick: () => {
72-
props.onExport && props.onExport(ExportTypeEnum.INSERT, ExportSizeEnum.ALL);
76+
handleExport(ExportTypeEnum.INSERT, ExportSizeEnum.ALL);
7377
},
7478
},
7579
{
7680
label: '导出当前页数据为csv',
7781
key: '3',
7882
icon: <UserOutlined />,
7983
onClick: () => {
80-
props.onExport && props.onExport(ExportTypeEnum.CSV, ExportSizeEnum.CURRENT_PAGE);
84+
handleExport(ExportTypeEnum.CSV, ExportSizeEnum.CURRENT_PAGE);
8185
},
8286
},
8387
{
8488
label: '导出当前页数据为插入语句',
8589
key: '4',
8690
icon: <UserOutlined />,
8791
onClick: () => {
88-
props.onExport && props.onExport(ExportTypeEnum.INSERT, ExportSizeEnum.CURRENT_PAGE);
92+
handleExport(ExportTypeEnum.INSERT, ExportSizeEnum.CURRENT_PAGE);
8993
},
9094
},
9195
],
92-
[],
96+
[data],
9397
);
9498

9599
const defaultSorts: SortItem[] = useMemo(

chat2db-client/src/components/SearchResult/index.tsx

Lines changed: 43 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { memo, useEffect, useState, useMemo, Fragment } from 'react';
1+
import React, { memo, useEffect, useState, useMemo, Fragment, useCallback } from 'react';
22
import classnames from 'classnames';
33
import Tabs, { IOption } from '@/components/Tabs';
44
import Iconfont from '@/components/Iconfont';
@@ -16,7 +16,7 @@ interface IProps {
1616
manageResultDataList?: IManageResultData[];
1717
resultConfig: IResultConfig[];
1818
onExecute: (sql: string, config: IResultConfig, index: number) => void;
19-
onExport: (originalSql: string, exportType: ExportTypeEnum, exportSize: ExportSizeEnum) => Promise<void>;
19+
onExport: (sql: string, originalSql: string, exportType: ExportTypeEnum, exportSize: ExportSizeEnum) => Promise<void>;
2020
onTabEdit: (type: 'add' | 'remove', value?: number | string) => void;
2121
onSearchTotal: (index: number) => Promise<number>;
2222
isLoading?: boolean;
@@ -45,7 +45,7 @@ const handleTabs = (result: IManageResultData[]) => {
4545
};
4646

4747
export default memo<IProps>(function SearchResult(props) {
48-
const { className, manageResultDataList = [], isLoading, onExecute, onSearchTotal } = props;
48+
const { className, manageResultDataList = [], isLoading, onExecute, onExport } = props;
4949
const [currentTab, setCurrentTab] = useState<string | number | undefined>();
5050
const [resultDataList, setResultDataList] = useState<IManageResultData[]>([]);
5151
const [resultConfig, setResultConfig] = useState<IResultConfig[]>([]);
@@ -64,7 +64,7 @@ export default memo<IProps>(function SearchResult(props) {
6464
setCurrentTab(manageResultDataList[0].uuid);
6565
}
6666

67-
setResultDataList(manageResultDataList);
67+
setResultDataList([...manageResultDataList]);
6868
setTabs(handleTabs(manageResultDataList));
6969
}, [manageResultDataList]);
7070

@@ -85,48 +85,50 @@ export default memo<IProps>(function SearchResult(props) {
8585
);
8686
};
8787

88-
const renderTable = useMemo(() => {
88+
const renderTable = () => {
8989
if (!tabs || !tabs.length) {
9090
return renderEmpty();
9191
}
9292
if (!resultDataList || !resultDataList.length) {
9393
return renderEmpty();
9494
}
95-
return (resultDataList || []).map((item, index: number) => {
96-
if (item.success) {
97-
return (
98-
<Fragment key={item.uuid!}>
99-
<TableBox
100-
className={classnames({ [styles.cursorTableBox]: item.uuid === currentTab })}
101-
data={item}
102-
config={resultConfig?.[index]}
103-
onConfigChange={function (config: IResultConfig) {
104-
onExecute && onExecute(item.originalSql, config, index);
105-
}}
106-
onSearchTotal={async () => {
107-
if (props.onSearchTotal) {
108-
return await props.onSearchTotal(index);
109-
}
110-
}}
111-
onExport={(exportType: ExportTypeEnum, exportSize: ExportSizeEnum) => {
112-
props.onExport && props.onExport(item.originalSql, exportType, exportSize);
113-
}}
114-
/>
115-
</Fragment>
116-
);
117-
} else {
118-
return (
119-
<Fragment key={item.uuid}>
120-
<StateIndicator
121-
className={classnames(styles.stateIndicator, { [styles.cursorStateIndicator]: item.uuid === currentTab })}
122-
state="error"
123-
text={item.message}
124-
/>
125-
</Fragment>
126-
);
127-
}
128-
});
129-
}, [currentTab, resultDataList, resultConfig]);
95+
96+
return renderTableContent;
97+
};
98+
99+
const renderTableContent = (resultDataList || []).map((item, index: number) => {
100+
console.log(item.sql, item.originalSql);
101+
if (item.success) {
102+
return (
103+
<TableBox
104+
key={item.uuid!}
105+
className={classnames({ [styles.cursorTableBox]: item.uuid === currentTab })}
106+
data={item}
107+
config={resultConfig?.[index]}
108+
onConfigChange={(config: IResultConfig) => {
109+
onExecute && onExecute(item.originalSql, config, index);
110+
}}
111+
onSearchTotal={async () => {
112+
if (props.onSearchTotal) {
113+
return await props.onSearchTotal(index);
114+
}
115+
}}
116+
onExport={(sql: string, originalSql: string, exportType: ExportTypeEnum, exportSize: ExportSizeEnum) => {
117+
onExport && onExport(sql, originalSql, exportType, exportSize);
118+
}}
119+
/>
120+
);
121+
} else {
122+
return (
123+
<StateIndicator
124+
key={item.uuid}
125+
className={classnames(styles.stateIndicator, { [styles.cursorStateIndicator]: item.uuid === currentTab })}
126+
state="error"
127+
text={item.message}
128+
/>
129+
);
130+
}
131+
});
130132

131133
return (
132134
<div className={classnames(className, styles.box)}>
@@ -144,7 +146,7 @@ export default memo<IProps>(function SearchResult(props) {
144146
</div>
145147
) : null}
146148
<Spin spinning={isLoading} wrapperClassName={styles.resultContentWrapper}>
147-
{renderTable}
149+
{renderTable()}
148150
</Spin>
149151
</div>
150152
);

chat2db-client/src/pages/main/workspace/components/WorkspaceRightItem/index.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,13 @@ const WorkspaceRightItem = memo<IProps>(function (props) {
139139
return total;
140140
};
141141

142-
const handleExportSQLResult = async (originalSql: string, exportType: ExportTypeEnum, exportSize: ExportSizeEnum) => {
143-
const params: IExportParams = { ...data, originalSql, exportType, exportSize };
142+
const handleExportSQLResult = async (
143+
sql: string,
144+
originalSql: string,
145+
exportType: ExportTypeEnum,
146+
exportSize: ExportSizeEnum,
147+
) => {
148+
const params: IExportParams = { ...data, sql, originalSql, exportType, exportSize };
144149

145150
await sqlServer.exportResultTable(params);
146151
};

0 commit comments

Comments
 (0)