mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-06-15 19:19:35 +08:00
- 将 IRIS 纳入前端连接类型白名单与默认端口配置 - 补齐常见数据源类型别名归一化,避免未知别名回退为 MySQL - 增加 IRIS 连接保存、导入、自动 Limit 和表数据清空回归测试 - 补齐前后端 IRIS truncate 支持 Refs #476
105 lines
2.9 KiB
TypeScript
105 lines
2.9 KiB
TypeScript
export type TableDataDangerActionKind = 'truncate' | 'clear';
|
|
|
|
const resolveCustomDriverDialect = (driver: string): string => {
|
|
const normalized = String(driver || '').trim().toLowerCase();
|
|
switch (normalized) {
|
|
case 'postgresql':
|
|
case 'postgres':
|
|
case 'pg':
|
|
case 'pq':
|
|
case 'pgx':
|
|
return 'postgres';
|
|
case 'opengauss':
|
|
case 'open_gauss':
|
|
case 'open-gauss':
|
|
return 'opengauss';
|
|
case 'dm':
|
|
case 'dameng':
|
|
case 'dm8':
|
|
return 'dameng';
|
|
case 'sqlite3':
|
|
case 'sqlite':
|
|
return 'sqlite';
|
|
case 'sphinxql':
|
|
return 'sphinx';
|
|
case 'diros':
|
|
case 'doris':
|
|
return 'diros';
|
|
case 'starrocks':
|
|
return 'starrocks';
|
|
case 'oceanbase':
|
|
return 'oceanbase';
|
|
case 'kingbase':
|
|
case 'kingbase8':
|
|
case 'kingbasees':
|
|
case 'kingbasev8':
|
|
return 'kingbase';
|
|
case 'highgo':
|
|
return 'highgo';
|
|
case 'vastbase':
|
|
return 'vastbase';
|
|
case 'iris':
|
|
case 'intersystems':
|
|
case 'intersystemsiris':
|
|
case 'inter-systems':
|
|
case 'inter-systems-iris':
|
|
return 'iris';
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if (normalized.includes('opengauss') || normalized.includes('open_gauss') || normalized.includes('open-gauss')) return 'opengauss';
|
|
if (normalized.includes('postgres')) return 'postgres';
|
|
if (normalized.includes('oceanbase')) return 'oceanbase';
|
|
if (normalized.includes('kingbase')) return 'kingbase';
|
|
if (normalized.includes('highgo')) return 'highgo';
|
|
if (normalized.includes('vastbase')) return 'vastbase';
|
|
if (normalized.includes('sqlite')) return 'sqlite';
|
|
if (normalized.includes('iris') || normalized.includes('intersystems')) return 'iris';
|
|
if (normalized.includes('sphinx')) return 'sphinx';
|
|
if (normalized.includes('diros') || normalized.includes('doris')) return 'diros';
|
|
if (normalized.includes('starrocks')) return 'starrocks';
|
|
return normalized;
|
|
};
|
|
|
|
export const resolveTableDataActionDBType = (type: string, driver?: string): string => {
|
|
const normalizedType = String(type || '').trim().toLowerCase();
|
|
if (normalizedType !== 'custom') {
|
|
return normalizedType;
|
|
}
|
|
return resolveCustomDriverDialect(driver || '');
|
|
};
|
|
|
|
export const supportsTableTruncateAction = (type: string, driver?: string): boolean => {
|
|
switch (resolveTableDataActionDBType(type, driver)) {
|
|
case 'mysql':
|
|
case 'mariadb':
|
|
case 'oceanbase':
|
|
case 'starrocks':
|
|
case 'postgres':
|
|
case 'kingbase':
|
|
case 'highgo':
|
|
case 'vastbase':
|
|
case 'opengauss':
|
|
case 'sqlserver':
|
|
case 'iris':
|
|
case 'oracle':
|
|
case 'dameng':
|
|
case 'clickhouse':
|
|
case 'duckdb':
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
};
|
|
|
|
export const getTableDataDangerActionMeta = (action: TableDataDangerActionKind): {
|
|
label: string;
|
|
progressLabel: string;
|
|
} => {
|
|
if (action === 'truncate') {
|
|
return { label: '截断表', progressLabel: '截断' };
|
|
}
|
|
return { label: '清空表', progressLabel: '清空' };
|
|
};
|