@@ -5,11 +5,11 @@ import snowflake from "snowflake-sdk";
5
5
6
6
export default url => {
7
7
url = new URL ( url ) ;
8
- const { host : account , username, password, pathname, searchParams} = new URL (
8
+ const { host, username, password, pathname, searchParams} = new URL (
9
9
url
10
10
) ;
11
11
const connection = snowflake . createConnection ( {
12
- account,
12
+ account : host ,
13
13
username,
14
14
password,
15
15
database : pathname . slice ( 1 ) ,
@@ -18,17 +18,20 @@ export default url => {
18
18
role : searchParams . get ( "role" )
19
19
} ) ;
20
20
21
+ const connecting = new WeakSet ( ) ;
21
22
return async function query ( req , res ) {
22
23
const body = await json ( req ) ;
23
24
const { sql, params} = body ;
24
25
25
26
const client = await new Promise ( ( resolve , reject ) => {
26
- if ( connection . isUp ( ) ) return resolve ( connection ) ;
27
+ if ( connection . isUp ( ) || connecting . has ( connection ) )
28
+ return resolve ( connection ) ;
27
29
snowflake . configure ( { ocspFailOpen : false } ) ;
28
30
connection . connect ( ( err , conn ) => {
29
31
if ( err ) reject ( err ) ;
30
32
else resolve ( conn ) ;
31
33
} ) ;
34
+ connecting . add ( connection ) ;
32
35
} ) ;
33
36
34
37
const statement = client . execute ( { sqlText : sql , binds : params } ) ;
0 commit comments