@@ -5,26 +5,31 @@ import javascript
55 */
66module TypeOrm {
77 /**
8- * Gets an expression that constructs or returns a TypeORM database instance.
8+ * Gets a `DataSource` instance
99 */
1010 API:: Node dataSource ( ) {
1111 result = API:: moduleImport ( "typeorm" ) .getMember ( "DataSource" ) .getInstance ( )
1212 }
1313
1414 /**
15- * Gets an `QueryRunner`
15+ * Gets a `QueryRunner` nodes
1616 */
1717 API:: Node queryRunner ( ) { result = dataSource ( ) .getMember ( "createQueryRunner" ) .getReturn ( ) }
1818
1919 /**
20- * Gets `createQueryBuilder` return value from a Active record based Entity
20+ * Gets a `*QueryBuilder` node of an Active record based Entity
2121 */
2222 API:: Node activeRecordQueryBuilder ( ) {
23- result = queryRunner ( ) .getMember ( "manager" ) .getMember ( "createQueryBuilder" ) .getReceiver ( )
23+ result =
24+ API:: moduleImport ( "typeorm" )
25+ .getMember ( "Entity" )
26+ .getReturn ( )
27+ .getADecoratedClass ( )
28+ .getMember ( "createQueryBuilder" )
2429 }
2530
2631 /**
27- * Gets `createQueryBuilder` return value from a Data Mapper based Entity
32+ * Gets a `*QueryBuilder` node of a Data Mapper based Entity
2833 */
2934 API:: Node dataMapperQueryBuilder ( ) {
3035 result =
@@ -36,10 +41,19 @@ module TypeOrm {
3641 // Using entity manager
3742 dataSource ( ) .getMember ( "manager" ) , queryRunner ( ) .getMember ( "manager" )
3843 ] .getMember ( "createQueryBuilder" ) .getReturn ( )
44+ or
45+ // in case of custom query builders
46+ result =
47+ API:: moduleImport ( "typeorm" )
48+ .getMember ( [
49+ "SelectQueryBuilder" , "InsertQueryBuilder" , "RelationQueryBuilder" ,
50+ "UpdateQueryBuilder"
51+ ] )
52+ .getInstance ( )
3953 }
4054
4155 /**
42- * Gets return value of a `createQueryBuilder`
56+ * Gets a `*QueryBuilder` node
4357 */
4458 API:: Node queryBuilderInstance ( ) {
4559 result = dataMapperQueryBuilder ( ) or
@@ -91,8 +105,8 @@ module TypeOrm {
91105 string selectExpression ( ) {
92106 result =
93107 [
94- "select" , "addSelect" , "from" , " where", "andWhere" , "orWhere" , "having" , "orHaving" ,
95- "andHaving" , " orderBy", "addOrderBy" , "distinctOn" , "groupBy" , "addCommonTableExpression" ,
108+ "select" , "addSelect" , "where" , "andWhere" , "orWhere" , "having" , "orHaving" , "andHaving ",
109+ "orderBy" , "addOrderBy" , "distinctOn" , "groupBy" , "addCommonTableExpression" ,
96110 "leftJoinAndSelect" , "innerJoinAndSelect" , "leftJoin" , "innerJoin" , "leftJoinAndMapOne" ,
97111 "innerJoinAndMapOne" , "leftJoinAndMapMany" , "innerJoinAndMapMany" , "orUpdate" , "orIgnore" ,
98112 "values" , "set"
@@ -116,8 +130,8 @@ module TypeOrm {
116130 typeOrmNode = getASuccessorOfBuilderInstance ( ) and
117131 this = typeOrmNode .asSource ( )
118132 or
119- // I'm doing following because this = TypeORMNode.asSource()s
120- // won 't let me to get a member in getAQueryArgument
133+ // I'm doing following because ` this = TypeORMNode.asSource()`
134+ // don 't let me to get a member in getAQueryArgument
121135 typeOrmNode = getASuccessorOfBrackets ( ) and
122136 typeOrmNode .getMember ( selectExpression ( ) ) .getACall ( ) = this
123137 }
@@ -137,7 +151,7 @@ module TypeOrm {
137151 or
138152 memberName =
139153 [
140- "select" , "addSelect" , "from" , " where", "andWhere" , "orWhere" , "having" , "orHaving" ,
154+ "select" , "addSelect" , "where" , "andWhere" , "orWhere" , "having" , "orHaving" ,
141155 "andHaving" , "orderBy" , "addOrderBy" , "distinctOn" , "groupBy" ,
142156 "addCommonTableExpression"
143157 ] and
@@ -167,8 +181,8 @@ module TypeOrm {
167181 /** An expression that is passed to the `query` function and hence interpreted as SQL. */
168182 class QueryString extends SQL:: SqlString {
169183 QueryString ( ) {
170- this = any ( QueryRunner qc ) .getAQueryArgument ( ) or
171- this = any ( QueryBuilderCall qc ) .getAQueryArgument ( )
184+ this = any ( QueryRunner qr ) .getAQueryArgument ( ) or
185+ this = any ( QueryBuilderCall qb ) .getAQueryArgument ( )
172186 }
173187 }
174188}
0 commit comments