mirror of
https://github.com/knex/knex.git
synced 2025-12-26 14:38:38 +00:00
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:
parent
4046295531
commit
fc0f9feaaa
@ -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() {
|
||||
|
||||
@ -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: []
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user