mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-05-07 05:02:44 +08:00
🐛 fix(mongodb): 支持 Mongo shell 快捷查询命令
- 为 show dbs 和 show databases 转换 listDatabases JSON 命令 - 为 show collections 和 show tables 转换 listCollections JSON 命令 - 补充 Mongo shell 快捷命令回归测试并验证前端构建 Fixes #390
This commit is contained in:
19
frontend/src/utils/mongodb.test.ts
Normal file
19
frontend/src/utils/mongodb.test.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
import { convertMongoShellToJsonCommand } from './mongodb';
|
||||
|
||||
describe('convertMongoShellToJsonCommand', () => {
|
||||
it('converts show dbs shell shortcut to listDatabases command', () => {
|
||||
expect(convertMongoShellToJsonCommand('show dbs;')).toEqual({
|
||||
recognized: true,
|
||||
command: JSON.stringify({ listDatabases: 1, nameOnly: true }),
|
||||
});
|
||||
});
|
||||
|
||||
it('converts show collections shell shortcut to listCollections command', () => {
|
||||
expect(convertMongoShellToJsonCommand(' show collections ')).toEqual({
|
||||
recognized: true,
|
||||
command: JSON.stringify({ listCollections: 1, filter: {}, nameOnly: true }),
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -752,10 +752,42 @@ const buildMongoDeleteCommand = (
|
||||
return JSON.stringify(command);
|
||||
};
|
||||
|
||||
const convertMongoShellShortcutCommand = (raw: string): ShellConvertResult | null => {
|
||||
const normalized = String(raw || '')
|
||||
.replace(/[;;]+\s*$/, '')
|
||||
.trim()
|
||||
.replace(/\s+/g, ' ')
|
||||
.toLowerCase();
|
||||
|
||||
if (!normalized) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (normalized === 'show dbs' || normalized === 'show databases') {
|
||||
return {
|
||||
recognized: true,
|
||||
command: JSON.stringify({ listDatabases: 1, nameOnly: true }),
|
||||
};
|
||||
}
|
||||
|
||||
if (normalized === 'show collections' || normalized === 'show tables') {
|
||||
return {
|
||||
recognized: true,
|
||||
command: JSON.stringify({ listCollections: 1, filter: {}, nameOnly: true }),
|
||||
};
|
||||
}
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
export const convertMongoShellToJsonCommand = (raw: string): ShellConvertResult => {
|
||||
let input = String(raw || '').trim();
|
||||
input = input.replace(/^[\s]*(\/\/[^\n]*\n)+/g, '').trim();
|
||||
input = input.replace(/[;;]+\s*$/, '');
|
||||
const shortcut = convertMongoShellShortcutCommand(input);
|
||||
if (shortcut) {
|
||||
return shortcut;
|
||||
}
|
||||
if (!/^db\./i.test(input)) {
|
||||
return { recognized: false };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user