File tree Expand file tree Collapse file tree 5 files changed +59
-17
lines changed Expand file tree Collapse file tree 5 files changed +59
-17
lines changed Original file line number Diff line number Diff line change
1
+ // Build up a SQLBuilder instance when the file is required rather than when the
2
+ // function is run.
3
+ var SQLBuilder = require ( 'waterline-sql-builder' ) ( {
4
+ dialect : 'mysql'
5
+ } ) ;
6
+
1
7
module . exports = {
2
8
3
9
@@ -70,33 +76,34 @@ module.exports = {
70
76
71
77
72
78
fn : function compileStatement ( inputs , exits ) {
73
- var SQLBuilder = require ( 'waterline-query-builder' ) ;
74
-
75
- SQLBuilder . generateSql ( {
76
- dialect : 'mysql' ,
77
- query : inputs . statement
78
- } ) . exec ( {
79
- error : function error ( err ) {
79
+ var compiledNativeQuery ;
80
+ try {
81
+ compiledNativeQuery = SQLBuilder . generate ( inputs . statement ) ;
82
+ } catch ( err ) {
83
+ if ( ! err . code || err . code === 'error' ) {
80
84
return exits . error ( err ) ;
81
- } ,
82
- malformed : function malformed ( err ) {
85
+ }
86
+
87
+ if ( err . code === 'malformed' ) {
83
88
return exits . malformed ( {
84
89
error : err ,
85
90
meta : inputs . meta
86
91
} ) ;
87
- } ,
88
- notSupported : function notSupported ( err ) {
92
+ }
93
+
94
+ if ( err . code === 'notSupported' ) {
89
95
return exits . notSupported ( {
90
96
error : err ,
91
97
meta : inputs . meta
92
98
} ) ;
93
- } ,
94
- success : function success ( compiledNativeQuery ) {
95
- return exits . success ( {
96
- nativeQuery : compiledNativeQuery ,
97
- meta : inputs . meta
98
- } ) ;
99
99
}
100
+
101
+ return exits . error ( err ) ;
102
+ }
103
+
104
+ return exits . success ( {
105
+ nativeQuery : compiledNativeQuery ,
106
+ meta : inputs . meta
100
107
} ) ;
101
108
}
102
109
Original file line number Diff line number Diff line change @@ -18,6 +18,12 @@ module.exports = {
18
18
'(e.g. a PoolCluster from felixge\'s `mysql` package).' ,
19
19
20
20
21
+ cacheable : false ,
22
+
23
+
24
+ sync : true ,
25
+
26
+
21
27
inputs : {
22
28
23
29
connectionString : {
Original file line number Diff line number Diff line change @@ -58,6 +58,7 @@ module.exports = {
58
58
59
59
60
60
fn : function parseNativeQueryResult ( inputs , exits ) {
61
+ var _ = require ( 'lodash' ) ;
61
62
var normalizedResult ;
62
63
63
64
switch ( inputs . queryType ) {
@@ -83,6 +84,27 @@ module.exports = {
83
84
} ;
84
85
break ;
85
86
87
+ case 'avg' :
88
+ var avgResult = _ . first ( inputs . nativeQueryResult . rows ) ;
89
+ var avgResultKey = _ . first ( _ . keys ( avgResult ) ) ;
90
+ var avg = inputs . nativeQueryResult . rows [ 0 ] [ avgResultKey ] ;
91
+ normalizedResult = Number ( avg ) ;
92
+ break ;
93
+
94
+ case 'sum' :
95
+ var sumResult = _ . first ( inputs . nativeQueryResult . rows ) ;
96
+ var sumResultKey = _ . first ( _ . keys ( sumResult ) ) ;
97
+ var sum = inputs . nativeQueryResult . rows [ 0 ] [ sumResultKey ] ;
98
+ normalizedResult = Number ( sum ) ;
99
+ break ;
100
+
101
+ case 'count' :
102
+ var countResult = _ . first ( inputs . nativeQueryResult . rows ) ;
103
+ var countResultKey = _ . first ( _ . keys ( countResult ) ) ;
104
+ var count = inputs . nativeQueryResult . rows [ 0 ] [ countResultKey ] ;
105
+ normalizedResult = Number ( count ) ;
106
+ break ;
107
+
86
108
default :
87
109
88
110
}
Original file line number Diff line number Diff line change @@ -78,6 +78,7 @@ module.exports = {
78
78
fn : function sendNativeQuery ( inputs , exits ) {
79
79
var util = require ( 'util' ) ;
80
80
var _ = require ( 'lodash' ) ;
81
+ var debug = require ( 'debug' ) ( 'query' ) ;
81
82
var validateConnection = require ( '../helpers/validate-connection' ) ;
82
83
83
84
// Validate provided connection.
@@ -105,6 +106,11 @@ module.exports = {
105
106
}
106
107
107
108
109
+ debug ( 'Running SQL Query:' ) ;
110
+ debug ( 'SQL: ' + sql ) ;
111
+ debug ( 'Bindings: ' + bindings ) ;
112
+ debug ( 'Connection Id: ' + inputs . connection . id ) ;
113
+
108
114
// Send native query to the database using node-mysql.
109
115
inputs . connection . query ( {
110
116
sql : sql ,
Original file line number Diff line number Diff line change 20
20
"author" : " The Treeline Company" ,
21
21
"license" : " MIT" ,
22
22
"dependencies" : {
23
+ "debug" : " 2.2.0" ,
23
24
"lodash" : " 3.10.1" ,
24
25
"machine" : " 12.4.0" ,
25
26
"mysql" : " 2.10.2" ,
You can’t perform that action at this time.
0 commit comments