不要怂,就是干,撸起袖子干!

Commit 42a44f10 by terraflubb

MySQL: Outgoing booleans are turned into ints

In the MySQL dialect, values used to generate insert, bulk insert, and update queries are now checked for boolean-ness and will be turned into an int.

There was already duplicated logic applied to outgoing values to check if the value was a Date or not. I factored out value processing to a single function and added a check for typeof boolean.

The new function also escapes the return value since that was also being done everywhere.

Fixes #607
1 parent 5e8eac2a
Showing with 16 additions and 10 deletions
......@@ -2,6 +2,16 @@ var Utils = require("../../utils")
, DataTypes = require("../../data-types")
, util = require("util")
var processAndEscapeValue = function(value) {
var processedValue = value
if (value instanceof Date) {
processedValue = Utils.toSqlDate(value)
} else if (typeof value === 'boolean') {
processedValue = value ? 1 : 0
}
return Utils.escape(processedValue)
}
module.exports = (function() {
var QueryGenerator = {
addSchema: function(opts) {
......@@ -234,9 +244,7 @@ module.exports = (function() {
var table = QueryGenerator.addQuotes(tableName)
var attributes = Object.keys(attrValueHash).map(function(attr){return QueryGenerator.addQuotes(attr)}).join(",")
var values = Utils._.values(attrValueHash).map(function(value){
return Utils.escape((value instanceof Date) ? Utils.toSqlDate(value) : value)
}).join(",")
var values = Utils._.values(attrValueHash).map(processAndEscapeValue).join(",")
var query = "INSERT INTO " + table + " (" + attributes + ") VALUES (" + values + ");"
......@@ -248,9 +256,7 @@ module.exports = (function() {
Utils._.forEach(attrValueHashes, function(attrValueHash) {
tuples.push("(" +
Utils._.values(attrValueHash).map(function(value){
return Utils.escape((value instanceof Date) ? Utils.toSqlDate(value) : value)
}).join(",") +
Utils._.values(attrValueHash).map(processAndEscapeValue).join(",") +
")")
})
......@@ -269,9 +275,9 @@ module.exports = (function() {
for (var key in attrValueHash) {
var value = attrValueHash[key]
, _value = (value instanceof Date) ? Utils.toSqlDate(value) : value
, _value = processAndEscapeValue(value)
values.push(QueryGenerator.addQuotes(key) + "=" + Utils.escape(_value))
values.push(QueryGenerator.addQuotes(key) + "=" + _value)
}
var query = "UPDATE " + QueryGenerator.addQuotes(tableName) +
......@@ -319,9 +325,9 @@ module.exports = (function() {
for (var key in attrValueHash) {
var value = attrValueHash[key]
, _value = (value instanceof Date) ? Utils.toSqlDate(value) : value
, _value = processAndEscapeValue(value)
values.push(QueryGenerator.addQuotes(key) + "=" + QueryGenerator.addQuotes(key) + " + " +Utils.escape(_value))
values.push(QueryGenerator.addQuotes(key) + "=" + QueryGenerator.addQuotes(key) + " + " + _value)
}
var table = QueryGenerator.addQuotes(tableName)
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!