mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-06-21 05:53:46 +08:00
- 前端连接表单新增额外连接参数入口,支持 URI query 格式录入与解析回填 - MySQL 兼容驱动支持 JDBC 常见参数映射,修复 UTF-8 字符集与 serverTimezone 兼容问题 - 扩展 Oracle、PostgreSQL 兼容、SQL Server、ClickHouse、MongoDB、达梦、TDengine 参数合并 - 按不同驱动通道处理 DSN、URI、Options 与 Settings,避免统一透传导致连接异常 - 修复编辑已保存连接时解析无认证 URI 会清空已有账号密码的问题 - 补充连接参数透传、缓存隔离、DSN 合并与 URI 回填回归测试
37 lines
855 B
TypeScript
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;
|
|
};
|