Files
MyGoNavi/frontend/src/utils/connectionUriMerge.ts
Syngnat c92959f3e8 feat(connection): 支持多数据源额外连接参数配置
- 前端连接表单新增额外连接参数入口,支持 URI query 格式录入与解析回填
- MySQL 兼容驱动支持 JDBC 常见参数映射,修复 UTF-8 字符集与 serverTimezone 兼容问题
- 扩展 Oracle、PostgreSQL 兼容、SQL Server、ClickHouse、MongoDB、达梦、TDengine 参数合并
- 按不同驱动通道处理 DSN、URI、Options 与 Settings,避免统一透传导致连接异常
- 修复编辑已保存连接时解析无认证 URI 会清空已有账号密码的问题
- 补充连接参数透传、缓存隔离、DSN 合并与 URI 回填回归测试
2026-04-30 10:57:52 +08:00

37 lines
855 B
TypeScript

const EMPTY_PRESERVED_URI_FIELDS = new Set([
"user",
"password",
"database",
"connectionParams",
]);
const isEmptyParsedValue = (value: unknown): boolean =>
value === undefined ||
value === null ||
value === "" ||
(Array.isArray(value) && value.length === 0);
export const mergeParsedUriValuesForForm = (
currentValues: Record<string, unknown>,
parsedValues: Record<string, unknown>,
uriText: string,
): Record<string, unknown> => {
const nextValues: Record<string, unknown> = { uri: uriText };
Object.entries(parsedValues).forEach(([key, value]) => {
if (value === undefined) {
return;
}
if (
EMPTY_PRESERVED_URI_FIELDS.has(key) &&
isEmptyParsedValue(value) &&
!isEmptyParsedValue(currentValues[key])
) {
return;
}
nextValues[key] = value;
});
return nextValues;
};