Skip to content

Commit 89f02b6

Browse files
authored
Merge pull request #60 from observablehq/syl/databricks
Tweaked CLI question to handle DataBricks use case
2 parents e350185 + 6b8f99d commit 89f02b6

File tree

3 files changed

+88
-8
lines changed

3 files changed

+88
-8
lines changed

lib/commands.js

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ export async function add(argv, reset = false) {
2020
const {name, sslkey, sslcert} = argv;
2121
let config = readConfig();
2222
let url;
23+
let token;
24+
let server_host;
25+
let path;
26+
2327
if (config && config[name] && !reset)
2428
exit(`A database proxy for "${name}" already exists`);
2529

@@ -55,15 +59,33 @@ export async function add(argv, reset = false) {
5559

5660
// DB credentials
5761
if (!reset) {
58-
url = await question(
59-
"PostgreSQL, MySQL, or Snowflake Database URL (including username and password): "
60-
);
62+
// Databricks credentials
63+
if (decoded.type === "databricks") {
64+
token = await question("Databricks token: ");
65+
server_host = await question("Databricks server host: ");
66+
path = await question("Databricks path: ");
67+
} else {
68+
url = await question(
69+
"PostgreSQL, MySQL, or Snowflake Database URL (including username and password): "
70+
);
71+
}
6172
}
6273

6374
rl.close();
6475

6576
if (!config) config = {};
66-
config[name] = {name, secret, url};
77+
if (decoded.type === "databricks") {
78+
config[name] = {
79+
name,
80+
secret,
81+
token,
82+
server_host,
83+
path,
84+
};
85+
} else {
86+
config[name] = {name, secret, url};
87+
}
88+
6789
writeConfig(config);
6890

6991
console.log(`Configuration ${reset ? `reset` : `added`} for "${name}"`);

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
"observable-database-proxy": "./bin/observable-database-proxy.js"
1919
},
2020
"dependencies": {
21+
"@databricks/sql": "https://github.com/observablehq/databricks-sql-nodejs",
2122
"JSONStream": "^1.3.5",
2223
"ajv": "^8.11.0",
2324
"micro": "^9.3.4",
@@ -42,8 +43,7 @@
4243
"wait-on": "^6.0.1"
4344
},
4445
"peerDependencies": {
45-
"oracledb": "https://github.com/oracle/node-oracledb/releases/download/v5.5.0/oracledb-src-5.5.0.tgz",
46-
"@databricks/sql": "1.0.0"
46+
"oracledb": "https://github.com/oracle/node-oracledb/releases/download/v5.5.0/oracledb-src-5.5.0.tgz"
4747
},
4848
"scripts": {
4949
"start": "nodemon bin/observable-database-proxy.js",

yarn.lock

Lines changed: 60 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1119,6 +1119,16 @@
11191119
enabled "2.0.x"
11201120
kuler "^2.0.0"
11211121

1122+
"@databricks/sql@https://github.com/observablehq/databricks-sql-nodejs":
1123+
version "1.0.0"
1124+
resolved "https://github.com/observablehq/databricks-sql-nodejs#becff0fec632309f590536de09c622ea6aeb9ff1"
1125+
dependencies:
1126+
commander "^9.3.0"
1127+
node-int64 "^0.4.0"
1128+
thrift "^0.16.0"
1129+
uuid "^9.0.0"
1130+
winston "^3.8.2"
1131+
11221132
"@hapi/hoek@^9.0.0":
11231133
version "9.3.0"
11241134
resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb"
@@ -1429,6 +1439,11 @@ async-each@^1.0.1:
14291439
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
14301440
integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
14311441

1442+
async-limiter@~1.0.0:
1443+
version "1.0.1"
1444+
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
1445+
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
1446+
14321447
async@^3.2.1, async@^3.2.3:
14331448
version "3.2.4"
14341449
resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c"
@@ -1629,6 +1644,11 @@ braces@~3.0.2:
16291644
dependencies:
16301645
fill-range "^7.0.1"
16311646

1647+
browser-or-node@^1.2.1:
1648+
version "1.3.0"
1649+
resolved "https://registry.yarnpkg.com/browser-or-node/-/browser-or-node-1.3.0.tgz#f2a4e8568f60263050a6714b2cc236bb976647a7"
1650+
integrity sha512-0F2z/VSnLbmEeBcUrSuDH5l0HxTXdQQzLjkmBR4cYfvg1zJrKSlmIZFqyFR8oX0NrwPhy3c3HQ6i3OxMbew4Tg==
1651+
16321652
browser-request@^0.3.3:
16331653
version "0.3.3"
16341654
resolved "https://registry.yarnpkg.com/browser-request/-/browser-request-0.3.3.tgz#9ece5b5aca89a29932242e18bf933def9876cc17"
@@ -1918,7 +1938,7 @@ combined-stream@^1.0.8:
19181938
dependencies:
19191939
delayed-stream "~1.0.0"
19201940

1921-
commander@^9.4.0:
1941+
commander@^9.3.0, commander@^9.4.0:
19221942
version "9.4.1"
19231943
resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd"
19241944
integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==
@@ -3262,6 +3282,11 @@ isobject@^3.0.0, isobject@^3.0.1:
32623282
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
32633283
integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
32643284

3285+
isomorphic-ws@^4.0.1:
3286+
version "4.0.1"
3287+
resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc"
3288+
integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==
3289+
32653290
32663291
version "0.16.0"
32673292
resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.16.0.tgz#b15b0a85dfd4d930d43e69ed605943c802785076"
@@ -3805,6 +3830,11 @@ node-fetch@^2.6.7:
38053830
dependencies:
38063831
whatwg-url "^5.0.0"
38073832

3833+
node-int64@^0.4.0:
3834+
version "0.4.0"
3835+
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
3836+
integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==
3837+
38083838
node-releases@^2.0.6:
38093839
version "2.0.6"
38103840
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503"
@@ -4300,6 +4330,11 @@ python-struct@^1.1.3:
43004330
dependencies:
43014331
long "^4.0.0"
43024332

4333+
q@^1.5.0:
4334+
version "1.5.1"
4335+
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
4336+
integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==
4337+
43034338
qs@^6.4.0:
43044339
version "6.11.0"
43054340
resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
@@ -5060,6 +5095,17 @@ thenify-all@^1.0.0:
50605095
dependencies:
50615096
any-promise "^1.0.0"
50625097

5098+
thrift@^0.16.0:
5099+
version "0.16.0"
5100+
resolved "https://registry.yarnpkg.com/thrift/-/thrift-0.16.0.tgz#6497711610aa32d2f94fc2546f88ee4ff6e4106c"
5101+
integrity sha512-W8DpGyTPlIaK3f+e1XOCLxefaUWXtrOXAaVIDbfYhmVyriYeAKgsBVFNJUV1F9SQ2SPt2sG44AZQxSGwGj/3VA==
5102+
dependencies:
5103+
browser-or-node "^1.2.1"
5104+
isomorphic-ws "^4.0.1"
5105+
node-int64 "^0.4.0"
5106+
q "^1.5.0"
5107+
ws "^5.2.3"
5108+
50635109
"through@>=2.2.7 <3", through@~2.3:
50645110
version "2.3.8"
50655111
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
@@ -5400,6 +5446,11 @@ uuid@^8.3.0:
54005446
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
54015447
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
54025448

5449+
uuid@^9.0.0:
5450+
version "9.0.0"
5451+
resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5"
5452+
integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==
5453+
54035454
vm2@^3.9.8:
54045455
version "3.9.11"
54055456
resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.11.tgz#a880f510a606481719ec3f9803b940c5805a06fe"
@@ -5490,7 +5541,7 @@ winston-transport@^4.5.0:
54905541
readable-stream "^3.6.0"
54915542
triple-beam "^1.3.0"
54925543

5493-
winston@^3.1.0:
5544+
winston@^3.1.0, winston@^3.8.2:
54945545
version "3.8.2"
54955546
resolved "https://registry.yarnpkg.com/winston/-/winston-3.8.2.tgz#56e16b34022eb4cff2638196d9646d7430fdad50"
54965547
integrity sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew==
@@ -5549,6 +5600,13 @@ write-file-atomic@^2.0.0:
55495600
imurmurhash "^0.1.4"
55505601
signal-exit "^3.0.2"
55515602

5603+
ws@^5.2.3:
5604+
version "5.2.3"
5605+
resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d"
5606+
integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==
5607+
dependencies:
5608+
async-limiter "~1.0.0"
5609+
55525610
xdg-basedir@^3.0.0:
55535611
version "3.0.0"
55545612
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"

0 commit comments

Comments
 (0)