Comparing version 0.1.15 to 0.1.16
@@ -29,2 +29,5 @@ exports.between = function (a, b) { | ||
}; | ||
exports.not_in = function (v) { | ||
return createSpecialObject({ val: v }, 'not_in'); | ||
}; | ||
@@ -31,0 +34,0 @@ function createSpecialObject(obj, tag) { |
@@ -1,2 +0,3 @@ | ||
var util = require("util"); | ||
var util = require("util"); | ||
var helpers = require("../Helpers"); | ||
@@ -32,3 +33,3 @@ exports.escapeId = function () { | ||
if (util.isDate(val)) { | ||
val = dateToString(val, timeZone || "local"); | ||
val = helpers.dateToString(val, timeZone || "local", { dialect: 'mysql' }); | ||
} else { | ||
@@ -103,37 +104,1 @@ switch (typeof val) { | ||
} | ||
function dateToString(date, timeZone) { | ||
var dt = new Date(date); | ||
if (timeZone != 'local') { | ||
var tz = convertTimezone(timeZone); | ||
dt.setTime(dt.getTime() + (dt.getTimezoneOffset() * 60000)); | ||
if (tz !== false) { | ||
dt.setTime(dt.getTime() + (tz * 60000)); | ||
} | ||
} | ||
var year = dt.getFullYear(); | ||
var month = zeroPad(dt.getMonth() + 1); | ||
var day = zeroPad(dt.getDate()); | ||
var hour = zeroPad(dt.getHours()); | ||
var minute = zeroPad(dt.getMinutes()); | ||
var second = zeroPad(dt.getSeconds()); | ||
return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second; | ||
} | ||
function zeroPad(number) { | ||
return (number < 10) ? '0' + number : number; | ||
} | ||
function convertTimezone(tz) { | ||
if (tz == "Z") return 0; | ||
var m = tz.match(/([\+\-\s])(\d\d):?(\d\d)?/); | ||
if (m) { | ||
return (m[1] == '-' ? -1 : 1) * (parseInt(m[2], 10) + ((m[3] ? parseInt(m[3], 10) : 0) / 60)) * 60; | ||
} | ||
return false; | ||
} |
@@ -1,2 +0,3 @@ | ||
var util = require("util"); | ||
var util = require("util"); | ||
var helpers = require("../Helpers"); | ||
@@ -31,3 +32,3 @@ exports.escapeId = function () { | ||
if (util.isDate(val)) { | ||
return "'" + dateToString(val, timeZone || "local") + "'"; | ||
return "'" + helpers.dateToString(val, timeZone || "local", { dialect: 'postgresql' }) + "'"; | ||
} | ||
@@ -55,45 +56,1 @@ | ||
}; | ||
function dateToString(date, timeZone) { | ||
var dt = new Date(date); | ||
if (timeZone != 'local') { | ||
var tz = convertTimezone(timeZone); | ||
dt.setTime(dt.getTime() + (dt.getTimezoneOffset() * 60000)); | ||
if (tz !== false) { | ||
dt.setTime(dt.getTime() + (tz * 60000)); | ||
} | ||
} | ||
var year = dt.getFullYear(); | ||
var month = zeroPad(dt.getMonth() + 1); | ||
var day = zeroPad(dt.getDate()); | ||
var hour = zeroPad(dt.getHours()); | ||
var minute = zeroPad(dt.getMinutes()); | ||
var second = zeroPad(dt.getSeconds()); | ||
var milli = zeroPad(dt.getMilliseconds(), 3); | ||
return year + '-' + month + '-' + day + 'T' + hour + ':' + minute + ':' + second + '.' + milli + 'Z'; | ||
} | ||
function zeroPad(number, n) { | ||
if (arguments.length == 1) n = 2; | ||
number = "" + number; | ||
while (number.length < n) { | ||
number = "0" + number; | ||
} | ||
return number; | ||
} | ||
function convertTimezone(tz) { | ||
if (tz == "Z") return 0; | ||
var m = tz.match(/([\+\-\s])(\d\d):?(\d\d)?/); | ||
if (m) { | ||
return (m[1] == '-' ? -1 : 1) * (parseInt(m[2], 10) + ((m[3] ? parseInt(m[3], 10) : 0) / 60)) * 60; | ||
} | ||
return false; | ||
} |
@@ -1,2 +0,3 @@ | ||
var util = require("util"); | ||
var util = require("util"); | ||
var helpers = require("../Helpers"); | ||
@@ -18,3 +19,3 @@ exports.escapeId = require("./mysql").escapeId; | ||
if (util.isDate(val)) { | ||
return "'" + dateToString(val, timeZone || "local") + "'"; | ||
return "'" + helpers.dateToString(val, timeZone || "local", { dialect: 'sqlite' }) + "'"; | ||
} | ||
@@ -43,45 +44,1 @@ | ||
}; | ||
function dateToString(date, timeZone) { | ||
var dt = new Date(date); | ||
if (timeZone != 'local') { | ||
var tz = convertTimezone(timeZone); | ||
dt.setTime(dt.getTime() + (dt.getTimezoneOffset() * 60000)); | ||
if (tz !== false) { | ||
dt.setTime(dt.getTime() + (tz * 60000)); | ||
} | ||
} | ||
var year = dt.getFullYear(); | ||
var month = zeroPad(dt.getMonth() + 1); | ||
var day = zeroPad(dt.getDate()); | ||
var hour = zeroPad(dt.getHours()); | ||
var minute = zeroPad(dt.getMinutes()); | ||
var second = zeroPad(dt.getSeconds()); | ||
var milli = zeroPad(dt.getMilliseconds(), 3); | ||
return year + '-' + month + '-' + day + 'T' + hour + ':' + minute + ':' + second + '.' + milli + 'Z'; | ||
} | ||
function zeroPad(number, n) { | ||
if (arguments.length == 1) n = 2; | ||
number = "" + number; | ||
while (number.length < n) { | ||
number = "0" + number; | ||
} | ||
return number; | ||
} | ||
function convertTimezone(tz) { | ||
if (tz == "Z") return 0; | ||
var m = tz.match(/([\+\-\s])(\d\d):?(\d\d)?/); | ||
if (m) { | ||
return (m[1] == '-' ? -1 : 1) * (parseInt(m[2], 10) + ((m[3] ? parseInt(m[3], 10) : 0) / 60)) * 60; | ||
} | ||
return false; | ||
} |
@@ -15,1 +15,49 @@ | ||
} | ||
module.exports.dateToString = function (date, timeZone, opts) { | ||
var dt = new Date(date); | ||
if (timeZone != 'local') { | ||
var tz = convertTimezone(timeZone); | ||
dt.setTime(dt.getTime() + (dt.getTimezoneOffset() * 60000)); | ||
if (tz !== false) { | ||
dt.setTime(dt.getTime() + (tz * 60000)); | ||
} | ||
} | ||
var year = dt.getFullYear(); | ||
var month = zeroPad(dt.getMonth() + 1); | ||
var day = zeroPad(dt.getDate()); | ||
var hour = zeroPad(dt.getHours()); | ||
var minute = zeroPad(dt.getMinutes()); | ||
var second = zeroPad(dt.getSeconds()); | ||
var milli = zeroPad(dt.getMilliseconds(), 3); | ||
if (opts.dialect == 'mysql') { | ||
return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second + '.' + milli; | ||
} else { | ||
return year + '-' + month + '-' + day + 'T' + hour + ':' + minute + ':' + second + '.' + milli + 'Z'; | ||
} | ||
} | ||
function zeroPad(number, n) { | ||
if (arguments.length == 1) n = 2; | ||
number = "" + number; | ||
while (number.length < n) { | ||
number = "0" + number; | ||
} | ||
return number; | ||
} | ||
function convertTimezone(tz) { | ||
if (tz == "Z") return 0; | ||
var m = tz.match(/([\+\-\s])(\d\d):?(\d\d)?/); | ||
if (m) { | ||
return (m[1] == '-' ? -1 : 1) * (parseInt(m[2], 10) + ((m[3] ? parseInt(m[3], 10) : 0) / 60)) * 60; | ||
} | ||
return false; | ||
} |
@@ -197,3 +197,3 @@ var Helpers = require('./Helpers'); | ||
build: function () { | ||
var query = [], tmp, i, j, ord, str, select_all = true; | ||
var query = [], tmp, i, ii, j, ord, str, select_all = true; | ||
var having = []; | ||
@@ -200,0 +200,0 @@ |
@@ -116,2 +116,3 @@ var Helpers = require('./Helpers'); | ||
case "lte": | ||
case "not_in": | ||
switch (op) { | ||
@@ -124,2 +125,3 @@ case "eq" : op = (where.w[k].val === null ? "IS" : "="); break; | ||
case "lte" : op = "<="; break; | ||
case "not_in" : op = "NOT IN"; break; | ||
} | ||
@@ -126,0 +128,0 @@ query.push( |
@@ -9,3 +9,3 @@ { | ||
], | ||
"version": "0.1.15", | ||
"version": "0.1.16", | ||
"license": "MIT", | ||
@@ -12,0 +12,0 @@ "repository": { |
@@ -19,4 +19,2 @@ ## NodeJS SQL query builder | ||
This module is used by [ORM](http://dresende.github.com/node-orm2) to build SQL queries in the different supported | ||
dialects. Sorry there is no API documentation but there are a couple of tests you can read and find out how to use | ||
it if you want. | ||
This module is used by [ORM](http://dresende.github.com/node-orm2) to build SQL queries in the different supported dialects. Sorry there is no API documentation but there are a couple of tests you can read and find out how to use it if you want. |
@@ -74,3 +74,3 @@ var common = require('../common'); | ||
dialect.escapeVal(new Date(d.getTime() + tzOffsetMillis)), | ||
"'2013-09-04 19:15:11'" | ||
"'2013-09-04 19:15:11.133'" | ||
); | ||
@@ -80,3 +80,3 @@ | ||
dialect.escapeVal(new Date(d.getTime()), 'Z'), | ||
"'2013-09-04 19:15:11'" | ||
"'2013-09-04 19:15:11.133'" | ||
); | ||
@@ -86,3 +86,3 @@ | ||
dialect.escapeVal(new Date(d.getTime()), '-0000'), | ||
"'2013-09-04 19:15:11'" | ||
"'2013-09-04 19:15:11.133'" | ||
); | ||
@@ -92,3 +92,3 @@ | ||
dialect.escapeVal(new Date(d.getTime()), '-0400'), | ||
"'2013-09-04 15:15:11'" | ||
"'2013-09-04 15:15:11.133'" | ||
); | ||
@@ -95,0 +95,0 @@ |
@@ -159,2 +159,7 @@ var common = require('../common'); | ||
assert.equal( | ||
common.Select().from('table1').where({ col: common.Query.not_in([ 1, 2, 3 ]) }).build(), | ||
"SELECT * FROM `table1` WHERE `col` NOT IN (1, 2, 3)" | ||
); | ||
assert.equal( | ||
common.Select().from('table1').where({ __sql: [["LOWER(`stuff`) LIKE 'peaches'"]] }).build(), | ||
@@ -161,0 +166,0 @@ "SELECT * FROM `table1` WHERE LOWER(`stuff`) LIKE 'peaches'" |
52387
1735
20