mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-06-21 05:53:46 +08:00
51 lines
1.1 KiB
TypeScript
51 lines
1.1 KiB
TypeScript
import { format, type SqlLanguage } from 'sql-formatter';
|
|
|
|
const resolveDdlFormatterLanguage = (dbType: string): SqlLanguage => {
|
|
const normalized = String(dbType || '').trim().toLowerCase();
|
|
switch (normalized) {
|
|
case 'duckdb':
|
|
return 'duckdb';
|
|
case 'sqlite':
|
|
return 'sqlite';
|
|
case 'postgres':
|
|
case 'postgresql':
|
|
case 'kingbase':
|
|
case 'highgo':
|
|
case 'opengauss':
|
|
case 'vastbase':
|
|
return 'postgresql';
|
|
case 'mariadb':
|
|
return 'mariadb';
|
|
case 'mysql':
|
|
case 'sphinx':
|
|
return 'mysql';
|
|
case 'sqlserver':
|
|
return 'transactsql';
|
|
case 'oracle':
|
|
case 'dameng':
|
|
case 'oceanbase':
|
|
return 'plsql';
|
|
case 'clickhouse':
|
|
return 'clickhouse';
|
|
default:
|
|
return 'sql';
|
|
}
|
|
};
|
|
|
|
export const formatDdlForDisplay = (ddlText: unknown, dbType: string): string => {
|
|
const raw = String(ddlText ?? '').trim();
|
|
if (!raw) {
|
|
return '';
|
|
}
|
|
const language = resolveDdlFormatterLanguage(dbType);
|
|
try {
|
|
return format(raw, {
|
|
language,
|
|
keywordCase: 'upper',
|
|
linesBetweenQueries: 1,
|
|
});
|
|
} catch {
|
|
return raw;
|
|
}
|
|
};
|