improve parsing

This commit is contained in:
x032205
2025-10-08 14:39:28 -04:00
parent b2bef49aba
commit d17c102bcc
+16 -12
View File
@@ -35,17 +35,10 @@ export const initDbConnection = ({
// Parse out ?sslmode=... from the connection URI if its not equal to "disable" and dbRootCert is defined // Parse out ?sslmode=... from the connection URI if its not equal to "disable" and dbRootCert is defined
let modifiedDbConnectionUri = dbConnectionUri; let modifiedDbConnectionUri = dbConnectionUri;
if (dbRootCert) { if (dbRootCert) {
const parts = dbConnectionUri.split("?"); const url = new URL(dbConnectionUri);
const baseUrl = parts[0]; if (url.searchParams.has("sslmode") && url.searchParams.get("sslmode") !== "disable") {
const queryString = parts.length > 1 ? parts[1] : ""; url.searchParams.delete("sslmode");
modifiedDbConnectionUri = url.toString();
if (queryString) {
const params = new URLSearchParams(queryString);
if (params.has("sslmode") && params.get("sslmode") !== "disable") {
params.delete("sslmode");
const newQueryString = params.toString();
modifiedDbConnectionUri = baseUrl + (newQueryString ? `?${newQueryString}` : "");
}
} }
} }
@@ -76,10 +69,21 @@ export const initDbConnection = ({
readReplicaDbs = readReplicas.map((el) => { readReplicaDbs = readReplicas.map((el) => {
const replicaDbCertificate = el.dbRootCert || dbRootCert; const replicaDbCertificate = el.dbRootCert || dbRootCert;
// Parse out ?sslmode=... from the connection URI if its not equal to "disable" and dbRootCert is defined
let modifiedReadReplicaDbConnectionUri = el.dbConnectionUri;
if (replicaDbCertificate) {
const url = new URL(el.dbConnectionUri);
if (url.searchParams.has("sslmode") && url.searchParams.get("sslmode") !== "disable") {
url.searchParams.delete("sslmode");
modifiedReadReplicaDbConnectionUri = url.toString();
}
}
return knex({ return knex({
client: "pg", client: "pg",
connection: { connection: {
connectionString: el.dbConnectionUri, connectionString: modifiedReadReplicaDbConnectionUri,
ssl: replicaDbCertificate ssl: replicaDbCertificate
? { ? {
rejectUnauthorized: true, rejectUnauthorized: true,