fix: prevent query execute event state leak
This commit is contained in:
1 parent
617c15dbfe
commit
f5cf3f4440
1 file changed
+5
-2
@@ -189,7 +189,8 @@ export default function QueriesPage() {
|
|||||||
const catLabel: Record<string, string> = { all: '全部', '表结构': '表结构', '性能分析': '性能分析', '数据统计': '数据统计', '基础查询': '基础查询' };
|
const catLabel: Record<string, string> = { all: '全部', '表结构': '表结构', '性能分析': '性能分析', '数据统计': '数据统计', '基础查询': '基础查询' };
|
||||||
|
|
||||||
/* ---- Execute ---- */
|
/* ---- Execute ---- */
|
||||||
const handleExecute = useCallback(async (page = 1) => {
|
const handleExecute = useCallback(async (pageArg: number | unknown = 1) => {
|
||||||
|
const page = typeof pageArg === 'number' && Number.isFinite(pageArg) ? pageArg : 1;
|
||||||
if (!sql || !instanceId) { setError('请选择实例并输入查询语句'); return; }
|
if (!sql || !instanceId) { setError('请选择实例并输入查询语句'); return; }
|
||||||
if (/\{(?:table|db|collection)\}/.test(sql)) { setError('SQL 中含有未替换的占位符,请先替换或删除'); return; }
|
if (/\{(?:table|db|collection)\}/.test(sql)) { setError('SQL 中含有未替换的占位符,请先替换或删除'); return; }
|
||||||
setExecuting(true); setError(''); setCurrentPage(page);
|
setExecuting(true); setError(''); setCurrentPage(page);
|
||||||
@@ -209,7 +210,9 @@ export default function QueriesPage() {
|
|||||||
}
|
}
|
||||||
} catch (e: unknown) {
|
} catch (e: unknown) {
|
||||||
const raw = (e as { response?: { data?: { detail?: string | Array<{ msg: string }> } } })?.response?.data?.detail;
|
const raw = (e as { response?: { data?: { detail?: string | Array<{ msg: string }> } } })?.response?.data?.detail;
|
||||||
const msg = Array.isArray(raw) ? raw.map(v => v.msg).join('; ') : (raw || '查询失败');
|
const msg = Array.isArray(raw)
|
||||||
|
? raw.map(v => v.msg).join('; ')
|
||||||
|
: (typeof raw === 'string' ? raw : raw ? JSON.stringify(raw) : '查询失败');
|
||||||
setError(msg);
|
setError(msg);
|
||||||
if (page === 1) {
|
if (page === 1) {
|
||||||
setHistory(prev => [{ id: Date.now(), sql, instance_id: Number(instanceId), database, db_type: dbType, status: 'failed', execution_time_ms: 0, result_preview: msg, created_at: new Date().toISOString(), favorite: false }, ...prev]);
|
setHistory(prev => [{ id: Date.now(), sql, instance_id: Number(instanceId), database, db_type: dbType, status: 'failed', execution_time_ms: 0, result_preview: msg, created_at: new Date().toISOString(), favorite: false }, ...prev]);
|
||||||
|
|||||||
Reference in new issue
Block a user