import React, { useState } from 'react'; import { format } from 'sql-formatter'; import { CopyToClipboard } from 'react-copy-to-clipboard'; import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter'; import { solarizedlight } from 'react-syntax-highlighter/dist/esm/styles/prism'; import { message } from 'antd'; import { PREFIX_CLS } from '../../common/constants'; import { CheckCircleFilled, UpOutlined } from '@ant-design/icons'; import { SqlInfoType } from '../../common/type'; type Props = { integrateSystem?: string; sqlInfo: SqlInfoType; }; const SqlItem: React.FC = ({ integrateSystem, sqlInfo }) => { const [sqlType, setSqlType] = useState(''); const tipPrefixCls = `${PREFIX_CLS}-item`; const prefixCls = `${PREFIX_CLS}-sql-item`; const handleCopy = (text, result) => { result ? message.success('复制SQL成功', 1) : message.error('复制SQL失败', 1); }; const onCollapse = () => { setSqlType(''); }; if (!sqlInfo.llmParseSql && !sqlInfo.logicSql && !sqlInfo.querySql) { return null; } return (
SQL生成 {sqlType && ( )}
{sqlInfo.llmParseSql && (
{ setSqlType(sqlType === 'llmParseSql' ? '' : 'llmParseSql'); }} > LLM解析SQL
)} {sqlInfo.logicSql && (
{ setSqlType(sqlType === 'logicSql' ? '' : 'logicSql'); }} > 逻辑SQL
)} {sqlInfo.querySql && (
{ setSqlType(sqlType === 'querySql' ? '' : 'querySql'); }} > 物理SQL
)}
{sqlType && ( <> {format(sqlInfo[sqlType])} handleCopy(text, result)} > )}
); }; export default SqlItem;