Skip to content

Commit abcecbf

Browse files
Merge pull request sailshq#2 from treelinehq/fixes
Fixes to parse
2 parents 73ea092 + f43e8c4 commit abcecbf

File tree

5 files changed

+59
-17
lines changed

5 files changed

+59
-17
lines changed

machines/compile-statement.js

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
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+
17
module.exports = {
28

39

@@ -70,33 +76,34 @@ module.exports = {
7076

7177

7278
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') {
8084
return exits.error(err);
81-
},
82-
malformed: function malformed(err) {
85+
}
86+
87+
if (err.code === 'malformed') {
8388
return exits.malformed({
8489
error: err,
8590
meta: inputs.meta
8691
});
87-
},
88-
notSupported: function notSupported(err) {
92+
}
93+
94+
if (err.code === 'notSupported') {
8995
return exits.notSupported({
9096
error: err,
9197
meta: inputs.meta
9298
});
93-
},
94-
success: function success(compiledNativeQuery) {
95-
return exits.success({
96-
nativeQuery: compiledNativeQuery,
97-
meta: inputs.meta
98-
});
9999
}
100+
101+
return exits.error(err);
102+
}
103+
104+
return exits.success({
105+
nativeQuery: compiledNativeQuery,
106+
meta: inputs.meta
100107
});
101108
}
102109

machines/create-manager.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ module.exports = {
1818
'(e.g. a PoolCluster from felixge\'s `mysql` package).',
1919

2020

21+
cacheable: false,
22+
23+
24+
sync: true,
25+
26+
2127
inputs: {
2228

2329
connectionString: {

machines/parse-native-query-result.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ module.exports = {
5858

5959

6060
fn: function parseNativeQueryResult(inputs, exits) {
61+
var _ = require('lodash');
6162
var normalizedResult;
6263

6364
switch (inputs.queryType) {
@@ -83,6 +84,27 @@ module.exports = {
8384
};
8485
break;
8586

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+
86108
default:
87109

88110
}

machines/send-native-query.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ module.exports = {
7878
fn: function sendNativeQuery(inputs, exits) {
7979
var util = require('util');
8080
var _ = require('lodash');
81+
var debug = require('debug')('query');
8182
var validateConnection = require('../helpers/validate-connection');
8283

8384
// Validate provided connection.
@@ -105,6 +106,11 @@ module.exports = {
105106
}
106107

107108

109+
debug('Running SQL Query:');
110+
debug('SQL: ' + sql);
111+
debug('Bindings: ' + bindings);
112+
debug('Connection Id: ' + inputs.connection.id);
113+
108114
// Send native query to the database using node-mysql.
109115
inputs.connection.query({
110116
sql: sql,

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"author": "The Treeline Company",
2121
"license": "MIT",
2222
"dependencies": {
23+
"debug": "2.2.0",
2324
"lodash": "3.10.1",
2425
"machine": "12.4.0",
2526
"mysql": "2.10.2",

0 commit comments

Comments
 (0)