mirror of
https://github.com/knex/knex.git
synced 2025-07-05 08:01:09 +00:00
61 lines
1.2 KiB
JavaScript
61 lines
1.2 KiB
JavaScript
'use strict';
|
|
|
|
var _ = require('lodash');
|
|
var helpers = require('../../../helpers');
|
|
var SqlString = _.extend(exports, require('../../../query/string'));
|
|
|
|
SqlString.escape = function (val, timeZone) {
|
|
if (val == null) {
|
|
return 'NULL';
|
|
}
|
|
|
|
switch (typeof val) {
|
|
case 'boolean':
|
|
return val ? 'true' : 'false';
|
|
case 'number':
|
|
return val + '';
|
|
}
|
|
|
|
if (val instanceof Date) {
|
|
val = SqlString.dateToString(val, timeZone || 'local');
|
|
}
|
|
|
|
if (Buffer.isBuffer(val)) {
|
|
return SqlString.bufferToString(val);
|
|
}
|
|
|
|
if (Array.isArray(val)) {
|
|
return SqlString.arrayToList(val, timeZone);
|
|
}
|
|
|
|
if (typeof val === 'object') {
|
|
try {
|
|
val = JSON.stringify(val);
|
|
} catch (e) {
|
|
helpers.warn(e);
|
|
val = val + '';
|
|
}
|
|
}
|
|
|
|
val = val.replace(/[\0\n\r\b\t\\\'\x1a]/g, function (s) {
|
|
switch (s) {
|
|
case "\0":
|
|
return "\\0";
|
|
case "\n":
|
|
return "\\n";
|
|
case "\r":
|
|
return "\\r";
|
|
case "\b":
|
|
return "\\b";
|
|
case "\t":
|
|
return "\\t";
|
|
case "\x1a":
|
|
return "\\Z";
|
|
case "\'":
|
|
return "''";
|
|
default:
|
|
return "\\" + s;
|
|
}
|
|
});
|
|
return "'" + val + "'";
|
|
}; |