Skip to content

Commit 1fc6fc5

Browse files
committed
Add '.driver.generateQuery' function - same as '.driver.execQuery' but returns the SQL instead of executing it
1 parent ee6e8b2 commit 1fc6fc5

File tree

5 files changed

+39
-6
lines changed

5 files changed

+39
-6
lines changed

Changelog.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
### v6.2.0
2+
- [Feature] Add `.driver.generateQuery` function - same as `.driver.execQuery` but returns the SQL instead of executing it
3+
14
### v6.1.0
25
- [Feature] Accept options when calling `Model.create` ([856](../../pull/856))
36

lib/Drivers/DML/_shared.js

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
var Promise = require('bluebird');
22

3+
var generateQuery = function (sql, params) {
4+
return this.query.escape(sql, params);
5+
};
6+
37
var execQuery = function () {
8+
var cb;
9+
var query;
10+
411
if (arguments.length == 2) {
5-
var query = arguments[0];
6-
var cb = arguments[1];
12+
query = arguments[0];
13+
cb = arguments[1];
714
} else if (arguments.length == 3) {
8-
var query = this.query.escape(arguments[0], arguments[1]);
9-
var cb = arguments[2];
15+
query = this.generateQuery(arguments[0], arguments[1]);
16+
cb = arguments[2];
1017
}
1118
return this.execSimpleQuery(query, cb);
1219
};
@@ -30,6 +37,8 @@ var eagerQuery = function (association, opts, keys, cb) {
3037
};
3138

3239
module.exports = {
40+
generateQuery: generateQuery,
41+
3342
execQuery: execQuery,
3443

3544
eagerQuery: eagerQuery,

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"sqlite",
1313
"mongodb"
1414
],
15-
"version": "6.1.0",
15+
"version": "6.2.0",
1616
"license": "MIT",
1717
"homepage": "http://dresende.github.io/node-orm2",
1818
"repository": "http://github.com/dresende/node-orm2.git",

test/integration/db.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,27 @@ describe("db.driver", function () {
142142
});
143143
});
144144

145+
describe("#generateQuery", function () {
146+
it("should return interpolated & escaped SQL", function () {
147+
var expected = "expectation missing; unknown protocol";
148+
149+
switch (common.protocol()) {
150+
case 'mysql':
151+
case 'sqlite':
152+
expected = "UPDATE `animals` SET `name` = 'cat' WHERE `id` = 9"
153+
break;
154+
case 'postgres':
155+
expected = 'UPDATE "animals" SET "name" = \'cat\' WHERE "id" = 9'
156+
break;
157+
}
158+
159+
should.equal(
160+
db.driver.generateQuery("UPDATE ?? SET ?? = ? WHERE ?? = ?", ['animals', 'name', 'cat', 'id', 9]),
161+
expected,
162+
);
163+
});
164+
});
165+
145166
describe("#execQuery", function () {
146167
it("should execute sql queries", function (done) {
147168
db.driver.execQuery("SELECT id FROM log", function (err, data) {

0 commit comments

Comments
 (0)