Added sqlite3 dialect version of whereRaw/andWhereRaw

* SQLite uses integers, not booleans
* whereIn/whereNotIn with empty array uses a boolean
* Closes #477
This commit is contained in:
Rune Halvorsen 2014-10-21 00:41:33 +02:00 committed by Ben Drucker
parent 4046295531
commit fc0f9feaaa
2 changed files with 25 additions and 0 deletions

View File

@ -7,6 +7,7 @@ module.exports = function(client) {
var _ = require('lodash');
var inherits = require('inherits');
var Raw = require('../../raw');
var QueryBuilder = require('../../query/builder');
var QueryCompiler = require('../../query/compiler');
@ -18,6 +19,21 @@ function QueryBuilder_SQLite3() {
}
inherits(QueryBuilder_SQLite3, QueryBuilder);
// Adds a raw `where` clause to the query.
QueryBuilder_SQLite3.prototype.whereRaw =
QueryBuilder_SQLite3.prototype.andWhereRaw = function(sql, bindings) {
// sqlite uses ints for bools, so cast true/false to 1/0
if (typeof sql === 'boolean') { sql = Number(sql); }
var raw = (sql instanceof Raw ? sql : new Raw(sql, bindings));
this._statements.push({
grouping: 'where',
type: 'whereRaw',
value: raw,
bool: this._bool()
});
return this;
};
// Query Compiler
// -------
function QueryCompiler_SQLite3() {

View File

@ -129,6 +129,7 @@ module.exports = function(qb, clientName, aliasName) {
it('where bool', function() {
testquery(qb().select('*').from('users').where(true), {
mysql: 'select * from `users` where true',
sqlite3: 'select * from "users" where 1',
default: 'select * from "users" where true'
});
});
@ -347,6 +348,10 @@ module.exports = function(qb, clientName, aliasName) {
sql: 'select * from `users` where false',
bindings: []
},
sqlite3: {
sql: 'select * from "users" where 0',
bindings: []
},
default: {
sql: 'select * from "users" where false',
bindings: []
@ -360,6 +365,10 @@ module.exports = function(qb, clientName, aliasName) {
sql: 'select * from `users` where true',
bindings: []
},
sqlite3: {
sql: 'select * from "users" where 1',
bindings: []
},
default: {
sql: 'select * from "users" where true',
bindings: []