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:
1 parent
0fb947dcb5
commit
0aa4595c90
4 files changed
+35
-9
No files matched your search
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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; }
|
||||
|
||||
Reference in new issue
Block a user