From 8a50dd7462d40cfa122a233f7fcada24ea39d3ae Mon Sep 17 00:00:00 2001 From: ByteOPCode <74647838+ByteOPCode@users.noreply.github.com> Date: Sun, 29 May 2022 07:07:07 +0100 Subject: [PATCH] feat: Add JSON parameter support for MSSQL connection (#5200) Co-authored-by: k144 --- lib/knex-builder/internal/parse-connection.js | 6 +++-- test/tape/parse-connection.js | 24 +++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/lib/knex-builder/internal/parse-connection.js b/lib/knex-builder/internal/parse-connection.js index 4a599fbd92..72671272fa 100644 --- a/lib/knex-builder/internal/parse-connection.js +++ b/lib/knex-builder/internal/parse-connection.js @@ -69,8 +69,10 @@ function connectionObject(parsed) { } if (parsed.searchParams) { for (const [key, value] of parsed.searchParams.entries()) { - const isMySQLLike = ['mysql:', 'mariadb:'].includes(parsed.protocol); - if (isMySQLLike) { + const isNestedConfigSupported = ['mysql:', 'mariadb:', 'mssql:'].includes( + parsed.protocol + ); + if (isNestedConfigSupported) { try { connection[key] = JSON.parse(value); } catch (err) { diff --git a/test/tape/parse-connection.js b/test/tape/parse-connection.js index 0f3196c9d4..ce08750f22 100644 --- a/test/tape/parse-connection.js +++ b/test/tape/parse-connection.js @@ -311,3 +311,27 @@ test('#4628, supports mysql / mariadb client JSON parameters', function (t) { } ); }); + +test('support MSSQL JSON parameters for config object', function (t) { + t.plan(1); + t.deepLooseEqual( + parseConnection( + 'mssql://user:password@host/database?domain=testDomain&options={"instanceName": "TestInstance001", "readOnlyIntent": true}' + ), + + { + client: 'mssql', + connection: { + server: 'host', + user: 'user', + password: 'password', + database: 'database', + domain: 'testDomain', + options: { + instanceName: 'TestInstance001', + readOnlyIntent: true, + }, + }, + } + ); +});