fix: 查询模板占位符替换 + _auto_add_limit 跳过非SELECT语句 + 默认用户密码修正

修复:
- getTemplateSQL() 支持 {table}/{db}/{collection} 占位符自动替换
- _auto_add_limit() 仅对 SELECT 语句添加 LIMIT, SHOW/DESC/EXPLAIN 跳过
- seed_data 默认用户密码从 '***' 改为 'admin123'
- DB 中已有用户密码已重置为 admin123

测试: 75 passed (新增2个 SHOW/DESC LIMIT 测试)
This commit is contained in:
logan committed 2026-05-24 15:32:51 +08:00
1 parent 0fb947dcb5
commit 0aa4595c90
4 files changed
+35 -9

No files matched your search

+10 -5
View File
@@ -134,19 +134,24 @@ export const queryTemplates: QueryTemplate[] = [
/**
* 获取模板在指定数据库类型下的查询语句
* @param template 查询模板
* @param dbType 数据库类型
* @returns 对应的查询语句,如果不支持则返回提示信息
* 自动替换占位符: {table} → 当前选中的表, {db} → 当前数据库, {collection} → 集合名
*/
export function getTemplateSQL(
template: QueryTemplate,
dbType: DBType
dbType: DBType,
vars?: { table?: string; db?: string; collection?: string }
): string {
const sql = template.sql[dbType];
if (!sql) {
return `-- 当前模板「${template.name}」不支持 ${dbType} 数据库类型`;
}
return sql;
let result = sql;
const v = vars || {};
if (v.table) result = result.replace(/\{table\}/g, v.table);
if (v.db) result = result.replace(/\{db\}/g, v.db);
if (v.collection) result = result.replace(/\{collection\}/g, v.collection);
// 未替换的占位符保留,用户手动填写
return result;
}
/**
+2 -2
View File
@@ -336,10 +336,10 @@ function NewQueryPanel({
}, [templates, templateCategory, templateSearch]);
const handleApplyTemplate = useCallback((tpl: QueryTemplate) => {
const templateSQL = getTemplateSQL(tpl, dbType);
const templateSQL = getTemplateSQL(tpl, dbType, { db: database || undefined });
setSql(templateSQL);
setShowTemplates(false);
}, [dbType]);
}, [dbType, database]);
const handleExecute = useCallback(async () => {
if (!sql || !instanceId) { setError('请选择实例并输入查询语句'); return; }