@@ -371,15 +371,32 @@ private module MsSql {
371371 /** Gets a reference to the `mssql` module. */
372372 API:: Node mssql ( ) { result = API:: moduleImport ( "mssql" ) }
373373
374- /** Gets an expression that creates a request object. */
374+ /** Gets a node referring to an instance of the given class. */
375+ API:: Node mssqlClass ( string name ) {
376+ result = mssql ( ) .getMember ( name ) .getInstance ( )
377+ or
378+ result = API:: Node:: ofType ( "mssql" , name )
379+ }
380+
381+ /** Gets an API node referring to a Request object. */
375382 API:: Node request ( ) {
376- // new require('mssql').Request()
377- result = mssql ( ) .getMember ( "Request" ) .getInstance ( )
383+ result = mssqlClass ( "Request" )
378384 or
379- // request.input(...)
380- result = request ( ) .getMember ( "input" ) .getReturn ( )
385+ result = request ( ) .getMember ( [ "input" , "replaceInput" , "output" , "replaceOutput" ] ) .getReturn ( )
386+ or
387+ result = [ transaction ( ) , pool ( ) ] .getMember ( "request" ) .getReturn ( )
381388 }
382389
390+ /** Gets an API node referring to a Transaction object. */
391+ API:: Node transaction ( ) {
392+ result = mssqlClass ( "Transaction" )
393+ or
394+ result = pool ( ) .getMember ( "transaction" ) .getReturn ( )
395+ }
396+
397+ /** Gets a API node referring to a ConnectionPool object. */
398+ API:: Node pool ( ) { result = mssqlClass ( "ConnectionPool" ) }
399+
383400 /** A tagged template evaluated as a query. */
384401 private class QueryTemplateExpr extends DatabaseAccess , DataFlow:: ValueNode {
385402 override TaggedTemplateExpr astNode ;
@@ -395,7 +412,7 @@ private module MsSql {
395412
396413 /** A call to a MsSql query method. */
397414 private class QueryCall extends DatabaseAccess , DataFlow:: MethodCallNode {
398- QueryCall ( ) { this = request ( ) .getMember ( [ "query" , "batch" ] ) .getACall ( ) }
415+ QueryCall ( ) { this = [ mssql ( ) , request ( ) ] .getMember ( [ "query" , "batch" ] ) .getACall ( ) }
399416
400417 override DataFlow:: Node getAQueryArgument ( ) { result = getArgument ( 0 ) }
401418 }
0 commit comments