Comparing version 0.23.0 to 0.24.0
@@ -21,17 +21,17 @@ 'use strict'; | ||
Mysql.prototype.visitParameter = function(parameter) { | ||
this.params.push(parameter.value()); | ||
return "?"; | ||
/* jshint unused: false */ | ||
Mysql.prototype._getParameterPlaceholder = function(index, value) { | ||
return '?'; | ||
}; | ||
Mysql.prototype.visitCreate = function(create) { | ||
var result = Mysql.super_.prototype.visitCreate.call(this, create); | ||
var engine = this._queryNode.table._initialConfig.engine; | ||
var result = Mysql.super_.prototype.visitCreate.call(this, create); | ||
var engine = this._queryNode.table._initialConfig.engine; | ||
var charset = this._queryNode.table._initialConfig.charset; | ||
if (!!engine) { | ||
if ( !! engine) { | ||
result.push('ENGINE=' + engine); | ||
} | ||
if (!!charset) { | ||
if ( !! charset) { | ||
result.push('DEFAULT CHARSET=' + charset); | ||
@@ -43,7 +43,2 @@ } | ||
/*jshint unused: false */ | ||
Mysql.prototype.visitDefault = function(parameter) { | ||
return "DEFAULT"; | ||
}; | ||
Mysql.prototype.visitRenameColumn = function(renameColumn) { | ||
@@ -53,3 +48,3 @@ var dataType = renameColumn.nodes[1].dataType || renameColumn.nodes[0].dataType; | ||
' (CHANGE COLUMN statements require a dataType)'); | ||
return ['CHANGE COLUMN ' + this.visit(renameColumn.nodes[0]) + ' ' + this.visit(renameColumn.nodes[1])+' '+dataType]; | ||
return ['CHANGE COLUMN ' + this.visit(renameColumn.nodes[0]) + ' ' + this.visit(renameColumn.nodes[1]) + ' ' + dataType]; | ||
}; | ||
@@ -56,0 +51,0 @@ |
'use strict'; | ||
var _ = require('lodash'); | ||
var assert = require('assert'); | ||
var From = require(__dirname + '/../node/from'); | ||
var Select = require(__dirname + '/../node/select'); | ||
var Table = require(__dirname + '/../table'); | ||
var From = require('../node/from'); | ||
var Select = require('../node/select'); | ||
var Table = require('../table'); | ||
var Postgres = function() { | ||
@@ -16,2 +18,45 @@ this.output = []; | ||
Postgres.prototype._getParameterText = function(index, value) { | ||
if (this._disableParameterPlaceholders) { | ||
// do not use placeholder | ||
return this._getParameterValue(value); | ||
} else { | ||
// use placeholder | ||
return this._getParameterPlaceholder(index, value); | ||
} | ||
}; | ||
Postgres.prototype._getParameterValue = function(value) { | ||
// handle primitives | ||
if (null === value) { | ||
value = 'NULL'; | ||
} else if ('boolean' === typeof value) { | ||
value = value ? 'TRUE' : 'FALSE'; | ||
} else if ('number' === typeof value) { | ||
// number is just number | ||
value = value; | ||
} else if ('string' === typeof value) { | ||
// string uses single quote | ||
value = this.quote(value, "'"); | ||
} else if ('object' === typeof value) { | ||
if (_.isArray(value)) { | ||
// convert each element of the array | ||
value = _.map(value, this._getParameterValue, this); | ||
value = '(' + value.join(', ') + ')'; | ||
} else { | ||
// rich object represent with string | ||
value = this._getParameterValue(value.toString()); | ||
} | ||
} else { | ||
throw new Error('Unable to use ' + value + ' in query'); | ||
} | ||
// value has been converted at this point | ||
return value; | ||
}; | ||
Postgres.prototype._getParameterPlaceholder = function(index, value) { | ||
return '$' + index; | ||
}; | ||
Postgres.prototype.getQuery = function(queryNode) { | ||
@@ -23,5 +68,27 @@ // passed in a table, not a query | ||
this.output = this.visit(queryNode); | ||
return { text: this.output.join(' '), values: this.params }; | ||
// create the query object | ||
var query = { text: this.output.join(' '), values: this.params }; | ||
// reset the internal state of this builder | ||
this.output = []; | ||
this.params = []; | ||
return query; | ||
}; | ||
Postgres.prototype.getString = function(queryNode) { | ||
// switch off parameter placeholders | ||
var previousFlagStatus = this._disableParameterPlaceholders; | ||
this._disableParameterPlaceholders = true; | ||
var query; | ||
try { | ||
// use the same code path for query building | ||
query = this.getQuery(queryNode); | ||
} finally { | ||
// always restore the flag afterwards | ||
this._disableParameterPlaceholders = previousFlagStatus; | ||
} | ||
return query.text; | ||
}; | ||
@@ -77,4 +144,11 @@ Postgres.prototype.visit = function(node) { | ||
Postgres.prototype._quoteCharacter = '"'; | ||
Postgres.prototype.quote = function(word) { | ||
var q = this._quoteCharacter; | ||
Postgres.prototype.quote = function(word, quoteCharacter) { | ||
var q; | ||
if (quoteCharacter) { | ||
// use the specified quote character if given | ||
q = quoteCharacter; | ||
} else { | ||
q = this._quoteCharacter; | ||
} | ||
return q + word.replace(new RegExp(q,'g'),q+q) + q; | ||
@@ -323,5 +397,18 @@ }; | ||
Postgres.prototype.visitSubquery = function(queryNode) { | ||
// create another query builder of the current class to build the subquery | ||
var subQuery = new this._myClass(); | ||
// let the subquery modify this instance's params array | ||
subQuery.params = this.params; | ||
subQuery.visitQuery(queryNode); | ||
// pass on the disable parameter placeholder flag | ||
var previousFlagStatus = subQuery._disableParameterPlaceholders; | ||
subQuery._disableParameterPlaceholders = this._disableParameterPlaceholders; | ||
try { | ||
subQuery.visitQuery(queryNode); | ||
} finally { | ||
// restore the flag | ||
subQuery._disableParameterPlaceholders = previousFlagStatus; | ||
} | ||
var alias = queryNode.alias; | ||
@@ -405,10 +492,10 @@ return '(' + subQuery.output.join(' ') + ')' + (alias ? ' ' + alias : ''); | ||
Postgres.prototype.visitParameter = function(parameter) { | ||
this.params.push(parameter.value()); | ||
return "$"+this.params.length; | ||
// save the value into the parameters array | ||
var value = parameter.value(); | ||
this.params.push(value); | ||
return [this._getParameterText(this.params.length, value)]; | ||
}; | ||
Postgres.prototype.visitDefault = function(parameter) { | ||
var params = this.params; | ||
this.params.push('DEFAULT'); | ||
return "$"+params.length; | ||
return ['DEFAULT']; | ||
}; | ||
@@ -415,0 +502,0 @@ |
'use strict'; | ||
var _ = require('lodash'); | ||
var sliced = require('sliced'); | ||
var FunctionCall = require(__dirname + '/node/functionCall'); | ||
var functions = require(__dirname + '/functions'); | ||
var Query = require(__dirname + '/node/query'); | ||
var Table = require(__dirname + '/table'); | ||
var _ = require('lodash'); | ||
var FunctionCall = require('./node/functionCall'); | ||
var functions = require('./functions'); | ||
var getDialect = require('./dialect'); | ||
var Query = require('./node/query'); | ||
var sliced = require('sliced'); | ||
var Table = require('./table'); | ||
@@ -50,15 +51,3 @@ // default dialect is postgres | ||
Sql.prototype.setDialect = function(dialect) { | ||
switch(dialect.toLowerCase()) { | ||
case 'postgres': | ||
this.dialect = require(__dirname + '/dialect/postgres'); | ||
break; | ||
case 'mysql': | ||
this.dialect = require(__dirname + '/dialect/mysql'); | ||
break; | ||
case 'sqlite': | ||
this.dialect = require(__dirname + '/dialect/sqlite'); | ||
break; | ||
default: | ||
throw new Error(dialect + ' is unsupported'); | ||
} | ||
this.dialect = getDialect(dialect); | ||
return this; | ||
@@ -72,5 +61,5 @@ }; | ||
module.exports = new Sql('postgres'); | ||
module.exports = new Sql(DEFAULT_DIALECT); | ||
module.exports.create = create; | ||
module.exports.Sql = Sql; | ||
module.exports.Table = Table; |
'use strict'; | ||
var _ = require('lodash'); | ||
var Node = require(__dirname); | ||
var ParameterNode = require(__dirname + '/parameter'); | ||
var _ = require('lodash'); | ||
var Node = require(__dirname); | ||
var ParameterNode = require(__dirname + '/parameter'); | ||
var valueExpressionMixin = require(__dirname + '/valueExpression'); | ||
@@ -7,0 +7,0 @@ |
'use strict'; | ||
var util = require('util'); | ||
var assert = require('assert'); | ||
var _ = require('lodash'); | ||
var assert = require('assert'); | ||
var getDialect = require('../dialect'); | ||
var util = require('util'); | ||
@@ -21,13 +23,32 @@ /* jshint unused: false */ | ||
Node.prototype.toQuery = function() { | ||
var sql = this.sql || (this.table && this.table.sql); | ||
// Before the change that introduced parallel dialects, every node could be turned | ||
// into a query. The parallel dialects change made it impossible to change some nodes | ||
// into a query because not all nodes are constructed with the sql instance. | ||
var determineDialect = function(query, dialect) { | ||
var sql = query.sql || (query.table && query.table.sql); | ||
var Dialect; | ||
if (sql && sql.dialect) | ||
if (dialect) { | ||
// dialect is specified | ||
Dialect = getDialect(dialect); | ||
} else if (sql && sql.dialect) { | ||
// dialect is not specified, use the dialect from the sql instance | ||
Dialect = sql.dialect; | ||
else { | ||
throw new Error("sql dialect not set properly"); | ||
} else { | ||
// dialect is not specified, use the default dialect | ||
Dialect = require('../').dialect; | ||
} | ||
return Dialect; | ||
}; | ||
Node.prototype.toQuery = function(dialect) { | ||
var Dialect = determineDialect(this, dialect); | ||
return new Dialect().getQuery(this); | ||
}; | ||
Node.prototype.toString = function(dialect) { | ||
var Dialect = determineDialect(this, dialect); | ||
return new Dialect().getString(this); | ||
}; | ||
Node.prototype.addAll = function(nodes) { | ||
@@ -34,0 +55,0 @@ for(var i = 0, len = nodes.length; i < len; i++) { |
@@ -19,12 +19,12 @@ 'use strict'; | ||
var ValueExpressionMixin = module.exports = function() { | ||
var BinaryNode = require(__dirname + '/binary'); | ||
var UnaryNode = require(__dirname + '/unary'); | ||
var BinaryNode = require(__dirname + '/binary'); | ||
var TernaryNode = require(__dirname + '/ternary'); | ||
var UnaryNode = require(__dirname + '/unary'); | ||
var binaryMethod = function(operator) { | ||
var unaryMethod = function(operator) { | ||
/*jshint unused: false */ | ||
return function(val) { | ||
return new BinaryNode({ | ||
return new UnaryNode({ | ||
left: this.toNode(), | ||
operator: operator, | ||
right: processParams(val) | ||
operator: operator | ||
}); | ||
@@ -34,8 +34,8 @@ }; | ||
var unaryMethod = function(operator) { | ||
/*jshint unused: false */ | ||
var binaryMethod = function(operator) { | ||
return function(val) { | ||
return new UnaryNode({ | ||
return new BinaryNode({ | ||
left: this.toNode(), | ||
operator: operator | ||
operator: operator, | ||
right: processParams(val) | ||
}); | ||
@@ -49,6 +49,6 @@ }; | ||
left: this.toNode(), | ||
operator: operator, | ||
middle: processParams(middle), | ||
operator: operator, | ||
right: processParams(right), | ||
separator: separator | ||
separator: separator, | ||
right: processParams(right) | ||
}); | ||
@@ -59,25 +59,27 @@ }; | ||
return { | ||
isNull : unaryMethod('IS NULL'), | ||
isNotNull: unaryMethod('IS NOT NULL'), | ||
or : binaryMethod('OR'), | ||
and : binaryMethod('AND'), | ||
equals : binaryMethod('='), | ||
equal : binaryMethod('='), | ||
notEquals: binaryMethod('<>'), | ||
notEqual : binaryMethod('<>'), | ||
gt : binaryMethod('>'), | ||
gte : binaryMethod('>='), | ||
lt : binaryMethod('<'), | ||
lte : binaryMethod('<='), | ||
plus : binaryMethod('+'), | ||
minus : binaryMethod('-'), | ||
multiply : binaryMethod('*'), | ||
divide : binaryMethod('/'), | ||
modulo : binaryMethod('%'), | ||
like : binaryMethod('LIKE'), | ||
notLike : binaryMethod('NOT LIKE'), | ||
in : binaryMethod('IN'), | ||
notIn : binaryMethod('NOT IN'), | ||
between : ternaryMethod('BETWEEN', 'AND') | ||
isNull : unaryMethod('IS NULL'), | ||
isNotNull : unaryMethod('IS NOT NULL'), | ||
or : binaryMethod('OR'), | ||
and : binaryMethod('AND'), | ||
equals : binaryMethod('='), | ||
equal : binaryMethod('='), | ||
notEquals : binaryMethod('<>'), | ||
notEqual : binaryMethod('<>'), | ||
gt : binaryMethod('>'), | ||
gte : binaryMethod('>='), | ||
lt : binaryMethod('<'), | ||
lte : binaryMethod('<='), | ||
plus : binaryMethod('+'), | ||
minus : binaryMethod('-'), | ||
multiply : binaryMethod('*'), | ||
divide : binaryMethod('/'), | ||
modulo : binaryMethod('%'), | ||
leftShift : binaryMethod('<<'), | ||
rightShift : binaryMethod('>>'), | ||
like : binaryMethod('LIKE'), | ||
notLike : binaryMethod('NOT LIKE'), | ||
in : binaryMethod('IN'), | ||
notIn : binaryMethod('NOT IN'), | ||
between : ternaryMethod('BETWEEN', 'AND') | ||
}; | ||
}; |
@@ -5,3 +5,3 @@ { | ||
"description": "sql builder", | ||
"version": "0.23.0", | ||
"version": "0.24.0", | ||
"homepage": "https://github.com/brianc/node-sql", | ||
@@ -8,0 +8,0 @@ "repository": { |
@@ -28,4 +28,6 @@ /* global test */ | ||
assert.equal(Foo.baz.multiply(1).operator, '*'); | ||
assert.equal(Foo.baz.leftShift(1).operator, '<<'); | ||
assert.equal(Foo.baz.rightShift(1).operator, '>>'); | ||
assert.equal(Foo.baz.divide(1).operator, '/'); | ||
assert.equal(Foo.baz.modulo(1).operator, '%'); | ||
}); |
@@ -0,3 +1,5 @@ | ||
/* global test */ | ||
'use strict'; | ||
var assert = require('assert'); | ||
var Harness = require('./support'); | ||
@@ -7,6 +9,15 @@ var post = Harness.definePostTable(); | ||
Harness.test({ | ||
query : post.select(post.count()), | ||
pg : 'SELECT COUNT("post".*) AS "post_count" FROM "post"', | ||
sqlite: 'SELECT COUNT("post".*) AS "post_count" FROM "post"', | ||
mysql : 'SELECT COUNT(`post`.*) AS `post_count` FROM `post`', | ||
query: post.select(post.count()), | ||
pg: { | ||
text : 'SELECT COUNT("post".*) AS "post_count" FROM "post"', | ||
string: 'SELECT COUNT("post".*) AS "post_count" FROM "post"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT COUNT("post".*) AS "post_count" FROM "post"', | ||
string: 'SELECT COUNT("post".*) AS "post_count" FROM "post"' | ||
}, | ||
mysql: { | ||
text : 'SELECT COUNT(`post`.*) AS `post_count` FROM `post`', | ||
string: 'SELECT COUNT(`post`.*) AS `post_count` FROM `post`' | ||
}, | ||
params: [] | ||
@@ -16,6 +27,15 @@ }); | ||
Harness.test({ | ||
query : post.select(post.count('post_count')), | ||
pg : 'SELECT COUNT("post".*) AS "post_count" FROM "post"', | ||
sqlite: 'SELECT COUNT("post".*) AS "post_count" FROM "post"', | ||
msyql : 'SELECT COUNT(`post`.*) AS `post_count` FROM `post`', | ||
query: post.select(post.count('post_count')), | ||
pg: { | ||
text : 'SELECT COUNT("post".*) AS "post_count" FROM "post"', | ||
string: 'SELECT COUNT("post".*) AS "post_count" FROM "post"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT COUNT("post".*) AS "post_count" FROM "post"', | ||
string: 'SELECT COUNT("post".*) AS "post_count" FROM "post"' | ||
}, | ||
msyql: { | ||
text : 'SELECT COUNT(`post`.*) AS `post_count` FROM `post`', | ||
string: 'SELECT COUNT(`post`.*) AS `post_count` FROM `post`' | ||
}, | ||
params: [] | ||
@@ -25,6 +45,15 @@ }); | ||
Harness.test({ | ||
query : post.select(post.count().as('post_amount')), | ||
pg : 'SELECT COUNT("post".*) AS "post_amount" FROM "post"', | ||
sqlite: 'SELECT COUNT("post".*) AS "post_amount" FROM "post"', | ||
mysql : 'SELECT COUNT(`post`.*) AS `post_amount` FROM `post`', | ||
query: post.select(post.count().as('post_amount')), | ||
pg: { | ||
text : 'SELECT COUNT("post".*) AS "post_amount" FROM "post"', | ||
string: 'SELECT COUNT("post".*) AS "post_amount" FROM "post"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT COUNT("post".*) AS "post_amount" FROM "post"', | ||
string: 'SELECT COUNT("post".*) AS "post_amount" FROM "post"' | ||
}, | ||
mysql: { | ||
text : 'SELECT COUNT(`post`.*) AS `post_amount` FROM `post`', | ||
string: 'SELECT COUNT(`post`.*) AS `post_amount` FROM `post`' | ||
}, | ||
params: [] | ||
@@ -34,6 +63,15 @@ }); | ||
Harness.test({ | ||
query : post.select(post.content.count()), | ||
pg : 'SELECT COUNT("post"."content") AS "content_count" FROM "post"', | ||
sqlite: 'SELECT COUNT("post"."content") AS "content_count" FROM "post"', | ||
mysql : 'SELECT COUNT(`post`.`content`) AS `content_count` FROM `post`', | ||
query: post.select(post.content.count()), | ||
pg: { | ||
text : 'SELECT COUNT("post"."content") AS "content_count" FROM "post"', | ||
string: 'SELECT COUNT("post"."content") AS "content_count" FROM "post"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT COUNT("post"."content") AS "content_count" FROM "post"', | ||
string: 'SELECT COUNT("post"."content") AS "content_count" FROM "post"' | ||
}, | ||
mysql: { | ||
text : 'SELECT COUNT(`post`.`content`) AS `content_count` FROM `post`', | ||
string: 'SELECT COUNT(`post`.`content`) AS `content_count` FROM `post`' | ||
}, | ||
params: [] | ||
@@ -43,6 +81,15 @@ }); | ||
Harness.test({ | ||
query : post.select(post.content.count('content_count')), | ||
pg : 'SELECT COUNT("post"."content") AS "content_count" FROM "post"', | ||
sqlite: 'SELECT COUNT("post"."content") AS "content_count" FROM "post"', | ||
mysql : 'SELECT COUNT(`post`.`content`) AS `content_count` FROM `post`', | ||
query: post.select(post.content.count('content_count')), | ||
pg: { | ||
text : 'SELECT COUNT("post"."content") AS "content_count" FROM "post"', | ||
string: 'SELECT COUNT("post"."content") AS "content_count" FROM "post"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT COUNT("post"."content") AS "content_count" FROM "post"', | ||
string: 'SELECT COUNT("post"."content") AS "content_count" FROM "post"' | ||
}, | ||
mysql: { | ||
text : 'SELECT COUNT(`post`.`content`) AS `content_count` FROM `post`', | ||
string: 'SELECT COUNT(`post`.`content`) AS `content_count` FROM `post`' | ||
}, | ||
params: [] | ||
@@ -52,6 +99,15 @@ }); | ||
Harness.test({ | ||
query : post.select(post.content.count().as('content_count')), | ||
pg : 'SELECT COUNT("post"."content") AS "content_count" FROM "post"', | ||
sqlite: 'SELECT COUNT("post"."content") AS "content_count" FROM "post"', | ||
mysql : 'SELECT COUNT(`post`.`content`) AS `content_count` FROM `post`', | ||
query: post.select(post.content.count().as('content_count')), | ||
pg: { | ||
text : 'SELECT COUNT("post"."content") AS "content_count" FROM "post"', | ||
string: 'SELECT COUNT("post"."content") AS "content_count" FROM "post"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT COUNT("post"."content") AS "content_count" FROM "post"', | ||
string: 'SELECT COUNT("post"."content") AS "content_count" FROM "post"' | ||
}, | ||
mysql: { | ||
text : 'SELECT COUNT(`post`.`content`) AS `content_count` FROM `post`', | ||
string: 'SELECT COUNT(`post`.`content`) AS `content_count` FROM `post`' | ||
}, | ||
params: [] | ||
@@ -61,6 +117,15 @@ }); | ||
Harness.test({ | ||
query : post.select(post.id.min()), | ||
pg : 'SELECT MIN("post"."id") AS "id_min" FROM "post"', | ||
sqlite: 'SELECT MIN("post"."id") AS "id_min" FROM "post"', | ||
mysql : 'SELECT MIN(`post`.`id`) AS `id_min` FROM `post`', | ||
query: post.select(post.id.min()), | ||
pg: { | ||
text : 'SELECT MIN("post"."id") AS "id_min" FROM "post"', | ||
string: 'SELECT MIN("post"."id") AS "id_min" FROM "post"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT MIN("post"."id") AS "id_min" FROM "post"', | ||
string: 'SELECT MIN("post"."id") AS "id_min" FROM "post"' | ||
}, | ||
mysql: { | ||
text : 'SELECT MIN(`post`.`id`) AS `id_min` FROM `post`', | ||
string: 'SELECT MIN(`post`.`id`) AS `id_min` FROM `post`' | ||
}, | ||
params: [] | ||
@@ -70,6 +135,15 @@ }); | ||
Harness.test({ | ||
query : post.select(post.id.min().as('min_id')), | ||
pg : 'SELECT MIN("post"."id") AS "min_id" FROM "post"', | ||
sqlite: 'SELECT MIN("post"."id") AS "min_id" FROM "post"', | ||
mysql : 'SELECT MIN(`post`.`id`) AS `min_id` FROM `post`', | ||
query: post.select(post.id.min().as('min_id')), | ||
pg: { | ||
text : 'SELECT MIN("post"."id") AS "min_id" FROM "post"', | ||
string: 'SELECT MIN("post"."id") AS "min_id" FROM "post"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT MIN("post"."id") AS "min_id" FROM "post"', | ||
string: 'SELECT MIN("post"."id") AS "min_id" FROM "post"' | ||
}, | ||
mysql: { | ||
text : 'SELECT MIN(`post`.`id`) AS `min_id` FROM `post`', | ||
string: 'SELECT MIN(`post`.`id`) AS `min_id` FROM `post`' | ||
}, | ||
params: [] | ||
@@ -79,6 +153,15 @@ }); | ||
Harness.test({ | ||
query : post.select(post.id.min('min_id')), | ||
pg : 'SELECT MIN("post"."id") AS "min_id" FROM "post"', | ||
sqlite: 'SELECT MIN("post"."id") AS "min_id" FROM "post"', | ||
mysql : 'SELECT MIN(`post`.`id`) AS `min_id` FROM `post`', | ||
query: post.select(post.id.min('min_id')), | ||
pg: { | ||
text : 'SELECT MIN("post"."id") AS "min_id" FROM "post"', | ||
string: 'SELECT MIN("post"."id") AS "min_id" FROM "post"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT MIN("post"."id") AS "min_id" FROM "post"', | ||
string: 'SELECT MIN("post"."id") AS "min_id" FROM "post"' | ||
}, | ||
mysql: { | ||
text : 'SELECT MIN(`post`.`id`) AS `min_id` FROM `post`', | ||
string: 'SELECT MIN(`post`.`id`) AS `min_id` FROM `post`' | ||
}, | ||
params: [] | ||
@@ -88,6 +171,15 @@ }); | ||
Harness.test({ | ||
query : post.select(post.id.max()), | ||
pg : 'SELECT MAX("post"."id") AS "id_max" FROM "post"', | ||
sqlite: 'SELECT MAX("post"."id") AS "id_max" FROM "post"', | ||
mysql : 'SELECT MAX(`post`.`id`) AS `id_max` FROM `post`', | ||
query: post.select(post.id.max()), | ||
pg: { | ||
text : 'SELECT MAX("post"."id") AS "id_max" FROM "post"', | ||
string: 'SELECT MAX("post"."id") AS "id_max" FROM "post"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT MAX("post"."id") AS "id_max" FROM "post"', | ||
string: 'SELECT MAX("post"."id") AS "id_max" FROM "post"' | ||
}, | ||
mysql: { | ||
text : 'SELECT MAX(`post`.`id`) AS `id_max` FROM `post`', | ||
string: 'SELECT MAX(`post`.`id`) AS `id_max` FROM `post`' | ||
}, | ||
params: [] | ||
@@ -97,6 +189,15 @@ }); | ||
Harness.test({ | ||
query : post.select(post.id.max().as('max_id')), | ||
pg : 'SELECT MAX("post"."id") AS "max_id" FROM "post"', | ||
sqlite: 'SELECT MAX("post"."id") AS "max_id" FROM "post"', | ||
mysql : 'SELECT MAX(`post`.`id`) AS `max_id` FROM `post`', | ||
query: post.select(post.id.max().as('max_id')), | ||
pg: { | ||
text : 'SELECT MAX("post"."id") AS "max_id" FROM "post"', | ||
string: 'SELECT MAX("post"."id") AS "max_id" FROM "post"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT MAX("post"."id") AS "max_id" FROM "post"', | ||
string: 'SELECT MAX("post"."id") AS "max_id" FROM "post"' | ||
}, | ||
mysql: { | ||
text : 'SELECT MAX(`post`.`id`) AS `max_id` FROM `post`', | ||
string: 'SELECT MAX(`post`.`id`) AS `max_id` FROM `post`' | ||
}, | ||
params: [] | ||
@@ -106,50 +207,112 @@ }); | ||
Harness.test({ | ||
query : post.select(post.id.max('max_id')), | ||
pg : 'SELECT MAX("post"."id") AS "max_id" FROM "post"', | ||
sqlite: 'SELECT MAX("post"."id") AS "max_id" FROM "post"', | ||
mysql : 'SELECT MAX(`post`.`id`) AS `max_id` FROM `post`', | ||
query: post.select(post.id.max('max_id')), | ||
pg: { | ||
text : 'SELECT MAX("post"."id") AS "max_id" FROM "post"', | ||
string: 'SELECT MAX("post"."id") AS "max_id" FROM "post"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT MAX("post"."id") AS "max_id" FROM "post"', | ||
string: 'SELECT MAX("post"."id") AS "max_id" FROM "post"' | ||
}, | ||
mysql: { | ||
text : 'SELECT MAX(`post`.`id`) AS `max_id` FROM `post`', | ||
string: 'SELECT MAX(`post`.`id`) AS `max_id` FROM `post`' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : post.select(post.id.sum()), | ||
pg : 'SELECT SUM("post"."id") AS "id_sum" FROM "post"', | ||
sqllite : 'SELECT SUM("post"."id") AS "id_sum" FROM "post"', | ||
mysql : 'SELECT SUM(`post`.`id`) AS `id_sum` FROM `post`', | ||
Harness.test({ | ||
query: post.select(post.id.sum()), | ||
pg: { | ||
text : 'SELECT SUM("post"."id") AS "id_sum" FROM "post"', | ||
string: 'SELECT SUM("post"."id") AS "id_sum" FROM "post"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT SUM("post"."id") AS "id_sum" FROM "post"', | ||
string: 'SELECT SUM("post"."id") AS "id_sum" FROM "post"' | ||
}, | ||
mysql: { | ||
text : 'SELECT SUM(`post`.`id`) AS `id_sum` FROM `post`', | ||
string: 'SELECT SUM(`post`.`id`) AS `id_sum` FROM `post`' | ||
}, | ||
}); | ||
Harness.test({ | ||
query : post.select(post.id.sum().as('sum_id')), | ||
pg : 'SELECT SUM("post"."id") AS "sum_id" FROM "post"', | ||
sqllite : 'SELECT SUM("post"."id") AS "sum_id" FROM "post"', | ||
mysql : 'SELECT SUM(`post`.`id`) AS `sum_id` FROM `post`', | ||
Harness.test({ | ||
query: post.select(post.id.sum().as('sum_id')), | ||
pg: { | ||
text : 'SELECT SUM("post"."id") AS "sum_id" FROM "post"', | ||
string: 'SELECT SUM("post"."id") AS "sum_id" FROM "post"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT SUM("post"."id") AS "sum_id" FROM "post"', | ||
string: 'SELECT SUM("post"."id") AS "sum_id" FROM "post"' | ||
}, | ||
mysql: { | ||
text : 'SELECT SUM(`post`.`id`) AS `sum_id` FROM `post`', | ||
string: 'SELECT SUM(`post`.`id`) AS `sum_id` FROM `post`' | ||
}, | ||
}); | ||
Harness.test({ | ||
query : post.select(post.id.sum('sum_id')), | ||
pg : 'SELECT SUM("post"."id") AS "sum_id" FROM "post"', | ||
sqllite : 'SELECT SUM("post"."id") AS "sum_id" FROM "post"', | ||
mysql : 'SELECT SUM(`post`.`id`) AS `sum_id` FROM `post`', | ||
Harness.test({ | ||
query: post.select(post.id.sum('sum_id')), | ||
pg: { | ||
text : 'SELECT SUM("post"."id") AS "sum_id" FROM "post"', | ||
string: 'SELECT SUM("post"."id") AS "sum_id" FROM "post"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT SUM("post"."id") AS "sum_id" FROM "post"', | ||
string: 'SELECT SUM("post"."id") AS "sum_id" FROM "post"' | ||
}, | ||
mysql: { | ||
text : 'SELECT SUM(`post`.`id`) AS `sum_id` FROM `post`', | ||
string: 'SELECT SUM(`post`.`id`) AS `sum_id` FROM `post`' | ||
}, | ||
}); | ||
Harness.test({ | ||
query : post.select(post.id.avg()), | ||
pg : 'SELECT AVG("post"."id") AS "id_avg" FROM "post"', | ||
sqllite : 'SELECT AVG("post"."id") AS "id_avg" FROM "post"', | ||
mysql : 'SELECT AVG(`post`.`id`) AS `id_avg` FROM `post`', | ||
Harness.test({ | ||
query: post.select(post.id.avg()), | ||
pg: { | ||
text : 'SELECT AVG("post"."id") AS "id_avg" FROM "post"', | ||
string: 'SELECT AVG("post"."id") AS "id_avg" FROM "post"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT AVG("post"."id") AS "id_avg" FROM "post"', | ||
string: 'SELECT AVG("post"."id") AS "id_avg" FROM "post"' | ||
}, | ||
mysql: { | ||
text : 'SELECT AVG(`post`.`id`) AS `id_avg` FROM `post`', | ||
string: 'SELECT AVG(`post`.`id`) AS `id_avg` FROM `post`' | ||
}, | ||
}); | ||
Harness.test({ | ||
query : post.select(post.id.avg().as('avg_id')), | ||
pg : 'SELECT AVG("post"."id") AS "avg_id" FROM "post"', | ||
sqllite : 'SELECT AVG("post"."id") AS "avg_id" FROM "post"', | ||
mysql : 'SELECT AVG(`post`.`id`) AS `avg_id` FROM `post`', | ||
Harness.test({ | ||
query: post.select(post.id.avg().as('avg_id')), | ||
pg: { | ||
text : 'SELECT AVG("post"."id") AS "avg_id" FROM "post"', | ||
string: 'SELECT AVG("post"."id") AS "avg_id" FROM "post"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT AVG("post"."id") AS "avg_id" FROM "post"', | ||
string: 'SELECT AVG("post"."id") AS "avg_id" FROM "post"' | ||
}, | ||
mysql: { | ||
text : 'SELECT AVG(`post`.`id`) AS `avg_id` FROM `post`', | ||
string: 'SELECT AVG(`post`.`id`) AS `avg_id` FROM `post`' | ||
}, | ||
}); | ||
Harness.test({ | ||
query : post.select(post.id.avg('avg_id')), | ||
pg : 'SELECT AVG("post"."id") AS "avg_id" FROM "post"', | ||
sqllite : 'SELECT AVG("post"."id") AS "avg_id" FROM "post"', | ||
mysql : 'SELECT AVG(`post`.`id`) AS `avg_id` FROM `post`', | ||
Harness.test({ | ||
query: post.select(post.id.avg('avg_id')), | ||
pg: { | ||
text : 'SELECT AVG("post"."id") AS "avg_id" FROM "post"', | ||
string: 'SELECT AVG("post"."id") AS "avg_id" FROM "post"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT AVG("post"."id") AS "avg_id" FROM "post"', | ||
string: 'SELECT AVG("post"."id") AS "avg_id" FROM "post"' | ||
}, | ||
mysql: { | ||
text : 'SELECT AVG(`post`.`id`) AS `avg_id` FROM `post`', | ||
string: 'SELECT AVG(`post`.`id`) AS `avg_id` FROM `post`' | ||
}, | ||
}); | ||
@@ -9,23 +9,50 @@ 'use strict'; | ||
Harness.test({ | ||
query : customer.select(customer.name.isNull().as('nameIsNull')), | ||
pg : 'SELECT ("customer"."name" IS NULL) AS "nameIsNull" FROM "customer"', | ||
sqlite : 'SELECT ("customer"."name" IS NULL) AS "nameIsNull" FROM "customer"', | ||
mysql : 'SELECT (`customer`.`name` IS NULL) AS `nameIsNull` FROM `customer`', | ||
params : [] | ||
query: customer.select(customer.name.isNull().as('nameIsNull')), | ||
pg: { | ||
text : 'SELECT ("customer"."name" IS NULL) AS "nameIsNull" FROM "customer"', | ||
string: 'SELECT ("customer"."name" IS NULL) AS "nameIsNull" FROM "customer"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT ("customer"."name" IS NULL) AS "nameIsNull" FROM "customer"', | ||
string: 'SELECT ("customer"."name" IS NULL) AS "nameIsNull" FROM "customer"' | ||
}, | ||
mysql: { | ||
text : 'SELECT (`customer`.`name` IS NULL) AS `nameIsNull` FROM `customer`', | ||
string: 'SELECT (`customer`.`name` IS NULL) AS `nameIsNull` FROM `customer`' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : customer.select(customer.name.plus(customer.age).as('nameAndAge')).where(customer.age.gt(10).and(customer.age.lt(20))), | ||
pg : 'SELECT ("customer"."name" + "customer"."age") AS "nameAndAge" FROM "customer" WHERE (("customer"."age" > $1) AND ("customer"."age" < $2))', | ||
sqlite : 'SELECT ("customer"."name" + "customer"."age") AS "nameAndAge" FROM "customer" WHERE (("customer"."age" > $1) AND ("customer"."age" < $2))', | ||
mysql : 'SELECT (`customer`.`name` + `customer`.`age`) AS `nameAndAge` FROM `customer` WHERE ((`customer`.`age` > ?) AND (`customer`.`age` < ?))', | ||
params : [10, 20] | ||
query: customer.select(customer.name.plus(customer.age).as('nameAndAge')).where(customer.age.gt(10).and(customer.age.lt(20))), | ||
pg: { | ||
text : 'SELECT ("customer"."name" + "customer"."age") AS "nameAndAge" FROM "customer" WHERE (("customer"."age" > $1) AND ("customer"."age" < $2))', | ||
string: 'SELECT ("customer"."name" + "customer"."age") AS "nameAndAge" FROM "customer" WHERE (("customer"."age" > 10) AND ("customer"."age" < 20))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT ("customer"."name" + "customer"."age") AS "nameAndAge" FROM "customer" WHERE (("customer"."age" > $1) AND ("customer"."age" < $2))', | ||
string: 'SELECT ("customer"."name" + "customer"."age") AS "nameAndAge" FROM "customer" WHERE (("customer"."age" > 10) AND ("customer"."age" < 20))' | ||
}, | ||
mysql: { | ||
text : 'SELECT (`customer`.`name` + `customer`.`age`) AS `nameAndAge` FROM `customer` WHERE ((`customer`.`age` > ?) AND (`customer`.`age` < ?))', | ||
string: 'SELECT (`customer`.`name` + `customer`.`age`) AS `nameAndAge` FROM `customer` WHERE ((`customer`.`age` > 10) AND (`customer`.`age` < 20))' | ||
}, | ||
params: [10, 20] | ||
}); | ||
Harness.test({ | ||
query : customer.select(customer.age.between(10, 20).as('ageBetween')), | ||
pg : 'SELECT ("customer"."age" BETWEEN $1 AND $2) AS "ageBetween" FROM "customer"', | ||
sqlite : 'SELECT ("customer"."age" BETWEEN $1 AND $2) AS "ageBetween" FROM "customer"', | ||
mysql : 'SELECT (`customer`.`age` BETWEEN ? AND ?) AS `ageBetween` FROM `customer`', | ||
params : [10, 20] | ||
query: customer.select(customer.age.between(10, 20).as('ageBetween')), | ||
pg: { | ||
text : 'SELECT ("customer"."age" BETWEEN $1 AND $2) AS "ageBetween" FROM "customer"', | ||
string: 'SELECT ("customer"."age" BETWEEN 10 AND 20) AS "ageBetween" FROM "customer"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT ("customer"."age" BETWEEN $1 AND $2) AS "ageBetween" FROM "customer"', | ||
string: 'SELECT ("customer"."age" BETWEEN 10 AND 20) AS "ageBetween" FROM "customer"' | ||
}, | ||
mysql: { | ||
text : 'SELECT (`customer`.`age` BETWEEN ? AND ?) AS `ageBetween` FROM `customer`', | ||
string: 'SELECT (`customer`.`age` BETWEEN 10 AND 20) AS `ageBetween` FROM `customer`' | ||
}, | ||
params: [10, 20] | ||
}); |
@@ -8,4 +8,7 @@ 'use strict'; | ||
Harness.test({ | ||
query : post.alter().dropColumn(post.content), | ||
pg : 'ALTER TABLE "post" DROP COLUMN "content"', | ||
query: post.alter().dropColumn(post.content), | ||
pg: { | ||
text : 'ALTER TABLE "post" DROP COLUMN "content"', | ||
string: 'ALTER TABLE "post" DROP COLUMN "content"' | ||
}, | ||
sqlite: { | ||
@@ -15,3 +18,6 @@ text : 'Sqlite cannot drop columns', | ||
}, | ||
mysql : 'ALTER TABLE `post` DROP COLUMN `content`', | ||
mysql: { | ||
text : 'ALTER TABLE `post` DROP COLUMN `content`', | ||
string: 'ALTER TABLE `post` DROP COLUMN `content`' | ||
}, | ||
params: [] | ||
@@ -21,4 +27,7 @@ }); | ||
Harness.test({ | ||
query : post.alter().dropColumn(post.content).dropColumn(post.userId), | ||
pg : 'ALTER TABLE "post" DROP COLUMN "content", DROP COLUMN "userId"', | ||
query: post.alter().dropColumn(post.content).dropColumn(post.userId), | ||
pg: { | ||
text : 'ALTER TABLE "post" DROP COLUMN "content", DROP COLUMN "userId"', | ||
string: 'ALTER TABLE "post" DROP COLUMN "content", DROP COLUMN "userId"' | ||
}, | ||
sqlite: { | ||
@@ -28,3 +37,6 @@ text : 'Sqlite cannot drop columns', | ||
}, | ||
mysql : 'ALTER TABLE `post` DROP COLUMN `content`, DROP COLUMN `userId`', | ||
mysql: { | ||
text : 'ALTER TABLE `post` DROP COLUMN `content`, DROP COLUMN `userId`', | ||
string: 'ALTER TABLE `post` DROP COLUMN `content`, DROP COLUMN `userId`' | ||
}, | ||
params: [] | ||
@@ -34,4 +46,7 @@ }); | ||
Harness.test({ | ||
query : post.alter().dropColumn('content').dropColumn('userId'), | ||
pg : 'ALTER TABLE "post" DROP COLUMN "content", DROP COLUMN "userId"', | ||
query: post.alter().dropColumn('content').dropColumn('userId'), | ||
pg: { | ||
text : 'ALTER TABLE "post" DROP COLUMN "content", DROP COLUMN "userId"', | ||
string: 'ALTER TABLE "post" DROP COLUMN "content", DROP COLUMN "userId"' | ||
}, | ||
sqlite: { | ||
@@ -41,3 +56,6 @@ text : 'Sqlite cannot drop columns', | ||
}, | ||
mysql : 'ALTER TABLE `post` DROP COLUMN `content`, DROP COLUMN `userId`', | ||
mysql: { | ||
text : 'ALTER TABLE `post` DROP COLUMN `content`, DROP COLUMN `userId`', | ||
string: 'ALTER TABLE `post` DROP COLUMN `content`, DROP COLUMN `userId`' | ||
}, | ||
params: [] | ||
@@ -47,6 +65,15 @@ }); | ||
Harness.test({ | ||
query : post.alter().rename('posts'), | ||
pg : 'ALTER TABLE "post" RENAME TO "posts"', | ||
sqlite: 'ALTER TABLE "post" RENAME TO "posts"', | ||
mysql : 'ALTER TABLE `post` RENAME TO `posts`', | ||
query: post.alter().rename('posts'), | ||
pg: { | ||
text : 'ALTER TABLE "post" RENAME TO "posts"', | ||
string: 'ALTER TABLE "post" RENAME TO "posts"' | ||
}, | ||
sqlite: { | ||
text : 'ALTER TABLE "post" RENAME TO "posts"', | ||
string: 'ALTER TABLE "post" RENAME TO "posts"' | ||
}, | ||
mysql: { | ||
text : 'ALTER TABLE `post` RENAME TO `posts`', | ||
string: 'ALTER TABLE `post` RENAME TO `posts`' | ||
}, | ||
params: [] | ||
@@ -58,15 +85,25 @@ }); | ||
columns: [{ | ||
name: 'id', | ||
dataType: 'varchar(100)' | ||
}, { | ||
name: 'userId', | ||
dataType: 'varchar(100)' | ||
}] | ||
name: 'id', | ||
dataType: 'varchar(100)' | ||
}, { | ||
name: 'userId', | ||
dataType: 'varchar(100)' | ||
} | ||
] | ||
}); | ||
Harness.test({ | ||
query : group.alter().addColumn(group.id), | ||
pg : 'ALTER TABLE "group" ADD COLUMN "id" varchar(100)', | ||
sqlite: 'ALTER TABLE "group" ADD COLUMN "id" varchar(100)', | ||
mysql : 'ALTER TABLE `group` ADD COLUMN `id` varchar(100)', | ||
query: group.alter().addColumn(group.id), | ||
pg: { | ||
text : 'ALTER TABLE "group" ADD COLUMN "id" varchar(100)', | ||
string: 'ALTER TABLE "group" ADD COLUMN "id" varchar(100)' | ||
}, | ||
sqlite: { | ||
text : 'ALTER TABLE "group" ADD COLUMN "id" varchar(100)', | ||
string: 'ALTER TABLE "group" ADD COLUMN "id" varchar(100)' | ||
}, | ||
mysql: { | ||
text : 'ALTER TABLE `group` ADD COLUMN `id` varchar(100)', | ||
string: 'ALTER TABLE `group` ADD COLUMN `id` varchar(100)' | ||
}, | ||
params: [] | ||
@@ -76,4 +113,7 @@ }); | ||
Harness.test({ | ||
query : group.alter().addColumn(group.id).addColumn(group.userId), | ||
pg : 'ALTER TABLE "group" ADD COLUMN "id" varchar(100), ADD COLUMN "userId" varchar(100)', | ||
query: group.alter().addColumn(group.id).addColumn(group.userId), | ||
pg: { | ||
text : 'ALTER TABLE "group" ADD COLUMN "id" varchar(100), ADD COLUMN "userId" varchar(100)', | ||
string: 'ALTER TABLE "group" ADD COLUMN "id" varchar(100), ADD COLUMN "userId" varchar(100)' | ||
}, | ||
sqlite: { | ||
@@ -83,3 +123,6 @@ text : 'Sqlite cannot add more than one column at a time', | ||
}, | ||
mysql : 'ALTER TABLE `group` ADD COLUMN `id` varchar(100), ADD COLUMN `userId` varchar(100)', | ||
mysql: { | ||
text : 'ALTER TABLE `group` ADD COLUMN `id` varchar(100), ADD COLUMN `userId` varchar(100)', | ||
string: 'ALTER TABLE `group` ADD COLUMN `id` varchar(100), ADD COLUMN `userId` varchar(100)' | ||
}, | ||
params: [] | ||
@@ -89,4 +132,7 @@ }); | ||
Harness.test({ | ||
query : group.alter().addColumn('id', 'varchar(100)').addColumn('userId', 'varchar(100)'), | ||
pg : 'ALTER TABLE "group" ADD COLUMN "id" varchar(100), ADD COLUMN "userId" varchar(100)', | ||
query: group.alter().addColumn('id', 'varchar(100)').addColumn('userId', 'varchar(100)'), | ||
pg: { | ||
text : 'ALTER TABLE "group" ADD COLUMN "id" varchar(100), ADD COLUMN "userId" varchar(100)', | ||
string: 'ALTER TABLE "group" ADD COLUMN "id" varchar(100), ADD COLUMN "userId" varchar(100)' | ||
}, | ||
sqlite: { | ||
@@ -96,3 +142,6 @@ text : 'Sqlite cannot add more than one column at a time', | ||
}, | ||
mysql : 'ALTER TABLE `group` ADD COLUMN `id` varchar(100), ADD COLUMN `userId` varchar(100)', | ||
mysql: { | ||
text : 'ALTER TABLE `group` ADD COLUMN `id` varchar(100), ADD COLUMN `userId` varchar(100)', | ||
string: 'ALTER TABLE `group` ADD COLUMN `id` varchar(100), ADD COLUMN `userId` varchar(100)' | ||
}, | ||
params: [] | ||
@@ -102,6 +151,9 @@ }); | ||
Harness.test({ | ||
query : group.alter().renameColumn('userId', 'newUserId'), | ||
pg : 'ALTER TABLE "group" RENAME COLUMN "userId" TO "newUserId"', | ||
mysql : { | ||
text: 'Mysql requires data type for renaming a column', | ||
query: group.alter().renameColumn('userId', 'newUserId'), | ||
pg: { | ||
text : 'ALTER TABLE "group" RENAME COLUMN "userId" TO "newUserId"', | ||
string: 'ALTER TABLE "group" RENAME COLUMN "userId" TO "newUserId"' | ||
}, | ||
mysql: { | ||
text : 'Mysql requires data type for renaming a column', | ||
throws: true | ||
@@ -117,4 +169,7 @@ }, | ||
Harness.test({ | ||
query : group.alter().renameColumn(group.userId, 'newUserId'), | ||
pg : 'ALTER TABLE "group" RENAME COLUMN "userId" TO "newUserId"', | ||
query: group.alter().renameColumn(group.userId, 'newUserId'), | ||
pg: { | ||
text : 'ALTER TABLE "group" RENAME COLUMN "userId" TO "newUserId"', | ||
string: 'ALTER TABLE "group" RENAME COLUMN "userId" TO "newUserId"' | ||
}, | ||
sqlite: { | ||
@@ -124,3 +179,6 @@ text : 'Sqlite cannot rename columns', | ||
}, | ||
mysql : 'ALTER TABLE `group` CHANGE COLUMN `userId` `newUserId` varchar(100)', | ||
mysql: { | ||
text : 'ALTER TABLE `group` CHANGE COLUMN `userId` `newUserId` varchar(100)', | ||
string: 'ALTER TABLE `group` CHANGE COLUMN `userId` `newUserId` varchar(100)' | ||
}, | ||
params: [] | ||
@@ -130,4 +188,7 @@ }); | ||
Harness.test({ | ||
query : group.alter().renameColumn('userId', group.id), | ||
pg : 'ALTER TABLE "group" RENAME COLUMN "userId" TO "id"', | ||
query: group.alter().renameColumn('userId', group.id), | ||
pg: { | ||
text : 'ALTER TABLE "group" RENAME COLUMN "userId" TO "id"', | ||
string: 'ALTER TABLE "group" RENAME COLUMN "userId" TO "id"' | ||
}, | ||
sqlite: { | ||
@@ -137,3 +198,6 @@ text : 'Sqlite cannot rename columns', | ||
}, | ||
mysql : 'ALTER TABLE `group` CHANGE COLUMN `userId` `id` varchar(100)', | ||
mysql: { | ||
text : 'ALTER TABLE `group` CHANGE COLUMN `userId` `id` varchar(100)', | ||
string: 'ALTER TABLE `group` CHANGE COLUMN `userId` `id` varchar(100)' | ||
}, | ||
params: [] | ||
@@ -143,13 +207,20 @@ }); | ||
var UserWithSignature = Table.define({ | ||
name: 'UserWithSignature', | ||
name: 'UserWithSignature', | ||
columns: [{ | ||
name: 'Signature', | ||
dataType: "VARCHAR(255) NOT NULL DEFAULT 'Signature'" | ||
}] | ||
name: 'Signature', | ||
dataType: "VARCHAR(255) NOT NULL DEFAULT 'Signature'" | ||
} | ||
] | ||
}); | ||
Harness.test({ | ||
query: UserWithSignature.alter().renameColumn(UserWithSignature.get('Signature'), 'sig'), | ||
pg: 'ALTER TABLE "UserWithSignature" RENAME COLUMN "Signature" TO "sig"', | ||
mysql: 'ALTER TABLE `UserWithSignature` CHANGE COLUMN `Signature` `sig` VARCHAR(255) NOT NULL DEFAULT \'Signature\'', | ||
query: UserWithSignature.alter().renameColumn(UserWithSignature.get('Signature'), 'sig'), | ||
pg: { | ||
text : 'ALTER TABLE "UserWithSignature" RENAME COLUMN "Signature" TO "sig"', | ||
string: 'ALTER TABLE "UserWithSignature" RENAME COLUMN "Signature" TO "sig"' | ||
}, | ||
mysql: { | ||
text : 'ALTER TABLE `UserWithSignature` CHANGE COLUMN `Signature` `sig` VARCHAR(255) NOT NULL DEFAULT \'Signature\'', | ||
string: 'ALTER TABLE `UserWithSignature` CHANGE COLUMN `Signature` `sig` VARCHAR(255) NOT NULL DEFAULT \'Signature\'' | ||
}, | ||
sqlite: { | ||
@@ -156,0 +227,0 @@ text : 'Sqlite cannot rename columns', |
@@ -9,6 +9,15 @@ 'use strict'; | ||
Harness.test({ | ||
query : customer.select(customer.name.plus(customer.age)), | ||
pg : 'SELECT ("customer"."name" + "customer"."age") FROM "customer"', | ||
sqlite: 'SELECT ("customer"."name" + "customer"."age") FROM "customer"', | ||
mysql : 'SELECT (`customer`.`name` + `customer`.`age`) FROM `customer`', | ||
query: customer.select(customer.name.plus(customer.age)), | ||
pg: { | ||
text : 'SELECT ("customer"."name" + "customer"."age") FROM "customer"', | ||
string: 'SELECT ("customer"."name" + "customer"."age") FROM "customer"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT ("customer"."name" + "customer"."age") FROM "customer"', | ||
string: 'SELECT ("customer"."name" + "customer"."age") FROM "customer"' | ||
}, | ||
mysql: { | ||
text : 'SELECT (`customer`.`name` + `customer`.`age`) FROM `customer`', | ||
string: 'SELECT (`customer`.`name` + `customer`.`age`) FROM `customer`' | ||
}, | ||
params: [] | ||
@@ -18,6 +27,15 @@ }); | ||
Harness.test({ | ||
query : post.select(post.content.plus('!')).where(post.userId.in(customer.subQuery().select(customer.id))), | ||
pg : 'SELECT ("post"."content" + $1) FROM "post" WHERE ("post"."userId" IN (SELECT "customer"."id" FROM "customer"))', | ||
sqlite: 'SELECT ("post"."content" + $1) FROM "post" WHERE ("post"."userId" IN (SELECT "customer"."id" FROM "customer"))', | ||
mysql : 'SELECT (`post`.`content` + ?) FROM `post` WHERE (`post`.`userId` IN (SELECT `customer`.`id` FROM `customer`))', | ||
query: post.select(post.content.plus('!')).where(post.userId. in (customer.subQuery().select(customer.id))), | ||
pg: { | ||
text : 'SELECT ("post"."content" + $1) FROM "post" WHERE ("post"."userId" IN (SELECT "customer"."id" FROM "customer"))', | ||
string: 'SELECT ("post"."content" + \'!\') FROM "post" WHERE ("post"."userId" IN (SELECT "customer"."id" FROM "customer"))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT ("post"."content" + $1) FROM "post" WHERE ("post"."userId" IN (SELECT "customer"."id" FROM "customer"))', | ||
string: 'SELECT ("post"."content" + \'!\') FROM "post" WHERE ("post"."userId" IN (SELECT "customer"."id" FROM "customer"))' | ||
}, | ||
mysql: { | ||
text : 'SELECT (`post`.`content` + ?) FROM `post` WHERE (`post`.`userId` IN (SELECT `customer`.`id` FROM `customer`))', | ||
string: 'SELECT (`post`.`content` + \'!\') FROM `post` WHERE (`post`.`userId` IN (SELECT `customer`.`id` FROM `customer`))' | ||
}, | ||
params: ['!'] | ||
@@ -27,7 +45,16 @@ }); | ||
Harness.test({ | ||
query : post.select(post.id.plus(': ').plus(post.content)).where(post.userId.notIn(customer.subQuery().select(customer.id))), | ||
pg : 'SELECT (("post"."id" + $1) + "post"."content") FROM "post" WHERE ("post"."userId" NOT IN (SELECT "customer"."id" FROM "customer"))', | ||
sqlite : 'SELECT (("post"."id" + $1) + "post"."content") FROM "post" WHERE ("post"."userId" NOT IN (SELECT "customer"."id" FROM "customer"))', | ||
mysql : 'SELECT ((`post`.`id` + ?) + `post`.`content`) FROM `post` WHERE (`post`.`userId` NOT IN (SELECT `customer`.`id` FROM `customer`))', | ||
params : [': '] | ||
query: post.select(post.id.plus(': ').plus(post.content)).where(post.userId.notIn(customer.subQuery().select(customer.id))), | ||
pg: { | ||
text : 'SELECT (("post"."id" + $1) + "post"."content") FROM "post" WHERE ("post"."userId" NOT IN (SELECT "customer"."id" FROM "customer"))', | ||
string: 'SELECT (("post"."id" + \': \') + "post"."content") FROM "post" WHERE ("post"."userId" NOT IN (SELECT "customer"."id" FROM "customer"))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT (("post"."id" + $1) + "post"."content") FROM "post" WHERE ("post"."userId" NOT IN (SELECT "customer"."id" FROM "customer"))', | ||
string: 'SELECT (("post"."id" + \': \') + "post"."content") FROM "post" WHERE ("post"."userId" NOT IN (SELECT "customer"."id" FROM "customer"))' | ||
}, | ||
mysql: { | ||
text : 'SELECT ((`post`.`id` + ?) + `post`.`content`) FROM `post` WHERE (`post`.`userId` NOT IN (SELECT `customer`.`id` FROM `customer`))', | ||
string: 'SELECT ((`post`.`id` + \': \') + `post`.`content`) FROM `post` WHERE (`post`.`userId` NOT IN (SELECT `customer`.`id` FROM `customer`))' | ||
}, | ||
params: [': '] | ||
}); |
@@ -9,6 +9,15 @@ 'use strict'; | ||
Harness.test({ | ||
query : user.from(user.join(post).on(user.id.equals(post.userId))).select(user.name, post.content), | ||
pg : 'SELECT "user"."name", "post"."content" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId")', | ||
sqlite: 'SELECT "user"."name", "post"."content" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId")', | ||
mysql : 'SELECT `user`.`name`, `post`.`content` FROM `user` INNER JOIN `post` ON (`user`.`id` = `post`.`userId`)' | ||
query: user.from(user.join(post).on(user.id.equals(post.userId))).select(user.name, post.content), | ||
pg: { | ||
text : 'SELECT "user"."name", "post"."content" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId")', | ||
string: 'SELECT "user"."name", "post"."content" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId")', | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."name", "post"."content" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId")', | ||
string: 'SELECT "user"."name", "post"."content" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId")' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`name`, `post`.`content` FROM `user` INNER JOIN `post` ON (`user`.`id` = `post`.`userId`)', | ||
string: 'SELECT `user`.`name`, `post`.`content` FROM `user` INNER JOIN `post` ON (`user`.`id` = `post`.`userId`)' | ||
}, | ||
}); | ||
@@ -18,6 +27,17 @@ | ||
Harness.test({ | ||
query : user.where({name: ''}).from(user).select(user.id), | ||
pg : 'SELECT "user"."id" FROM "user" WHERE ("user"."name" = $1)', | ||
sqlite: 'SELECT "user"."id" FROM "user" WHERE ("user"."name" = $1)', | ||
mysql : 'SELECT `user`.`id` FROM `user` WHERE (`user`.`name` = ?)', | ||
query: user.where({ | ||
name: '' | ||
}).from(user).select(user.id), | ||
pg: { | ||
text : 'SELECT "user"."id" FROM "user" WHERE ("user"."name" = $1)', | ||
string: 'SELECT "user"."id" FROM "user" WHERE ("user"."name" = \'\')' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."id" FROM "user" WHERE ("user"."name" = $1)', | ||
string: 'SELECT "user"."id" FROM "user" WHERE ("user"."name" = \'\')' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`id` FROM `user` WHERE (`user`.`name` = ?)', | ||
string: 'SELECT `user`.`id` FROM `user` WHERE (`user`.`name` = \'\')' | ||
}, | ||
params: [''] | ||
@@ -28,9 +48,20 @@ }); | ||
Harness.test({ | ||
query : user | ||
.select(user.name, post.content) | ||
.from(user.join(post).on(user.id.equals(post.userId))) | ||
.where({ name: '' }), | ||
pg : 'SELECT "user"."name", "post"."content" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId") WHERE ("user"."name" = $1)', | ||
sqlite: 'SELECT "user"."name", "post"."content" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId") WHERE ("user"."name" = $1)', | ||
mysql : 'SELECT `user`.`name`, `post`.`content` FROM `user` INNER JOIN `post` ON (`user`.`id` = `post`.`userId`) WHERE (`user`.`name` = ?)', | ||
query: user | ||
.select(user.name, post.content) | ||
.from(user.join(post).on(user.id.equals(post.userId))) | ||
.where({ | ||
name: '' | ||
}), | ||
pg: { | ||
text : 'SELECT "user"."name", "post"."content" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId") WHERE ("user"."name" = $1)', | ||
string: 'SELECT "user"."name", "post"."content" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId") WHERE ("user"."name" = \'\')' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."name", "post"."content" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId") WHERE ("user"."name" = $1)', | ||
string: 'SELECT "user"."name", "post"."content" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId") WHERE ("user"."name" = \'\')' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`name`, `post`.`content` FROM `user` INNER JOIN `post` ON (`user`.`id` = `post`.`userId`) WHERE (`user`.`name` = ?)', | ||
string: 'SELECT `user`.`name`, `post`.`content` FROM `user` INNER JOIN `post` ON (`user`.`id` = `post`.`userId`) WHERE (`user`.`name` = \'\')' | ||
}, | ||
params: [''] | ||
@@ -41,7 +72,18 @@ }); | ||
Harness.test({ | ||
query : user.select(user.id).from(user).where({name: ''}), | ||
pg : 'SELECT "user"."id" FROM "user" WHERE ("user"."name" = $1)', | ||
sqlite: 'SELECT "user"."id" FROM "user" WHERE ("user"."name" = $1)', | ||
mysql : 'SELECT `user`.`id` FROM `user` WHERE (`user`.`name` = ?)', | ||
query: user.select(user.id).from(user).where({ | ||
name: '' | ||
}), | ||
pg: { | ||
text : 'SELECT "user"."id" FROM "user" WHERE ("user"."name" = $1)', | ||
string: 'SELECT "user"."id" FROM "user" WHERE ("user"."name" = \'\')' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."id" FROM "user" WHERE ("user"."name" = $1)', | ||
string: 'SELECT "user"."id" FROM "user" WHERE ("user"."name" = \'\')' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`id` FROM `user` WHERE (`user`.`name` = ?)', | ||
string: 'SELECT `user`.`id` FROM `user` WHERE (`user`.`name` = \'\')' | ||
}, | ||
params: [''] | ||
}); |
@@ -9,15 +9,25 @@ 'use strict'; | ||
columns: [{ | ||
name: 'id', | ||
dataType: 'varchar(100)' | ||
}, { | ||
name: 'user_id', | ||
dataType: 'varchar(100)' | ||
}] | ||
name: 'id', | ||
dataType: 'varchar(100)' | ||
}, { | ||
name: 'user_id', | ||
dataType: 'varchar(100)' | ||
} | ||
] | ||
}); | ||
Harness.test({ | ||
query : group.create(), | ||
pg : 'CREATE TABLE "group" ("id" varchar(100), "user_id" varchar(100))', | ||
sqlite: 'CREATE TABLE "group" ("id" varchar(100), "user_id" varchar(100))', | ||
mysql : 'CREATE TABLE `group` (`id` varchar(100), `user_id` varchar(100))', | ||
query: group.create(), | ||
pg: { | ||
text : 'CREATE TABLE "group" ("id" varchar(100), "user_id" varchar(100))', | ||
string: 'CREATE TABLE "group" ("id" varchar(100), "user_id" varchar(100))' | ||
}, | ||
sqlite: { | ||
text : 'CREATE TABLE "group" ("id" varchar(100), "user_id" varchar(100))', | ||
string: 'CREATE TABLE "group" ("id" varchar(100), "user_id" varchar(100))' | ||
}, | ||
mysql: { | ||
text : 'CREATE TABLE `group` (`id` varchar(100), `user_id` varchar(100))', | ||
string: 'CREATE TABLE `group` (`id` varchar(100), `user_id` varchar(100))' | ||
}, | ||
params: [] | ||
@@ -27,6 +37,15 @@ }); | ||
Harness.test({ | ||
query : group.create().ifNotExists(), | ||
pg : 'CREATE TABLE IF NOT EXISTS "group" ("id" varchar(100), "user_id" varchar(100))', | ||
sqlite: 'CREATE TABLE IF NOT EXISTS "group" ("id" varchar(100), "user_id" varchar(100))', | ||
mysql : 'CREATE TABLE IF NOT EXISTS `group` (`id` varchar(100), `user_id` varchar(100))', | ||
query: group.create().ifNotExists(), | ||
pg: { | ||
text : 'CREATE TABLE IF NOT EXISTS "group" ("id" varchar(100), "user_id" varchar(100))', | ||
string: 'CREATE TABLE IF NOT EXISTS "group" ("id" varchar(100), "user_id" varchar(100))' | ||
}, | ||
sqlite: { | ||
text : 'CREATE TABLE IF NOT EXISTS "group" ("id" varchar(100), "user_id" varchar(100))', | ||
string: 'CREATE TABLE IF NOT EXISTS "group" ("id" varchar(100), "user_id" varchar(100))' | ||
}, | ||
mysql: { | ||
text : 'CREATE TABLE IF NOT EXISTS `group` (`id` varchar(100), `user_id` varchar(100))', | ||
string: 'CREATE TABLE IF NOT EXISTS `group` (`id` varchar(100), `user_id` varchar(100))' | ||
}, | ||
params: [] | ||
@@ -36,20 +55,72 @@ }); | ||
Harness.test({ | ||
query : Table.define({ name: 'user', columns: [{ name: 'id', dataType: 'varchar(100)' }], engine: 'InnoDB' }).create(), | ||
pg : 'CREATE TABLE "user" ("id" varchar(100))', | ||
sqlite: 'CREATE TABLE "user" ("id" varchar(100))', | ||
mysql : 'CREATE TABLE `user` (`id` varchar(100)) ENGINE=InnoDB' | ||
query: Table.define({ | ||
name: 'user', | ||
columns: [{ | ||
name: 'id', | ||
dataType: 'varchar(100)' | ||
} | ||
], | ||
engine: 'InnoDB' | ||
}).create(), | ||
pg: { | ||
text : 'CREATE TABLE "user" ("id" varchar(100))', | ||
string: 'CREATE TABLE "user" ("id" varchar(100))' | ||
}, | ||
sqlite: { | ||
text : 'CREATE TABLE "user" ("id" varchar(100))', | ||
string: 'CREATE TABLE "user" ("id" varchar(100))' | ||
}, | ||
mysql: { | ||
text : 'CREATE TABLE `user` (`id` varchar(100)) ENGINE=InnoDB', | ||
string: 'CREATE TABLE `user` (`id` varchar(100)) ENGINE=InnoDB' | ||
} | ||
}); | ||
Harness.test({ | ||
query : Table.define({ name: 'user', columns: [{ name: 'id', dataType: 'varchar(100)' }], charset: 'latin1' }).create(), | ||
pg : 'CREATE TABLE "user" ("id" varchar(100))', | ||
sqlite: 'CREATE TABLE "user" ("id" varchar(100))', | ||
mysql : 'CREATE TABLE `user` (`id` varchar(100)) DEFAULT CHARSET=latin1' | ||
query: Table.define({ | ||
name: 'user', | ||
columns: [{ | ||
name: 'id', | ||
dataType: 'varchar(100)' | ||
} | ||
], | ||
charset: 'latin1' | ||
}).create(), | ||
pg: { | ||
text : 'CREATE TABLE "user" ("id" varchar(100))', | ||
string: 'CREATE TABLE "user" ("id" varchar(100))' | ||
}, | ||
sqlite: { | ||
text : 'CREATE TABLE "user" ("id" varchar(100))', | ||
string: 'CREATE TABLE "user" ("id" varchar(100))' | ||
}, | ||
mysql: { | ||
text : 'CREATE TABLE `user` (`id` varchar(100)) DEFAULT CHARSET=latin1', | ||
string: 'CREATE TABLE `user` (`id` varchar(100)) DEFAULT CHARSET=latin1' | ||
} | ||
}); | ||
Harness.test({ | ||
query : Table.define({ name: 'user', columns: [{ name: 'id', dataType: 'varchar(100)' }], engine: 'MyISAM', charset: 'latin1' }).create(), | ||
pg : 'CREATE TABLE "user" ("id" varchar(100))', | ||
sqlite: 'CREATE TABLE "user" ("id" varchar(100))', | ||
mysql : 'CREATE TABLE `user` (`id` varchar(100)) ENGINE=MyISAM DEFAULT CHARSET=latin1' | ||
query: Table.define({ | ||
name: 'user', | ||
columns: [{ | ||
name: 'id', | ||
dataType: 'varchar(100)' | ||
} | ||
], | ||
engine: 'MyISAM', | ||
charset: 'latin1' | ||
}).create(), | ||
pg: { | ||
text : 'CREATE TABLE "user" ("id" varchar(100))', | ||
string: 'CREATE TABLE "user" ("id" varchar(100))' | ||
}, | ||
sqlite: { | ||
text : 'CREATE TABLE "user" ("id" varchar(100))', | ||
string: 'CREATE TABLE "user" ("id" varchar(100))' | ||
}, | ||
mysql: { | ||
text : 'CREATE TABLE `user` (`id` varchar(100)) ENGINE=MyISAM DEFAULT CHARSET=latin1', | ||
string: 'CREATE TABLE `user` (`id` varchar(100)) ENGINE=MyISAM DEFAULT CHARSET=latin1' | ||
} | ||
}); |
@@ -7,14 +7,34 @@ 'use strict'; | ||
Harness.test({ | ||
query : post.delete().where(post.content.equals('')), | ||
pg : 'DELETE FROM "post" WHERE ("post"."content" = $1)', | ||
sqlite: 'DELETE FROM "post" WHERE ("post"."content" = $1)', | ||
mysql : 'DELETE FROM `post` WHERE (`post`.`content` = ?)', | ||
params: [''] | ||
query: post.delete().where(post.content.equals("hello's world")), | ||
pg: { | ||
text : 'DELETE FROM "post" WHERE ("post"."content" = $1)', | ||
string: 'DELETE FROM "post" WHERE ("post"."content" = \'hello\'\'s world\')' | ||
}, | ||
sqlite: { | ||
text : 'DELETE FROM "post" WHERE ("post"."content" = $1)', | ||
string: 'DELETE FROM "post" WHERE ("post"."content" = \'hello\'\'s world\')' | ||
}, | ||
mysql: { | ||
text : 'DELETE FROM `post` WHERE (`post`.`content` = ?)', | ||
string: 'DELETE FROM `post` WHERE (`post`.`content` = \'hello\'\'s world\')' | ||
}, | ||
params: ["hello's world"] | ||
}); | ||
Harness.test({ | ||
query : post.delete().where({content: ''}), | ||
pg : 'DELETE FROM "post" WHERE ("post"."content" = $1)', | ||
sqlite: 'DELETE FROM "post" WHERE ("post"."content" = $1)', | ||
mysql : 'DELETE FROM `post` WHERE (`post`.`content` = ?)', | ||
query: post.delete().where({ | ||
content: '' | ||
}), | ||
pg: { | ||
text : 'DELETE FROM "post" WHERE ("post"."content" = $1)', | ||
string: 'DELETE FROM "post" WHERE ("post"."content" = \'\')' | ||
}, | ||
sqlite: { | ||
text : 'DELETE FROM "post" WHERE ("post"."content" = $1)', | ||
string: 'DELETE FROM "post" WHERE ("post"."content" = \'\')' | ||
}, | ||
mysql: { | ||
text : 'DELETE FROM `post` WHERE (`post`.`content` = ?)', | ||
string: 'DELETE FROM `post` WHERE (`post`.`content` = \'\')' | ||
}, | ||
params: [''] | ||
@@ -24,6 +44,17 @@ }); | ||
Harness.test({ | ||
query : post.delete({content: ''}), | ||
pg : 'DELETE FROM "post" WHERE ("post"."content" = $1)', | ||
sqlite: 'DELETE FROM "post" WHERE ("post"."content" = $1)', | ||
mysql : 'DELETE FROM `post` WHERE (`post`.`content` = ?)', | ||
query: post.delete({ | ||
content: '' | ||
}), | ||
pg: { | ||
text : 'DELETE FROM "post" WHERE ("post"."content" = $1)', | ||
string: 'DELETE FROM "post" WHERE ("post"."content" = \'\')' | ||
}, | ||
sqlite: { | ||
text : 'DELETE FROM "post" WHERE ("post"."content" = $1)', | ||
string: 'DELETE FROM "post" WHERE ("post"."content" = \'\')' | ||
}, | ||
mysql: { | ||
text : 'DELETE FROM `post` WHERE (`post`.`content` = ?)', | ||
string: 'DELETE FROM `post` WHERE (`post`.`content` = \'\')' | ||
}, | ||
params: [''] | ||
@@ -33,7 +64,18 @@ }); | ||
Harness.test({ | ||
query : post.delete({content: ''}).or(post.content.isNull()), | ||
pg : 'DELETE FROM "post" WHERE (("post"."content" = $1) OR ("post"."content" IS NULL))', | ||
sqlite: 'DELETE FROM "post" WHERE (("post"."content" = $1) OR ("post"."content" IS NULL))', | ||
mysql : 'DELETE FROM `post` WHERE ((`post`.`content` = ?) OR (`post`.`content` IS NULL))', | ||
query: post.delete({ | ||
content: '' | ||
}).or(post.content.isNull()), | ||
pg: { | ||
text : 'DELETE FROM "post" WHERE (("post"."content" = $1) OR ("post"."content" IS NULL))', | ||
string: 'DELETE FROM "post" WHERE (("post"."content" = \'\') OR ("post"."content" IS NULL))' | ||
}, | ||
sqlite: { | ||
text : 'DELETE FROM "post" WHERE (("post"."content" = $1) OR ("post"."content" IS NULL))', | ||
string: 'DELETE FROM "post" WHERE (("post"."content" = \'\') OR ("post"."content" IS NULL))' | ||
}, | ||
mysql: { | ||
text : 'DELETE FROM `post` WHERE ((`post`.`content` = ?) OR (`post`.`content` IS NULL))', | ||
string: 'DELETE FROM `post` WHERE ((`post`.`content` = \'\') OR (`post`.`content` IS NULL))' | ||
}, | ||
params: [''] | ||
}); |
@@ -7,9 +7,33 @@ 'use strict'; | ||
Harness.test({ | ||
query : user.select(user.id.distinct()), | ||
pg : 'SELECT DISTINCT("user"."id") FROM "user"' | ||
query: user.select(user.id.distinct()), | ||
pg: { | ||
text : 'SELECT DISTINCT("user"."id") FROM "user"', | ||
string: 'SELECT DISTINCT("user"."id") FROM "user"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT DISTINCT("user"."id") FROM "user"', | ||
string: 'SELECT DISTINCT("user"."id") FROM "user"' | ||
}, | ||
mysql: { | ||
text : 'SELECT DISTINCT(`user`.`id`) FROM `user`', | ||
string: 'SELECT DISTINCT(`user`.`id`) FROM `user`' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : user.select(user.id.count().distinct().as('count')), | ||
pg : 'SELECT COUNT(DISTINCT("user"."id")) AS "count" FROM "user"' | ||
query: user.select(user.id.count().distinct().as('count')), | ||
pg: { | ||
text : 'SELECT COUNT(DISTINCT("user"."id")) AS "count" FROM "user"', | ||
string: 'SELECT COUNT(DISTINCT("user"."id")) AS "count" FROM "user"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT COUNT(DISTINCT("user"."id")) AS "count" FROM "user"', | ||
string: 'SELECT COUNT(DISTINCT("user"."id")) AS "count" FROM "user"' | ||
}, | ||
mysql: { | ||
text : 'SELECT COUNT(DISTINCT(`user`.`id`)) AS `count` FROM `user`', | ||
string: 'SELECT COUNT(DISTINCT(`user`.`id`)) AS `count` FROM `user`' | ||
}, | ||
params: [] | ||
}); |
@@ -7,6 +7,15 @@ 'use strict'; | ||
Harness.test({ | ||
query : post.drop(), | ||
pg : 'DROP TABLE "post"', | ||
sqlite: 'DROP TABLE "post"', | ||
mysql : 'DROP TABLE `post`', | ||
query: post.drop(), | ||
pg: { | ||
text : 'DROP TABLE "post"', | ||
string: 'DROP TABLE "post"' | ||
}, | ||
sqlite: { | ||
text : 'DROP TABLE "post"', | ||
string: 'DROP TABLE "post"' | ||
}, | ||
mysql: { | ||
text : 'DROP TABLE `post`', | ||
string: 'DROP TABLE `post`' | ||
}, | ||
params: [] | ||
@@ -16,7 +25,16 @@ }); | ||
Harness.test({ | ||
query : post.drop().ifExists(), | ||
pg : 'DROP TABLE IF EXISTS "post"', | ||
sqlite: 'DROP TABLE IF EXISTS "post"', | ||
mysql : 'DROP TABLE IF EXISTS `post`', | ||
query: post.drop().ifExists(), | ||
pg: { | ||
text : 'DROP TABLE IF EXISTS "post"', | ||
string: 'DROP TABLE IF EXISTS "post"' | ||
}, | ||
sqlite: { | ||
text : 'DROP TABLE IF EXISTS "post"', | ||
string: 'DROP TABLE IF EXISTS "post"' | ||
}, | ||
mysql: { | ||
text : 'DROP TABLE IF EXISTS `post`', | ||
string: 'DROP TABLE IF EXISTS `post`' | ||
}, | ||
params: [] | ||
}); | ||
}); |
@@ -8,6 +8,15 @@ 'use strict'; | ||
Harness.test({ | ||
query : user.select(user.star()).from(user).from(post), | ||
pg : 'SELECT "user".* FROM "user" , "post"', | ||
sqlite: 'SELECT "user".* FROM "user" , "post"', | ||
mysql : 'SELECT `user`.* FROM `user` , `post`' | ||
query: user.select(user.star()).from(user).from(post), | ||
pg: { | ||
text : 'SELECT "user".* FROM "user" , "post"', | ||
string: 'SELECT "user".* FROM "user" , "post"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user".* FROM "user" , "post"', | ||
string: 'SELECT "user".* FROM "user" , "post"' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.* FROM `user` , `post`', | ||
string: 'SELECT `user`.* FROM `user` , `post`' | ||
} | ||
}); |
@@ -7,6 +7,15 @@ 'use strict'; | ||
Harness.test({ | ||
query : post.select(post.content).group(post.userId), | ||
pg : 'SELECT "post"."content" FROM "post" GROUP BY "post"."userId"', | ||
sqlite: 'SELECT "post"."content" FROM "post" GROUP BY "post"."userId"', | ||
mysql : 'SELECT `post`.`content` FROM `post` GROUP BY `post`.`userId`', | ||
query: post.select(post.content).group(post.userId), | ||
pg: { | ||
text : 'SELECT "post"."content" FROM "post" GROUP BY "post"."userId"', | ||
string: 'SELECT "post"."content" FROM "post" GROUP BY "post"."userId"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "post"."content" FROM "post" GROUP BY "post"."userId"', | ||
string: 'SELECT "post"."content" FROM "post" GROUP BY "post"."userId"' | ||
}, | ||
mysql: { | ||
text : 'SELECT `post`.`content` FROM `post` GROUP BY `post`.`userId`', | ||
string: 'SELECT `post`.`content` FROM `post` GROUP BY `post`.`userId`' | ||
}, | ||
params: [] | ||
@@ -16,6 +25,15 @@ }); | ||
Harness.test({ | ||
query : post.select(post.content).group(post.userId, post.id), | ||
pg : 'SELECT "post"."content" FROM "post" GROUP BY "post"."userId", "post"."id"', | ||
sqlite: 'SELECT "post"."content" FROM "post" GROUP BY "post"."userId", "post"."id"', | ||
mysql : 'SELECT `post`.`content` FROM `post` GROUP BY `post`.`userId`, `post`.`id`', | ||
query: post.select(post.content).group(post.userId, post.id), | ||
pg: { | ||
text : 'SELECT "post"."content" FROM "post" GROUP BY "post"."userId", "post"."id"', | ||
string: 'SELECT "post"."content" FROM "post" GROUP BY "post"."userId", "post"."id"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "post"."content" FROM "post" GROUP BY "post"."userId", "post"."id"', | ||
string: 'SELECT "post"."content" FROM "post" GROUP BY "post"."userId", "post"."id"' | ||
}, | ||
mysql: { | ||
text : 'SELECT `post`.`content` FROM `post` GROUP BY `post`.`userId`, `post`.`id`', | ||
string: 'SELECT `post`.`content` FROM `post` GROUP BY `post`.`userId`, `post`.`id`' | ||
}, | ||
params: [] | ||
@@ -25,6 +43,15 @@ }); | ||
Harness.test({ | ||
query : post.select(post.content.arrayAgg()).group(post.userId), | ||
pg : 'SELECT array_agg("post"."content") AS "contents" FROM "post" GROUP BY "post"."userId"', | ||
sqlite: 'SELECT GROUP_CONCAT("post"."content") AS "contents" FROM "post" GROUP BY "post"."userId"', | ||
mysql : 'SELECT GROUP_CONCAT(`post`.`content`) AS `contents` FROM `post` GROUP BY `post`.`userId`', | ||
query: post.select(post.content.arrayAgg()).group(post.userId), | ||
pg: { | ||
text : 'SELECT array_agg("post"."content") AS "contents" FROM "post" GROUP BY "post"."userId"', | ||
string: 'SELECT array_agg("post"."content") AS "contents" FROM "post" GROUP BY "post"."userId"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT GROUP_CONCAT("post"."content") AS "contents" FROM "post" GROUP BY "post"."userId"', | ||
string: 'SELECT GROUP_CONCAT("post"."content") AS "contents" FROM "post" GROUP BY "post"."userId"' | ||
}, | ||
mysql: { | ||
text : 'SELECT GROUP_CONCAT(`post`.`content`) AS `contents` FROM `post` GROUP BY `post`.`userId`', | ||
string: 'SELECT GROUP_CONCAT(`post`.`content`) AS `contents` FROM `post` GROUP BY `post`.`userId`' | ||
}, | ||
params: [] | ||
@@ -34,6 +61,15 @@ }); | ||
Harness.test({ | ||
query : post.select(post.content.arrayAgg('post contents')).group(post.userId), | ||
pg : 'SELECT array_agg("post"."content") AS "post contents" FROM "post" GROUP BY "post"."userId"', | ||
sqlite: 'SELECT GROUP_CONCAT("post"."content") AS "post contents" FROM "post" GROUP BY "post"."userId"', | ||
mysql : 'SELECT GROUP_CONCAT(`post`.`content`) AS `post contents` FROM `post` GROUP BY `post`.`userId`', | ||
query: post.select(post.content.arrayAgg('post contents')).group(post.userId), | ||
pg: { | ||
text : 'SELECT array_agg("post"."content") AS "post contents" FROM "post" GROUP BY "post"."userId"', | ||
string: 'SELECT array_agg("post"."content") AS "post contents" FROM "post" GROUP BY "post"."userId"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT GROUP_CONCAT("post"."content") AS "post contents" FROM "post" GROUP BY "post"."userId"', | ||
string: 'SELECT GROUP_CONCAT("post"."content") AS "post contents" FROM "post" GROUP BY "post"."userId"' | ||
}, | ||
mysql: { | ||
text : 'SELECT GROUP_CONCAT(`post`.`content`) AS `post contents` FROM `post` GROUP BY `post`.`userId`', | ||
string: 'SELECT GROUP_CONCAT(`post`.`content`) AS `post contents` FROM `post` GROUP BY `post`.`userId`' | ||
}, | ||
params: [] | ||
@@ -43,7 +79,16 @@ }); | ||
Harness.test({ | ||
query : post.select(post.content).group([post.userId, post.id]), | ||
pg : 'SELECT "post"."content" FROM "post" GROUP BY "post"."userId", "post"."id"', | ||
sqlite: 'SELECT "post"."content" FROM "post" GROUP BY "post"."userId", "post"."id"', | ||
mysql : 'SELECT `post`.`content` FROM `post` GROUP BY `post`.`userId`, `post`.`id`', | ||
query: post.select(post.content).group([post.userId, post.id]), | ||
pg: { | ||
text : 'SELECT "post"."content" FROM "post" GROUP BY "post"."userId", "post"."id"', | ||
string: 'SELECT "post"."content" FROM "post" GROUP BY "post"."userId", "post"."id"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "post"."content" FROM "post" GROUP BY "post"."userId", "post"."id"', | ||
string: 'SELECT "post"."content" FROM "post" GROUP BY "post"."userId", "post"."id"' | ||
}, | ||
mysql: { | ||
text : 'SELECT `post`.`content` FROM `post` GROUP BY `post`.`userId`, `post`.`id`', | ||
string: 'SELECT `post`.`content` FROM `post` GROUP BY `post`.`userId`, `post`.`id`' | ||
}, | ||
params: [] | ||
}); |
@@ -8,5 +8,14 @@ 'use strict'; | ||
query : post.select(post.userId, post.content.count()).group(post.userId).having(post.userId.gt(10)), | ||
pg : 'SELECT "post"."userId", COUNT("post"."content") AS "content_count" FROM "post" GROUP BY "post"."userId" HAVING ("post"."userId" > $1)', | ||
sqlite: 'SELECT "post"."userId", COUNT("post"."content") AS "content_count" FROM "post" GROUP BY "post"."userId" HAVING ("post"."userId" > $1)', | ||
mysql : 'SELECT `post`.`userId`, COUNT(`post`.`content`) AS `content_count` FROM `post` GROUP BY `post`.`userId` HAVING (`post`.`userId` > ?)', | ||
pg : { | ||
text : 'SELECT "post"."userId", COUNT("post"."content") AS "content_count" FROM "post" GROUP BY "post"."userId" HAVING ("post"."userId" > $1)', | ||
string: 'SELECT "post"."userId", COUNT("post"."content") AS "content_count" FROM "post" GROUP BY "post"."userId" HAVING ("post"."userId" > 10)' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "post"."userId", COUNT("post"."content") AS "content_count" FROM "post" GROUP BY "post"."userId" HAVING ("post"."userId" > $1)', | ||
string: 'SELECT "post"."userId", COUNT("post"."content") AS "content_count" FROM "post" GROUP BY "post"."userId" HAVING ("post"."userId" > 10)' | ||
}, | ||
mysql : { | ||
text : 'SELECT `post`.`userId`, COUNT(`post`.`content`) AS `content_count` FROM `post` GROUP BY `post`.`userId` HAVING (`post`.`userId` > ?)', | ||
string: 'SELECT `post`.`userId`, COUNT(`post`.`content`) AS `content_count` FROM `post` GROUP BY `post`.`userId` HAVING (`post`.`userId` > 10)' | ||
}, | ||
params: [10] | ||
@@ -17,5 +26,14 @@ }); | ||
query : post.select(post.userId, post.content.count()).group(post.userId).having(post.userId.gt(10), post.userId.lt(100)), | ||
pg : 'SELECT "post"."userId", COUNT("post"."content") AS "content_count" FROM "post" GROUP BY "post"."userId" HAVING ("post"."userId" > $1) AND ("post"."userId" < $2)', | ||
sqlite: 'SELECT "post"."userId", COUNT("post"."content") AS "content_count" FROM "post" GROUP BY "post"."userId" HAVING ("post"."userId" > $1) AND ("post"."userId" < $2)', | ||
mysql : 'SELECT `post`.`userId`, COUNT(`post`.`content`) AS `content_count` FROM `post` GROUP BY `post`.`userId` HAVING (`post`.`userId` > ?) AND (`post`.`userId` < ?)', | ||
pg : { | ||
text : 'SELECT "post"."userId", COUNT("post"."content") AS "content_count" FROM "post" GROUP BY "post"."userId" HAVING ("post"."userId" > $1) AND ("post"."userId" < $2)', | ||
string: 'SELECT "post"."userId", COUNT("post"."content") AS "content_count" FROM "post" GROUP BY "post"."userId" HAVING ("post"."userId" > 10) AND ("post"."userId" < 100)' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "post"."userId", COUNT("post"."content") AS "content_count" FROM "post" GROUP BY "post"."userId" HAVING ("post"."userId" > $1) AND ("post"."userId" < $2)', | ||
string: 'SELECT "post"."userId", COUNT("post"."content") AS "content_count" FROM "post" GROUP BY "post"."userId" HAVING ("post"."userId" > 10) AND ("post"."userId" < 100)' | ||
}, | ||
mysql : { | ||
text : 'SELECT `post`.`userId`, COUNT(`post`.`content`) AS `content_count` FROM `post` GROUP BY `post`.`userId` HAVING (`post`.`userId` > ?) AND (`post`.`userId` < ?)', | ||
string: 'SELECT `post`.`userId`, COUNT(`post`.`content`) AS `content_count` FROM `post` GROUP BY `post`.`userId` HAVING (`post`.`userId` > 10) AND (`post`.`userId` < 100)' | ||
}, | ||
params: [10, 100] | ||
@@ -26,6 +44,15 @@ }); | ||
query : post.select(post.userId, post.content.count()).group(post.userId).having([post.userId.gt(10), post.userId.lt(100)]), | ||
pg : 'SELECT "post"."userId", COUNT("post"."content") AS "content_count" FROM "post" GROUP BY "post"."userId" HAVING ("post"."userId" > $1) AND ("post"."userId" < $2)', | ||
sqlite: 'SELECT "post"."userId", COUNT("post"."content") AS "content_count" FROM "post" GROUP BY "post"."userId" HAVING ("post"."userId" > $1) AND ("post"."userId" < $2)', | ||
mysql : 'SELECT `post`.`userId`, COUNT(`post`.`content`) AS `content_count` FROM `post` GROUP BY `post`.`userId` HAVING (`post`.`userId` > ?) AND (`post`.`userId` < ?)', | ||
pg : { | ||
text : 'SELECT "post"."userId", COUNT("post"."content") AS "content_count" FROM "post" GROUP BY "post"."userId" HAVING ("post"."userId" > $1) AND ("post"."userId" < $2)', | ||
string: 'SELECT "post"."userId", COUNT("post"."content") AS "content_count" FROM "post" GROUP BY "post"."userId" HAVING ("post"."userId" > 10) AND ("post"."userId" < 100)' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "post"."userId", COUNT("post"."content") AS "content_count" FROM "post" GROUP BY "post"."userId" HAVING ("post"."userId" > $1) AND ("post"."userId" < $2)', | ||
string: 'SELECT "post"."userId", COUNT("post"."content") AS "content_count" FROM "post" GROUP BY "post"."userId" HAVING ("post"."userId" > 10) AND ("post"."userId" < 100)' | ||
}, | ||
mysql : { | ||
text : 'SELECT `post`.`userId`, COUNT(`post`.`content`) AS `content_count` FROM `post` GROUP BY `post`.`userId` HAVING (`post`.`userId` > ?) AND (`post`.`userId` < ?)', | ||
string: 'SELECT `post`.`userId`, COUNT(`post`.`content`) AS `content_count` FROM `post` GROUP BY `post`.`userId` HAVING (`post`.`userId` > 10) AND (`post`.`userId` < 100)' | ||
}, | ||
params: [10, 100] | ||
}); |
@@ -7,62 +7,151 @@ 'use strict'; | ||
Harness.test({ | ||
query: post.indexes(), | ||
pg: "SELECT relname FROM pg_class WHERE oid IN ( SELECT indexrelid FROM pg_index, pg_class WHERE pg_class.relname=\"post\" AND pg_class.oid=pg_index.indrelid)", | ||
mysql: "SHOW INDEX FROM `post`", | ||
sqlite: "PRAGMA INDEX_LIST(\"post\")" | ||
query: post.indexes(), | ||
pg: { | ||
text : 'SELECT relname FROM pg_class WHERE oid IN ( SELECT indexrelid FROM pg_index, pg_class WHERE pg_class.relname="post" AND pg_class.oid=pg_index.indrelid)', | ||
string: 'SELECT relname FROM pg_class WHERE oid IN ( SELECT indexrelid FROM pg_index, pg_class WHERE pg_class.relname="post" AND pg_class.oid=pg_index.indrelid)' | ||
}, | ||
mysql: { | ||
text : 'SHOW INDEX FROM `post`', | ||
string: 'SHOW INDEX FROM `post`' | ||
}, | ||
sqlite: { | ||
text : 'PRAGMA INDEX_LIST("post")', | ||
string: 'PRAGMA INDEX_LIST("post")' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query: post.indexes().create('index_name').unique().using('btree').on(post.id, post.userId).withParser('foo'), | ||
pg: "CREATE UNIQUE INDEX \"index_name\" USING BTREE ON \"post\" (\"id\",\"userId\") WITH PARSER foo", | ||
mysql: "CREATE UNIQUE INDEX `index_name` USING BTREE ON `post` (`id`,`userId`) WITH PARSER foo", | ||
sqlite: "CREATE UNIQUE INDEX \"index_name\" USING BTREE ON \"post\" (\"id\",\"userId\") WITH PARSER foo" | ||
query: post.indexes().create('index_name').unique().using('btree').on(post.id, post.userId).withParser('foo'), | ||
pg: { | ||
text : 'CREATE UNIQUE INDEX "index_name" USING BTREE ON "post" ("id","userId") WITH PARSER foo', | ||
string: 'CREATE UNIQUE INDEX "index_name" USING BTREE ON "post" ("id","userId") WITH PARSER foo' | ||
}, | ||
mysql: { | ||
text : 'CREATE UNIQUE INDEX `index_name` USING BTREE ON `post` (`id`,`userId`) WITH PARSER foo', | ||
string: 'CREATE UNIQUE INDEX `index_name` USING BTREE ON `post` (`id`,`userId`) WITH PARSER foo' | ||
}, | ||
sqlite: { | ||
text : 'CREATE UNIQUE INDEX "index_name" USING BTREE ON "post" ("id","userId") WITH PARSER foo', | ||
string: 'CREATE UNIQUE INDEX "index_name" USING BTREE ON "post" ("id","userId") WITH PARSER foo' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query: post.indexes().create().fulltext().on(post.id), | ||
pg: "CREATE FULLTEXT INDEX \"post_id\" ON \"post\" (\"id\")", | ||
mysql: "CREATE FULLTEXT INDEX `post_id` ON `post` (`id`)", | ||
sqlite: "CREATE FULLTEXT INDEX \"post_id\" ON \"post\" (\"id\")" | ||
query: post.indexes().create().fulltext().on(post.id), | ||
pg: { | ||
text : 'CREATE FULLTEXT INDEX "post_id" ON "post" ("id")', | ||
string: 'CREATE FULLTEXT INDEX "post_id" ON "post" ("id")' | ||
}, | ||
mysql: { | ||
text : 'CREATE FULLTEXT INDEX `post_id` ON `post` (`id`)', | ||
string: 'CREATE FULLTEXT INDEX `post_id` ON `post` (`id`)' | ||
}, | ||
sqlite: { | ||
text : 'CREATE FULLTEXT INDEX "post_id" ON "post" ("id")', | ||
string: 'CREATE FULLTEXT INDEX "post_id" ON "post" ("id")' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query: post.indexes().create().spatial().on(post.id), | ||
pg: "CREATE SPATIAL INDEX \"post_id\" ON \"post\" (\"id\")", | ||
mysql: "CREATE SPATIAL INDEX `post_id` ON `post` (`id`)", | ||
sqlite: "CREATE SPATIAL INDEX \"post_id\" ON \"post\" (\"id\")" | ||
query: post.indexes().create().spatial().on(post.id), | ||
pg: { | ||
text : 'CREATE SPATIAL INDEX "post_id" ON "post" ("id")', | ||
string: 'CREATE SPATIAL INDEX "post_id" ON "post" ("id")' | ||
}, | ||
mysql: { | ||
text : 'CREATE SPATIAL INDEX `post_id` ON `post` (`id`)', | ||
string: 'CREATE SPATIAL INDEX `post_id` ON `post` (`id`)' | ||
}, | ||
sqlite: { | ||
text : 'CREATE SPATIAL INDEX "post_id" ON "post" ("id")', | ||
string: 'CREATE SPATIAL INDEX "post_id" ON "post" ("id")' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query: post.indexes().create().on(post.userId, post.id), | ||
pg: "CREATE INDEX \"post_id_userId\" ON \"post\" (\"userId\",\"id\")", | ||
mysql: "CREATE INDEX `post_id_userId` ON `post` (`userId`,`id`)", | ||
sqlite: "CREATE INDEX \"post_id_userId\" ON \"post\" (\"userId\",\"id\")" | ||
query: post.indexes().create().on(post.userId, post.id), | ||
pg: { | ||
text : 'CREATE INDEX "post_id_userId" ON "post" ("userId","id")', | ||
string: 'CREATE INDEX "post_id_userId" ON "post" ("userId","id")' | ||
}, | ||
mysql: { | ||
text : 'CREATE INDEX `post_id_userId` ON `post` (`userId`,`id`)', | ||
string: 'CREATE INDEX `post_id_userId` ON `post` (`userId`,`id`)' | ||
}, | ||
sqlite: { | ||
text : 'CREATE INDEX "post_id_userId" ON "post" ("userId","id")', | ||
string: 'CREATE INDEX "post_id_userId" ON "post" ("userId","id")' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query: post.indexes().create().on(post.userId).on(post.id), | ||
pg: "CREATE INDEX \"post_id_userId\" ON \"post\" (\"userId\",\"id\")", | ||
mysql: "CREATE INDEX `post_id_userId` ON `post` (`userId`,`id`)", | ||
sqlite: "CREATE INDEX \"post_id_userId\" ON \"post\" (\"userId\",\"id\")" | ||
query: post.indexes().create().on(post.userId).on(post.id), | ||
pg: { | ||
text : 'CREATE INDEX "post_id_userId" ON "post" ("userId","id")', | ||
string: 'CREATE INDEX "post_id_userId" ON "post" ("userId","id")' | ||
}, | ||
mysql: { | ||
text : 'CREATE INDEX `post_id_userId` ON `post` (`userId`,`id`)', | ||
string: 'CREATE INDEX `post_id_userId` ON `post` (`userId`,`id`)' | ||
}, | ||
sqlite: { | ||
text : 'CREATE INDEX "post_id_userId" ON "post" ("userId","id")', | ||
string: 'CREATE INDEX "post_id_userId" ON "post" ("userId","id")' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query: post.indexes().create(), | ||
pg: { text: 'No columns defined!', throws: true }, | ||
mysql: { text: 'No columns defined!', throws: true }, | ||
sqlite: { text: 'No columns defined!', throws: true } | ||
query: post.indexes().create(), | ||
pg: { | ||
text : 'No columns defined!', | ||
throws: true | ||
}, | ||
mysql: { | ||
text : 'No columns defined!', | ||
throws: true | ||
}, | ||
sqlite: { | ||
text : 'No columns defined!', | ||
throws: true | ||
} | ||
}); | ||
Harness.test({ | ||
query: post.indexes().drop('index_name'), | ||
pg: "DROP INDEX \"index_name\" ON \"post\"", | ||
mysql: "DROP INDEX `index_name` ON `post`", | ||
sqlite: "DROP INDEX \"index_name\" ON \"post\"" | ||
query: post.indexes().drop('index_name'), | ||
pg: { | ||
text : 'DROP INDEX "index_name" ON "post"', | ||
string: 'DROP INDEX "index_name" ON "post"' | ||
}, | ||
mysql: { | ||
text : 'DROP INDEX `index_name` ON `post`', | ||
string: 'DROP INDEX `index_name` ON `post`' | ||
}, | ||
sqlite: { | ||
text : 'DROP INDEX "index_name" ON "post"', | ||
string: 'DROP INDEX "index_name" ON "post"' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query: post.indexes().drop(post.userId, post.id), | ||
pg: "DROP INDEX \"post_id_userId\" ON \"post\"", | ||
mysql: "DROP INDEX `post_id_userId` ON `post`", | ||
sqlite: "DROP INDEX \"post_id_userId\" ON \"post\"" | ||
query: post.indexes().drop(post.userId, post.id), | ||
pg: { | ||
text : 'DROP INDEX "post_id_userId" ON "post"', | ||
string: 'DROP INDEX "post_id_userId" ON "post"' | ||
}, | ||
mysql: { | ||
text : 'DROP INDEX `post_id_userId` ON `post`', | ||
string: 'DROP INDEX `post_id_userId` ON `post`' | ||
}, | ||
sqlite: { | ||
text : 'DROP INDEX "post_id_userId" ON "post"', | ||
string: 'DROP INDEX "post_id_userId" ON "post"' | ||
}, | ||
params: [] | ||
}); |
@@ -7,6 +7,15 @@ 'use strict'; | ||
Harness.test({ | ||
query : post.insert(post.content.value('test'), post.userId.value(1)), | ||
pg : 'INSERT INTO "post" ("content", "userId") VALUES ($1, $2)', | ||
sqlite: 'INSERT INTO "post" ("content", "userId") VALUES ($1, $2)', | ||
mysql : 'INSERT INTO `post` (`content`, `userId`) VALUES (?, ?)', | ||
query: post.insert(post.content.value('test'), post.userId.value(1)), | ||
pg: { | ||
text : 'INSERT INTO "post" ("content", "userId") VALUES ($1, $2)', | ||
string: 'INSERT INTO "post" ("content", "userId") VALUES (\'test\', 1)' | ||
}, | ||
sqlite: { | ||
text : 'INSERT INTO "post" ("content", "userId") VALUES ($1, $2)', | ||
string: 'INSERT INTO "post" ("content", "userId") VALUES (\'test\', 1)' | ||
}, | ||
mysql: { | ||
text : 'INSERT INTO `post` (`content`, `userId`) VALUES (?, ?)', | ||
string: 'INSERT INTO `post` (`content`, `userId`) VALUES (\'test\', 1)' | ||
}, | ||
params: ['test', 1] | ||
@@ -17,6 +26,15 @@ }); | ||
Harness.test({ | ||
query : post.insert(post.content.value('whoah')), | ||
pg : 'INSERT INTO "post" ("content") VALUES ($1)', | ||
sqlite: 'INSERT INTO "post" ("content") VALUES ($1)', | ||
mysql : 'INSERT INTO `post` (`content`) VALUES (?)', | ||
query: post.insert(post.content.value('whoah')), | ||
pg: { | ||
text : 'INSERT INTO "post" ("content") VALUES ($1)', | ||
string: 'INSERT INTO "post" ("content") VALUES (\'whoah\')' | ||
}, | ||
sqlite: { | ||
text : 'INSERT INTO "post" ("content") VALUES ($1)', | ||
string: 'INSERT INTO "post" ("content") VALUES (\'whoah\')' | ||
}, | ||
mysql: { | ||
text : 'INSERT INTO `post` (`content`) VALUES (?)', | ||
string: 'INSERT INTO `post` (`content`) VALUES (\'whoah\')' | ||
}, | ||
params: ['whoah'] | ||
@@ -26,6 +44,18 @@ }); | ||
Harness.test({ | ||
query : post.insert({content: 'test', userId: 2}), | ||
pg : 'INSERT INTO "post" ("content", "userId") VALUES ($1, $2)', | ||
sqlite: 'INSERT INTO "post" ("content", "userId") VALUES ($1, $2)', | ||
mysql : 'INSERT INTO `post` (`content`, `userId`) VALUES (?, ?)', | ||
query: post.insert({ | ||
content: 'test', | ||
userId: 2 | ||
}), | ||
pg: { | ||
text : 'INSERT INTO "post" ("content", "userId") VALUES ($1, $2)', | ||
string: 'INSERT INTO "post" ("content", "userId") VALUES (\'test\', 2)' | ||
}, | ||
sqlite: { | ||
text : 'INSERT INTO "post" ("content", "userId") VALUES ($1, $2)', | ||
string: 'INSERT INTO "post" ("content", "userId") VALUES (\'test\', 2)' | ||
}, | ||
mysql: { | ||
text : 'INSERT INTO `post` (`content`, `userId`) VALUES (?, ?)', | ||
string: 'INSERT INTO `post` (`content`, `userId`) VALUES (\'test\', 2)' | ||
}, | ||
params: ['test', 2] | ||
@@ -36,6 +66,20 @@ }); | ||
Harness.test({ | ||
query : post.insert([{content: 'whoah'}, {content: 'hey'}]), | ||
pg : 'INSERT INTO "post" ("content") VALUES ($1), ($2)', | ||
sqlite: 'INSERT INTO "post" ("content") VALUES ($1), ($2)', | ||
mysql : 'INSERT INTO `post` (`content`) VALUES (?), (?)', | ||
query: post.insert([{ | ||
content: 'whoah' | ||
}, { | ||
content: 'hey' | ||
} | ||
]), | ||
pg: { | ||
text : 'INSERT INTO "post" ("content") VALUES ($1), ($2)', | ||
string: 'INSERT INTO "post" ("content") VALUES (\'whoah\'), (\'hey\')' | ||
}, | ||
sqlite: { | ||
text : 'INSERT INTO "post" ("content") VALUES ($1), ($2)', | ||
string: 'INSERT INTO "post" ("content") VALUES (\'whoah\'), (\'hey\')' | ||
}, | ||
mysql: { | ||
text : 'INSERT INTO `post` (`content`) VALUES (?), (?)', | ||
string: 'INSERT INTO `post` (`content`) VALUES (\'whoah\'), (\'hey\')' | ||
}, | ||
params: ['whoah', 'hey'] | ||
@@ -45,6 +89,22 @@ }); | ||
Harness.test({ | ||
query : post.insert([{content: 'whoah', userId: 1}, {content: 'hey', userId: 2}]), | ||
pg : 'INSERT INTO "post" ("content", "userId") VALUES ($1, $2), ($3, $4)', | ||
sqlite: 'INSERT INTO "post" ("content", "userId") VALUES ($1, $2), ($3, $4)', | ||
mysql : 'INSERT INTO `post` (`content`, `userId`) VALUES (?, ?), (?, ?)', | ||
query: post.insert([{ | ||
content: 'whoah', | ||
userId: 1 | ||
}, { | ||
content: 'hey', | ||
userId: 2 | ||
} | ||
]), | ||
pg: { | ||
text : 'INSERT INTO "post" ("content", "userId") VALUES ($1, $2), ($3, $4)', | ||
string: 'INSERT INTO "post" ("content", "userId") VALUES (\'whoah\', 1), (\'hey\', 2)' | ||
}, | ||
sqlite: { | ||
text : 'INSERT INTO "post" ("content", "userId") VALUES ($1, $2), ($3, $4)', | ||
string: 'INSERT INTO "post" ("content", "userId") VALUES (\'whoah\', 1), (\'hey\', 2)' | ||
}, | ||
mysql: { | ||
text : 'INSERT INTO `post` (`content`, `userId`) VALUES (?, ?), (?, ?)', | ||
string: 'INSERT INTO `post` (`content`, `userId`) VALUES (\'whoah\', 1), (\'hey\', 2)' | ||
}, | ||
params: ['whoah', 1, 'hey', 2] | ||
@@ -55,47 +115,73 @@ }); | ||
Harness.test({ | ||
query : post.insert([{content: 'whoah', userId: 1}, {userId: 2, content: 'hey' }]), | ||
pg : 'INSERT INTO "post" ("content", "userId") VALUES ($1, $2), ($3, $4)', | ||
sqlite: 'INSERT INTO "post" ("content", "userId") VALUES ($1, $2), ($3, $4)', | ||
mysql : 'INSERT INTO `post` (`content`, `userId`) VALUES (?, ?), (?, ?)', | ||
query: post.insert([{ | ||
content: 'whoah', | ||
userId: 1 | ||
}, { | ||
userId: 2, | ||
content: 'hey' | ||
} | ||
]), | ||
pg: { | ||
text : 'INSERT INTO "post" ("content", "userId") VALUES ($1, $2), ($3, $4)', | ||
string: 'INSERT INTO "post" ("content", "userId") VALUES (\'whoah\', 1), (\'hey\', 2)' | ||
}, | ||
sqlite: { | ||
text : 'INSERT INTO "post" ("content", "userId") VALUES ($1, $2), ($3, $4)', | ||
string: 'INSERT INTO "post" ("content", "userId") VALUES (\'whoah\', 1), (\'hey\', 2)' | ||
}, | ||
mysql: { | ||
text : 'INSERT INTO `post` (`content`, `userId`) VALUES (?, ?), (?, ?)', | ||
string: 'INSERT INTO `post` (`content`, `userId`) VALUES (\'whoah\', 1), (\'hey\', 2)' | ||
}, | ||
params: ['whoah', 1, 'hey', 2] | ||
}); | ||
// handle missing columns | ||
Harness.test({ | ||
query : post.insert([{content: 'whoah', userId: 1}, {content: 'hey'}]), | ||
pg : { | ||
text: 'INSERT INTO "post" ("content", "userId") VALUES ($1, $2), ($3, $4)', | ||
params: ['whoah', 1, 'hey', 'DEFAULT'] | ||
query: post.insert({}), | ||
pg: { | ||
text : 'INSERT INTO "post" DEFAULT VALUES', | ||
string: 'INSERT INTO "post" DEFAULT VALUES' | ||
}, | ||
sqlite: { | ||
text: 'Sqlite requires the same number of columns in each insert row', | ||
throws: true | ||
text : 'INSERT INTO "post" DEFAULT VALUES', | ||
string: 'INSERT INTO "post" DEFAULT VALUES' | ||
}, | ||
mysql : { | ||
text: 'INSERT INTO `post` (`content`, `userId`) VALUES (?, ?), (?, DEFAULT)', | ||
params: ['whoah', 1, 'hey'] | ||
} | ||
mysql: { | ||
text : 'INSERT INTO `post` () VALUES ()', | ||
string: 'INSERT INTO `post` () VALUES ()' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : post.insert([{userId: 1}, {content: 'hey', userId: 2}]), | ||
pg : { | ||
text: 'INSERT INTO "post" ("userId", "content") VALUES ($1, $2), ($3, $4)', | ||
params: [1, 'DEFAULT', 2, 'hey'] | ||
query: post.insert({}).returning('*'), | ||
pg: { | ||
text : 'INSERT INTO "post" DEFAULT VALUES RETURNING *', | ||
string: 'INSERT INTO "post" DEFAULT VALUES RETURNING *' | ||
}, | ||
sqlite: { | ||
text: 'Sqlite requires the same number of columns in each insert row', | ||
throws: true | ||
text : 'INSERT INTO "post" DEFAULT VALUES RETURNING *', | ||
string: 'INSERT INTO "post" DEFAULT VALUES RETURNING *' | ||
}, | ||
mysql : { | ||
text: 'INSERT INTO `post` (`userId`, `content`) VALUES (?, DEFAULT), (?, ?)', | ||
params: [1, 2, 'hey'] | ||
} | ||
mysql: { | ||
text : 'INSERT INTO `post` () VALUES () RETURNING *', | ||
string: 'INSERT INTO `post` () VALUES () RETURNING *' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : post.insert({}), | ||
pg : 'INSERT INTO "post" DEFAULT VALUES', | ||
sqlite: 'INSERT INTO "post" DEFAULT VALUES', | ||
mysql : 'INSERT INTO `post` () VALUES ()', | ||
query: post.insert({}).returning(post.star()), | ||
pg: { | ||
text : 'INSERT INTO "post" DEFAULT VALUES RETURNING *', | ||
string: 'INSERT INTO "post" DEFAULT VALUES RETURNING *' | ||
}, | ||
sqlite: { | ||
text : 'INSERT INTO "post" DEFAULT VALUES RETURNING *', | ||
string: 'INSERT INTO "post" DEFAULT VALUES RETURNING *' | ||
}, | ||
mysql: { | ||
text : 'INSERT INTO `post` () VALUES () RETURNING *', | ||
string: 'INSERT INTO `post` () VALUES () RETURNING *' | ||
}, | ||
params: [] | ||
@@ -105,6 +191,15 @@ }); | ||
Harness.test({ | ||
query : post.insert({}).returning('*'), | ||
pg : 'INSERT INTO "post" DEFAULT VALUES RETURNING *', | ||
sqlite: 'INSERT INTO "post" DEFAULT VALUES RETURNING *', | ||
mysql : 'INSERT INTO `post` () VALUES () RETURNING *', | ||
query: post.insert({}).returning(post.id), | ||
pg: { | ||
text : 'INSERT INTO "post" DEFAULT VALUES RETURNING "id"', | ||
string: 'INSERT INTO "post" DEFAULT VALUES RETURNING "id"' | ||
}, | ||
sqlite: { | ||
text : 'INSERT INTO "post" DEFAULT VALUES RETURNING "id"', | ||
string: 'INSERT INTO "post" DEFAULT VALUES RETURNING "id"' | ||
}, | ||
mysql: { | ||
text : 'INSERT INTO `post` () VALUES () RETURNING `id`', | ||
string: 'INSERT INTO `post` () VALUES () RETURNING `id`' | ||
}, | ||
params: [] | ||
@@ -114,6 +209,15 @@ }); | ||
Harness.test({ | ||
query : post.insert({}).returning(post.star()), | ||
pg : 'INSERT INTO "post" DEFAULT VALUES RETURNING *', | ||
sqlite: 'INSERT INTO "post" DEFAULT VALUES RETURNING *', | ||
mysql : 'INSERT INTO `post` () VALUES () RETURNING *', | ||
query: post.insert({}).returning(post.id, post.content), | ||
pg: { | ||
text : 'INSERT INTO "post" DEFAULT VALUES RETURNING "id", "content"', | ||
string: 'INSERT INTO "post" DEFAULT VALUES RETURNING "id", "content"' | ||
}, | ||
sqlite: { | ||
text : 'INSERT INTO "post" DEFAULT VALUES RETURNING "id", "content"', | ||
string: 'INSERT INTO "post" DEFAULT VALUES RETURNING "id", "content"' | ||
}, | ||
mysql: { | ||
text : 'INSERT INTO `post` () VALUES () RETURNING `id`, `content`', | ||
string: 'INSERT INTO `post` () VALUES () RETURNING `id`, `content`' | ||
}, | ||
params: [] | ||
@@ -123,23 +227,65 @@ }); | ||
Harness.test({ | ||
query : post.insert({}).returning(post.id), | ||
pg : 'INSERT INTO "post" DEFAULT VALUES RETURNING "id"', | ||
sqlite: 'INSERT INTO "post" DEFAULT VALUES RETURNING "id"', | ||
mysql : 'INSERT INTO `post` () VALUES () RETURNING `id`', | ||
query: post.insert({}).returning([post.id, post.content]), | ||
pg: { | ||
text : 'INSERT INTO "post" DEFAULT VALUES RETURNING "id", "content"', | ||
string: 'INSERT INTO "post" DEFAULT VALUES RETURNING "id", "content"' | ||
}, | ||
sqlite: { | ||
text : 'INSERT INTO "post" DEFAULT VALUES RETURNING "id", "content"', | ||
string: 'INSERT INTO "post" DEFAULT VALUES RETURNING "id", "content"' | ||
}, | ||
mysql: { | ||
text : 'INSERT INTO `post` () VALUES () RETURNING `id`, `content`', | ||
string: 'INSERT INTO `post` () VALUES () RETURNING `id`, `content`' | ||
}, | ||
params: [] | ||
}); | ||
// handle missing columns | ||
Harness.test({ | ||
query : post.insert({}).returning(post.id, post.content), | ||
pg : 'INSERT INTO "post" DEFAULT VALUES RETURNING "id", "content"', | ||
sqlite: 'INSERT INTO "post" DEFAULT VALUES RETURNING "id", "content"', | ||
mysql : 'INSERT INTO `post` () VALUES () RETURNING `id`, `content`', | ||
params: [] | ||
query: post.insert([{ | ||
content: 'whoah', | ||
userId: 1 | ||
}, { | ||
content: 'hey' | ||
} | ||
]), | ||
pg: { | ||
text : 'INSERT INTO "post" ("content", "userId") VALUES ($1, $2), ($3, DEFAULT)', | ||
string: 'INSERT INTO "post" ("content", "userId") VALUES (\'whoah\', 1), (\'hey\', DEFAULT)', | ||
params: ['whoah', 1, 'hey'] | ||
}, | ||
sqlite: { | ||
text : 'Sqlite requires the same number of columns in each insert row', | ||
throws: true | ||
}, | ||
mysql: { | ||
text : 'INSERT INTO `post` (`content`, `userId`) VALUES (?, ?), (?, DEFAULT)', | ||
string: 'INSERT INTO `post` (`content`, `userId`) VALUES (\'whoah\', 1), (\'hey\', DEFAULT)', | ||
params: ['whoah', 1, 'hey'] | ||
} | ||
}); | ||
Harness.test({ | ||
query : post.insert({}).returning([post.id, post.content]), | ||
pg : 'INSERT INTO "post" DEFAULT VALUES RETURNING "id", "content"', | ||
sqlite: 'INSERT INTO "post" DEFAULT VALUES RETURNING "id", "content"', | ||
mysql : 'INSERT INTO `post` () VALUES () RETURNING `id`, `content`', | ||
params: [] | ||
query: post.insert([{ | ||
userId: 1 | ||
}, { | ||
content: 'hey', | ||
userId: 2 | ||
} | ||
]), | ||
pg: { | ||
text : 'INSERT INTO "post" ("userId", "content") VALUES ($1, DEFAULT), ($2, $3)', | ||
string: 'INSERT INTO "post" ("userId", "content") VALUES (1, DEFAULT), (2, \'hey\')', | ||
params: [1, 2, 'hey'] | ||
}, | ||
sqlite: { | ||
text : 'Sqlite requires the same number of columns in each insert row', | ||
throws: true | ||
}, | ||
mysql: { | ||
text : 'INSERT INTO `post` (`userId`, `content`) VALUES (?, DEFAULT), (?, ?)', | ||
string: 'INSERT INTO `post` (`userId`, `content`) VALUES (1, DEFAULT), (2, \'hey\')', | ||
params: [1, 2, 'hey'] | ||
} | ||
}); |
@@ -9,52 +9,94 @@ 'use strict'; | ||
Harness.test({ | ||
query : user.select(user.name, post.content).from(user.join(post).on(user.id.equals(post.userId))), | ||
pg : 'SELECT "user"."name", "post"."content" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId")', | ||
sqlite: 'SELECT "user"."name", "post"."content" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId")', | ||
mysql : 'SELECT `user`.`name`, `post`.`content` FROM `user` INNER JOIN `post` ON (`user`.`id` = `post`.`userId`)' | ||
query: user.select(user.name, post.content).from(user.join(post).on(user.id.equals(post.userId))), | ||
pg: { | ||
text : 'SELECT "user"."name", "post"."content" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId")', | ||
string: 'SELECT "user"."name", "post"."content" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId")' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."name", "post"."content" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId")', | ||
string: 'SELECT "user"."name", "post"."content" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId")' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`name`, `post`.`content` FROM `user` INNER JOIN `post` ON (`user`.`id` = `post`.`userId`)', | ||
string: 'SELECT `user`.`name`, `post`.`content` FROM `user` INNER JOIN `post` ON (`user`.`id` = `post`.`userId`)' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : user.join(post).on(user.id.equals(post.userId)), | ||
pg : '"user" INNER JOIN "post" ON ("user"."id" = "post"."userId")', | ||
sqlite: '"user" INNER JOIN "post" ON ("user"."id" = "post"."userId")', | ||
mysql : '`user` INNER JOIN `post` ON (`user`.`id` = `post`.`userId`)' | ||
query: user.join(post).on(user.id.equals(post.userId)), | ||
pg: { | ||
text : '"user" INNER JOIN "post" ON ("user"."id" = "post"."userId")', | ||
string: '"user" INNER JOIN "post" ON ("user"."id" = "post"."userId")' | ||
}, | ||
sqlite: { | ||
text : '"user" INNER JOIN "post" ON ("user"."id" = "post"."userId")', | ||
string: '"user" INNER JOIN "post" ON ("user"."id" = "post"."userId")' | ||
}, | ||
mysql: { | ||
text : '`user` INNER JOIN `post` ON (`user`.`id` = `post`.`userId`)', | ||
string: '`user` INNER JOIN `post` ON (`user`.`id` = `post`.`userId`)' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : user | ||
.select(user.name, post.content, comment.text) | ||
.from( | ||
user | ||
.join(post).on(user.id.equals(post.userId)) | ||
.join(comment).on(post.id.equals(comment.postId)) | ||
), | ||
pg : 'SELECT "user"."name", "post"."content", "comment"."text" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId")' + | ||
' INNER JOIN "comment" ON ("post"."id" = "comment"."postId")', | ||
sqlite: 'SELECT "user"."name", "post"."content", "comment"."text" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId")' + | ||
' INNER JOIN "comment" ON ("post"."id" = "comment"."postId")', | ||
mysql : 'SELECT `user`.`name`, `post`.`content`, `comment`.`text` FROM `user` INNER JOIN `post` ON (`user`.`id` = `post`.`userId`)' + | ||
' INNER JOIN `comment` ON (`post`.`id` = `comment`.`postId`)' | ||
query: user | ||
.select(user.name, post.content, comment.text) | ||
.from( | ||
user | ||
.join(post).on(user.id.equals(post.userId)) | ||
.join(comment).on(post.id.equals(comment.postId))), | ||
pg: { | ||
text : 'SELECT "user"."name", "post"."content", "comment"."text" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId") INNER JOIN "comment" ON ("post"."id" = "comment"."postId")', | ||
string: 'SELECT "user"."name", "post"."content", "comment"."text" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId") INNER JOIN "comment" ON ("post"."id" = "comment"."postId")' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."name", "post"."content", "comment"."text" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId") INNER JOIN "comment" ON ("post"."id" = "comment"."postId")', | ||
string: 'SELECT "user"."name", "post"."content", "comment"."text" FROM "user" INNER JOIN "post" ON ("user"."id" = "post"."userId") INNER JOIN "comment" ON ("post"."id" = "comment"."postId")' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`name`, `post`.`content`, `comment`.`text` FROM `user` INNER JOIN `post` ON (`user`.`id` = `post`.`userId`) INNER JOIN `comment` ON (`post`.`id` = `comment`.`postId`)', | ||
string: 'SELECT `user`.`name`, `post`.`content`, `comment`.`text` FROM `user` INNER JOIN `post` ON (`user`.`id` = `post`.`userId`) INNER JOIN `comment` ON (`post`.`id` = `comment`.`postId`)' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : user.select(user.name, post.content).from(user.leftJoin(post).on(user.id.equals(post.userId))), | ||
pg : 'SELECT "user"."name", "post"."content" FROM "user" LEFT JOIN "post" ON ("user"."id" = "post"."userId")', | ||
sqlite: 'SELECT "user"."name", "post"."content" FROM "user" LEFT JOIN "post" ON ("user"."id" = "post"."userId")', | ||
mysql : 'SELECT `user`.`name`, `post`.`content` FROM `user` LEFT JOIN `post` ON (`user`.`id` = `post`.`userId`)' | ||
query: user.select(user.name, post.content).from(user.leftJoin(post).on(user.id.equals(post.userId))), | ||
pg: { | ||
text : 'SELECT "user"."name", "post"."content" FROM "user" LEFT JOIN "post" ON ("user"."id" = "post"."userId")', | ||
string: 'SELECT "user"."name", "post"."content" FROM "user" LEFT JOIN "post" ON ("user"."id" = "post"."userId")' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."name", "post"."content" FROM "user" LEFT JOIN "post" ON ("user"."id" = "post"."userId")', | ||
string: 'SELECT "user"."name", "post"."content" FROM "user" LEFT JOIN "post" ON ("user"."id" = "post"."userId")' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`name`, `post`.`content` FROM `user` LEFT JOIN `post` ON (`user`.`id` = `post`.`userId`)', | ||
string: 'SELECT `user`.`name`, `post`.`content` FROM `user` LEFT JOIN `post` ON (`user`.`id` = `post`.`userId`)' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : user | ||
.select(user.name, post.content) | ||
.from( | ||
user | ||
.leftJoin(post).on(user.id.equals(post.userId)) | ||
.leftJoin(comment).on(post.id.equals(comment.postId)) | ||
), | ||
pg : 'SELECT "user"."name", "post"."content" FROM "user" LEFT JOIN "post" ON ("user"."id" = "post"."userId")' + | ||
' LEFT JOIN "comment" ON ("post"."id" = "comment"."postId")', | ||
sqlite: 'SELECT "user"."name", "post"."content" FROM "user" LEFT JOIN "post" ON ("user"."id" = "post"."userId")' + | ||
' LEFT JOIN "comment" ON ("post"."id" = "comment"."postId")', | ||
mysql : 'SELECT `user`.`name`, `post`.`content` FROM `user` LEFT JOIN `post` ON (`user`.`id` = `post`.`userId`)' + | ||
' LEFT JOIN `comment` ON (`post`.`id` = `comment`.`postId`)' | ||
query: user | ||
.select(user.name, post.content) | ||
.from( | ||
user | ||
.leftJoin(post).on(user.id.equals(post.userId)) | ||
.leftJoin(comment).on(post.id.equals(comment.postId))), | ||
pg: { | ||
text : 'SELECT "user"."name", "post"."content" FROM "user" LEFT JOIN "post" ON ("user"."id" = "post"."userId") LEFT JOIN "comment" ON ("post"."id" = "comment"."postId")', | ||
string: 'SELECT "user"."name", "post"."content" FROM "user" LEFT JOIN "post" ON ("user"."id" = "post"."userId") LEFT JOIN "comment" ON ("post"."id" = "comment"."postId")' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."name", "post"."content" FROM "user" LEFT JOIN "post" ON ("user"."id" = "post"."userId") LEFT JOIN "comment" ON ("post"."id" = "comment"."postId")', | ||
string: 'SELECT "user"."name", "post"."content" FROM "user" LEFT JOIN "post" ON ("user"."id" = "post"."userId") LEFT JOIN "comment" ON ("post"."id" = "comment"."postId")' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`name`, `post`.`content` FROM `user` LEFT JOIN `post` ON (`user`.`id` = `post`.`userId`) LEFT JOIN `comment` ON (`post`.`id` = `comment`.`postId`)', | ||
string: 'SELECT `user`.`name`, `post`.`content` FROM `user` LEFT JOIN `post` ON (`user`.`id` = `post`.`userId`) LEFT JOIN `comment` ON (`post`.`id` = `comment`.`postId`)' | ||
}, | ||
params: [] | ||
}); | ||
@@ -65,14 +107,24 @@ | ||
.select( | ||
post.content, | ||
post.userId.as('subpostUserId')) | ||
post.content, | ||
post.userId.as('subpostUserId')) | ||
.from(post); | ||
Harness.test({ | ||
query : user | ||
query: user | ||
.select(user.name, subposts.content) | ||
.from(user.join(subposts) | ||
.on(user.id.equals(subposts.subpostUserId))), | ||
pg : 'SELECT "user"."name", "subposts"."content" FROM "user" INNER JOIN (SELECT "post"."content", "post"."userId" AS "subpostUserId" FROM "post") subposts ON ("user"."id" = "subposts"."subpostUserId")', | ||
sqlite: 'SELECT "user"."name", "subposts"."content" FROM "user" INNER JOIN (SELECT "post"."content", "post"."userId" AS "subpostUserId" FROM "post") subposts ON ("user"."id" = "subposts"."subpostUserId")', | ||
mysql : 'SELECT `user`.`name`, `subposts`.`content` FROM `user` INNER JOIN (SELECT `post`.`content`, `post`.`userId` AS `subpostUserId` FROM `post`) subposts ON (`user`.`id` = `subposts`.`subpostUserId`)' | ||
pg: { | ||
text : 'SELECT "user"."name", "subposts"."content" FROM "user" INNER JOIN (SELECT "post"."content", "post"."userId" AS "subpostUserId" FROM "post") subposts ON ("user"."id" = "subposts"."subpostUserId")', | ||
string: 'SELECT "user"."name", "subposts"."content" FROM "user" INNER JOIN (SELECT "post"."content", "post"."userId" AS "subpostUserId" FROM "post") subposts ON ("user"."id" = "subposts"."subpostUserId")' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."name", "subposts"."content" FROM "user" INNER JOIN (SELECT "post"."content", "post"."userId" AS "subpostUserId" FROM "post") subposts ON ("user"."id" = "subposts"."subpostUserId")', | ||
string: 'SELECT "user"."name", "subposts"."content" FROM "user" INNER JOIN (SELECT "post"."content", "post"."userId" AS "subpostUserId" FROM "post") subposts ON ("user"."id" = "subposts"."subpostUserId")' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`name`, `subposts`.`content` FROM `user` INNER JOIN (SELECT `post`.`content`, `post`.`userId` AS `subpostUserId` FROM `post`) subposts ON (`user`.`id` = `subposts`.`subpostUserId`)', | ||
string: 'SELECT `user`.`name`, `subposts`.`content` FROM `user` INNER JOIN (SELECT `post`.`content`, `post`.`userId` AS `subpostUserId` FROM `post`) subposts ON (`user`.`id` = `subposts`.`subpostUserId`)' | ||
}, | ||
params: [] | ||
}); |
@@ -9,3 +9,5 @@ 'use strict'; | ||
columns: { | ||
id: { primaryKey: true } | ||
id: { | ||
primaryKey: true | ||
} | ||
} | ||
@@ -26,3 +28,5 @@ }); | ||
columns: { | ||
id: { primaryKey: true }, | ||
id: { | ||
primaryKey: true | ||
}, | ||
ownerId: { | ||
@@ -38,20 +42,50 @@ references: { | ||
Harness.test({ | ||
query : user.joinTo(post), | ||
pg : '"user" INNER JOIN "post" ON ("user"."id" = "post"."ownerId")', | ||
sqlite: '"user" INNER JOIN "post" ON ("user"."id" = "post"."ownerId")', | ||
mysql : '`user` INNER JOIN `post` ON (`user`.`id` = `post`.`ownerId`)' | ||
query: user.joinTo(post), | ||
pg: { | ||
text : '"user" INNER JOIN "post" ON ("user"."id" = "post"."ownerId")', | ||
string: '"user" INNER JOIN "post" ON ("user"."id" = "post"."ownerId")' | ||
}, | ||
sqlite: { | ||
text : '"user" INNER JOIN "post" ON ("user"."id" = "post"."ownerId")', | ||
string: '"user" INNER JOIN "post" ON ("user"."id" = "post"."ownerId")' | ||
}, | ||
mysql: { | ||
text : '`user` INNER JOIN `post` ON (`user`.`id` = `post`.`ownerId`)', | ||
string: '`user` INNER JOIN `post` ON (`user`.`id` = `post`.`ownerId`)' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : post.joinTo(user), | ||
pg : '"post" INNER JOIN "user" ON ("user"."id" = "post"."ownerId")', | ||
sqlite: '"post" INNER JOIN "user" ON ("user"."id" = "post"."ownerId")', | ||
mysql : '`post` INNER JOIN `user` ON (`user`.`id` = `post`.`ownerId`)' | ||
query: post.joinTo(user), | ||
pg: { | ||
text : '"post" INNER JOIN "user" ON ("user"."id" = "post"."ownerId")', | ||
string: '"post" INNER JOIN "user" ON ("user"."id" = "post"."ownerId")' | ||
}, | ||
sqlite: { | ||
text : '"post" INNER JOIN "user" ON ("user"."id" = "post"."ownerId")', | ||
string: '"post" INNER JOIN "user" ON ("user"."id" = "post"."ownerId")' | ||
}, | ||
mysql: { | ||
text : '`post` INNER JOIN `user` ON (`user`.`id` = `post`.`ownerId`)', | ||
string: '`post` INNER JOIN `user` ON (`user`.`id` = `post`.`ownerId`)' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : user.joinTo(photo), | ||
pg : '"user" INNER JOIN "photo" ON ("user"."id" = "photo"."ownerId")', | ||
sqlite: '"user" INNER JOIN "photo" ON ("user"."id" = "photo"."ownerId")', | ||
mysql : '`user` INNER JOIN `photo` ON (`user`.`id` = `photo`.`ownerId`)' | ||
query: user.joinTo(photo), | ||
pg: { | ||
text : '"user" INNER JOIN "photo" ON ("user"."id" = "photo"."ownerId")', | ||
string: '"user" INNER JOIN "photo" ON ("user"."id" = "photo"."ownerId")' | ||
}, | ||
sqlite: { | ||
text : '"user" INNER JOIN "photo" ON ("user"."id" = "photo"."ownerId")', | ||
string: '"user" INNER JOIN "photo" ON ("user"."id" = "photo"."ownerId")' | ||
}, | ||
mysql: { | ||
text : '`user` INNER JOIN `photo` ON (`user`.`id` = `photo`.`ownerId`)', | ||
string: '`user` INNER JOIN `photo` ON (`user`.`id` = `photo`.`ownerId`)' | ||
}, | ||
params: [] | ||
}); |
@@ -10,28 +10,71 @@ 'use strict'; | ||
Harness.test({ | ||
query : user.select(user.star()).from(user).order(user.name.asc).limit(1), | ||
pg : 'SELECT "user".* FROM "user" ORDER BY "user"."name" LIMIT 1', | ||
sqlite: 'SELECT "user".* FROM "user" ORDER BY "user"."name" LIMIT 1', | ||
mysql : 'SELECT `user`.* FROM `user` ORDER BY `user`.`name` LIMIT 1' | ||
query: user.select(user.star()).from(user).order(user.name.asc).limit(1), | ||
pg: { | ||
text : 'SELECT "user".* FROM "user" ORDER BY "user"."name" LIMIT 1', | ||
string: 'SELECT "user".* FROM "user" ORDER BY "user"."name" LIMIT 1' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user".* FROM "user" ORDER BY "user"."name" LIMIT 1', | ||
string: 'SELECT "user".* FROM "user" ORDER BY "user"."name" LIMIT 1' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.* FROM `user` ORDER BY `user`.`name` LIMIT 1', | ||
string: 'SELECT `user`.* FROM `user` ORDER BY `user`.`name` LIMIT 1' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : user.select(user.star()).from(user).order(user.name.asc).limit(3).offset(6), | ||
pg : 'SELECT "user".* FROM "user" ORDER BY "user"."name" LIMIT 3 OFFSET 6', | ||
sqlite: 'SELECT "user".* FROM "user" ORDER BY "user"."name" LIMIT 3 OFFSET 6', | ||
mysql : 'SELECT `user`.* FROM `user` ORDER BY `user`.`name` LIMIT 3 OFFSET 6' | ||
query: user.select(user.star()).from(user).order(user.name.asc).limit(3).offset(6), | ||
pg: { | ||
text : 'SELECT "user".* FROM "user" ORDER BY "user"."name" LIMIT 3 OFFSET 6', | ||
string: 'SELECT "user".* FROM "user" ORDER BY "user"."name" LIMIT 3 OFFSET 6' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user".* FROM "user" ORDER BY "user"."name" LIMIT 3 OFFSET 6', | ||
string: 'SELECT "user".* FROM "user" ORDER BY "user"."name" LIMIT 3 OFFSET 6' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.* FROM `user` ORDER BY `user`.`name` LIMIT 3 OFFSET 6', | ||
string: 'SELECT `user`.* FROM `user` ORDER BY `user`.`name` LIMIT 3 OFFSET 6' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : user.select(user.star()).from(user).order(user.name.asc).offset(10), | ||
pg : 'SELECT "user".* FROM "user" ORDER BY "user"."name" OFFSET 10', | ||
sqlite: 'SELECT "user".* FROM "user" ORDER BY "user"."name" OFFSET 10', | ||
mysql : 'SELECT `user`.* FROM `user` ORDER BY `user`.`name` OFFSET 10' | ||
query: user.select(user.star()).from(user).order(user.name.asc).offset(10), | ||
pg: { | ||
text : 'SELECT "user".* FROM "user" ORDER BY "user"."name" OFFSET 10', | ||
string: 'SELECT "user".* FROM "user" ORDER BY "user"."name" OFFSET 10' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user".* FROM "user" ORDER BY "user"."name" OFFSET 10', | ||
string: 'SELECT "user".* FROM "user" ORDER BY "user"."name" OFFSET 10' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.* FROM `user` ORDER BY `user`.`name` OFFSET 10', | ||
string: 'SELECT `user`.* FROM `user` ORDER BY `user`.`name` OFFSET 10' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : user.select(user.star()).where({name: 'John'}).offset(user.subQuery().select('FLOOR(RANDOM() * COUNT(*))').where({name: 'John'})).limit(1), | ||
pg : 'SELECT "user".* FROM "user" WHERE ("user"."name" = $1) OFFSET (SELECT FLOOR(RANDOM() * COUNT(*)) FROM "user" WHERE ("user"."name" = $2)) LIMIT 1', | ||
sqlite: 'SELECT "user".* FROM "user" WHERE ("user"."name" = $1) OFFSET (SELECT FLOOR(RANDOM() * COUNT(*)) FROM "user" WHERE ("user"."name" = $2)) LIMIT 1', | ||
mysql : 'SELECT `user`.* FROM `user` WHERE (`user`.`name` = ?) OFFSET (SELECT FLOOR(RANDOM() * COUNT(*)) FROM `user` WHERE (`user`.`name` = ?)) LIMIT 1', | ||
query: user.select(user.star()).where({ | ||
name: 'John' | ||
}).offset(user.subQuery().select('FLOOR(RANDOM() * COUNT(*))').where({ | ||
name: 'John' | ||
})).limit(1), | ||
pg: { | ||
text : 'SELECT "user".* FROM "user" WHERE ("user"."name" = $1) OFFSET (SELECT FLOOR(RANDOM() * COUNT(*)) FROM "user" WHERE ("user"."name" = $2)) LIMIT 1', | ||
string: 'SELECT "user".* FROM "user" WHERE ("user"."name" = \'John\') OFFSET (SELECT FLOOR(RANDOM() * COUNT(*)) FROM "user" WHERE ("user"."name" = \'John\')) LIMIT 1' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user".* FROM "user" WHERE ("user"."name" = $1) OFFSET (SELECT FLOOR(RANDOM() * COUNT(*)) FROM "user" WHERE ("user"."name" = $2)) LIMIT 1', | ||
string: 'SELECT "user".* FROM "user" WHERE ("user"."name" = \'John\') OFFSET (SELECT FLOOR(RANDOM() * COUNT(*)) FROM "user" WHERE ("user"."name" = \'John\')) LIMIT 1' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.* FROM `user` WHERE (`user`.`name` = ?) OFFSET (SELECT FLOOR(RANDOM() * COUNT(*)) FROM `user` WHERE (`user`.`name` = ?)) LIMIT 1', | ||
string: 'SELECT `user`.* FROM `user` WHERE (`user`.`name` = \'John\') OFFSET (SELECT FLOOR(RANDOM() * COUNT(*)) FROM `user` WHERE (`user`.`name` = \'John\')) LIMIT 1' | ||
}, | ||
values: ['John', 'John'] | ||
}); |
'use strict'; | ||
var Harness = require('./support'); | ||
var Table = require(__dirname + '/../../lib/table'); | ||
var Table = require('../../lib/table'); | ||
var user = Harness.defineUserTable(); | ||
@@ -10,13 +10,33 @@ var post = Harness.definePostTable(); | ||
Harness.test({ | ||
query : u.select(u.name).from(u), | ||
pg :'SELECT "u"."name" FROM "user" AS "u"', | ||
sqlite:'SELECT "u"."name" FROM "user" AS "u"', | ||
mysql :'SELECT `u`.`name` FROM `user` AS `u`' | ||
query: u.select(u.name).from(u), | ||
pg: { | ||
text : 'SELECT "u"."name" FROM "user" AS "u"', | ||
string: 'SELECT "u"."name" FROM "user" AS "u"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "u"."name" FROM "user" AS "u"', | ||
string: 'SELECT "u"."name" FROM "user" AS "u"' | ||
}, | ||
mysql: { | ||
text : 'SELECT `u`.`name` FROM `user` AS `u`', | ||
string: 'SELECT `u`.`name` FROM `user` AS `u`' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : u.select(u.star()).from(u), | ||
pg : 'SELECT "u".* FROM "user" AS "u"', | ||
sqlite: 'SELECT "u".* FROM "user" AS "u"', | ||
mysql : 'SELECT `u`.* FROM `user` AS `u`' | ||
query: u.select(u.star()).from(u), | ||
pg: { | ||
text : 'SELECT "u".* FROM "user" AS "u"', | ||
string: 'SELECT "u".* FROM "user" AS "u"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "u".* FROM "user" AS "u"', | ||
string: 'SELECT "u".* FROM "user" AS "u"' | ||
}, | ||
mysql: { | ||
text : 'SELECT `u`.* FROM `user` AS `u`', | ||
string: 'SELECT `u`.* FROM `user` AS `u`' | ||
}, | ||
params: [] | ||
}); | ||
@@ -26,14 +46,33 @@ | ||
Harness.test({ | ||
query : u.select(u.name).from(u.join(p).on(u.id.equals(p.userId).and(p.id.equals(3)))), | ||
pg : 'SELECT "u"."name" FROM "user" AS "u" INNER JOIN "post" AS "p" ON (("u"."id" = "p"."userId") AND ("p"."id" = $1))', | ||
sqlite: 'SELECT "u"."name" FROM "user" AS "u" INNER JOIN "post" AS "p" ON (("u"."id" = "p"."userId") AND ("p"."id" = $1))', | ||
mysql : 'SELECT `u`.`name` FROM `user` AS `u` INNER JOIN `post` AS `p` ON ((`u`.`id` = `p`.`userId`) AND (`p`.`id` = ?))', | ||
params : [3] | ||
query: u.select(u.name).from(u.join(p).on(u.id.equals(p.userId).and(p.id.equals(3)))), | ||
pg: { | ||
text : 'SELECT "u"."name" FROM "user" AS "u" INNER JOIN "post" AS "p" ON (("u"."id" = "p"."userId") AND ("p"."id" = $1))', | ||
string: 'SELECT "u"."name" FROM "user" AS "u" INNER JOIN "post" AS "p" ON (("u"."id" = "p"."userId") AND ("p"."id" = 3))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "u"."name" FROM "user" AS "u" INNER JOIN "post" AS "p" ON (("u"."id" = "p"."userId") AND ("p"."id" = $1))', | ||
string: 'SELECT "u"."name" FROM "user" AS "u" INNER JOIN "post" AS "p" ON (("u"."id" = "p"."userId") AND ("p"."id" = 3))' | ||
}, | ||
mysql: { | ||
text : 'SELECT `u`.`name` FROM `user` AS `u` INNER JOIN `post` AS `p` ON ((`u`.`id` = `p`.`userId`) AND (`p`.`id` = ?))', | ||
string: 'SELECT `u`.`name` FROM `user` AS `u` INNER JOIN `post` AS `p` ON ((`u`.`id` = `p`.`userId`) AND (`p`.`id` = 3))' | ||
}, | ||
params: [3] | ||
}); | ||
Harness.test({ | ||
query : u.select(p.content, u.name).from(u.join(p).on(u.id.equals(p.userId).and(p.content.isNotNull()))), | ||
pg : 'SELECT "p"."content", "u"."name" FROM "user" AS "u" INNER JOIN "post" AS "p" ON (("u"."id" = "p"."userId") AND ("p"."content" IS NOT NULL))', | ||
sqlite: 'SELECT "p"."content", "u"."name" FROM "user" AS "u" INNER JOIN "post" AS "p" ON (("u"."id" = "p"."userId") AND ("p"."content" IS NOT NULL))', | ||
mysql : 'SELECT `p`.`content`, `u`.`name` FROM `user` AS `u` INNER JOIN `post` AS `p` ON ((`u`.`id` = `p`.`userId`) AND (`p`.`content` IS NOT NULL))' | ||
query: u.select(p.content, u.name).from(u.join(p).on(u.id.equals(p.userId).and(p.content.isNotNull()))), | ||
pg: { | ||
text : 'SELECT "p"."content", "u"."name" FROM "user" AS "u" INNER JOIN "post" AS "p" ON (("u"."id" = "p"."userId") AND ("p"."content" IS NOT NULL))', | ||
string: 'SELECT "p"."content", "u"."name" FROM "user" AS "u" INNER JOIN "post" AS "p" ON (("u"."id" = "p"."userId") AND ("p"."content" IS NOT NULL))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "p"."content", "u"."name" FROM "user" AS "u" INNER JOIN "post" AS "p" ON (("u"."id" = "p"."userId") AND ("p"."content" IS NOT NULL))', | ||
string: 'SELECT "p"."content", "u"."name" FROM "user" AS "u" INNER JOIN "post" AS "p" ON (("u"."id" = "p"."userId") AND ("p"."content" IS NOT NULL))' | ||
}, | ||
mysql: { | ||
text : 'SELECT `p`.`content`, `u`.`name` FROM `user` AS `u` INNER JOIN `post` AS `p` ON ((`u`.`id` = `p`.`userId`) AND (`p`.`content` IS NOT NULL))', | ||
string: 'SELECT `p`.`content`, `u`.`name` FROM `user` AS `u` INNER JOIN `post` AS `p` ON ((`u`.`id` = `p`.`userId`) AND (`p`.`content` IS NOT NULL))' | ||
}, | ||
params: [] | ||
}); | ||
@@ -45,15 +84,26 @@ | ||
columns: [{ | ||
name: 'text', | ||
quote: true | ||
}, { | ||
name: 'userId', | ||
quote: false | ||
}] | ||
name: 'text', | ||
quote: true | ||
}, { | ||
name: 'userId', | ||
quote: false | ||
} | ||
] | ||
}); | ||
Harness.test({ | ||
query : comment.select(comment.text, comment.userId), | ||
pg : 'SELECT "comment"."text", "comment"."userId" FROM "comment"', | ||
sqlite: 'SELECT "comment"."text", "comment"."userId" FROM "comment"', | ||
mysql : 'SELECT `comment`.`text`, `comment`.`userId` FROM `comment`' | ||
query: comment.select(comment.text, comment.userId), | ||
pg: { | ||
text : 'SELECT "comment"."text", "comment"."userId" FROM "comment"', | ||
string: 'SELECT "comment"."text", "comment"."userId" FROM "comment"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "comment"."text", "comment"."userId" FROM "comment"', | ||
string: 'SELECT "comment"."text", "comment"."userId" FROM "comment"' | ||
}, | ||
mysql: { | ||
text : 'SELECT `comment`.`text`, `comment`.`userId` FROM `comment`', | ||
string: 'SELECT `comment`.`text`, `comment`.`userId` FROM `comment`' | ||
}, | ||
params: [] | ||
}); |
@@ -7,27 +7,67 @@ 'use strict'; | ||
Harness.test({ | ||
query : post.select(post.content).order(post.content), | ||
pg : 'SELECT "post"."content" FROM "post" ORDER BY "post"."content"', | ||
sqlite: 'SELECT "post"."content" FROM "post" ORDER BY "post"."content"', | ||
mysql : 'SELECT `post`.`content` FROM `post` ORDER BY `post`.`content`' | ||
query: post.select(post.content).order(post.content), | ||
pg: { | ||
text : 'SELECT "post"."content" FROM "post" ORDER BY "post"."content"', | ||
string: 'SELECT "post"."content" FROM "post" ORDER BY "post"."content"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "post"."content" FROM "post" ORDER BY "post"."content"', | ||
string: 'SELECT "post"."content" FROM "post" ORDER BY "post"."content"' | ||
}, | ||
mysql: { | ||
text : 'SELECT `post`.`content` FROM `post` ORDER BY `post`.`content`', | ||
string: 'SELECT `post`.`content` FROM `post` ORDER BY `post`.`content`' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : post.select(post.content).order(post.content, post.userId.descending), | ||
pg : 'SELECT "post"."content" FROM "post" ORDER BY "post"."content", "post"."userId" DESC', | ||
sqlite: 'SELECT "post"."content" FROM "post" ORDER BY "post"."content", "post"."userId" DESC', | ||
mysql : 'SELECT `post`.`content` FROM `post` ORDER BY `post`.`content`, `post`.`userId` DESC' | ||
query: post.select(post.content).order(post.content, post.userId.descending), | ||
pg: { | ||
text : 'SELECT "post"."content" FROM "post" ORDER BY "post"."content", "post"."userId" DESC', | ||
string: 'SELECT "post"."content" FROM "post" ORDER BY "post"."content", "post"."userId" DESC' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "post"."content" FROM "post" ORDER BY "post"."content", "post"."userId" DESC', | ||
string: 'SELECT "post"."content" FROM "post" ORDER BY "post"."content", "post"."userId" DESC' | ||
}, | ||
mysql: { | ||
text : 'SELECT `post`.`content` FROM `post` ORDER BY `post`.`content`, `post`.`userId` DESC', | ||
string: 'SELECT `post`.`content` FROM `post` ORDER BY `post`.`content`, `post`.`userId` DESC' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : post.select(post.content).order(post.content.asc, post.userId.desc), | ||
pg : 'SELECT "post"."content" FROM "post" ORDER BY "post"."content", "post"."userId" DESC', | ||
sqlite: 'SELECT "post"."content" FROM "post" ORDER BY "post"."content", "post"."userId" DESC', | ||
mysql : 'SELECT `post`.`content` FROM `post` ORDER BY `post`.`content`, `post`.`userId` DESC' | ||
query: post.select(post.content).order(post.content.asc, post.userId.desc), | ||
pg: { | ||
text : 'SELECT "post"."content" FROM "post" ORDER BY "post"."content", "post"."userId" DESC', | ||
string: 'SELECT "post"."content" FROM "post" ORDER BY "post"."content", "post"."userId" DESC' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "post"."content" FROM "post" ORDER BY "post"."content", "post"."userId" DESC', | ||
string: 'SELECT "post"."content" FROM "post" ORDER BY "post"."content", "post"."userId" DESC' | ||
}, | ||
mysql: { | ||
text : 'SELECT `post`.`content` FROM `post` ORDER BY `post`.`content`, `post`.`userId` DESC', | ||
string: 'SELECT `post`.`content` FROM `post` ORDER BY `post`.`content`, `post`.`userId` DESC' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : post.select(post.content).order([post.content, post.userId.descending]), | ||
pg : 'SELECT "post"."content" FROM "post" ORDER BY "post"."content", "post"."userId" DESC', | ||
sqlite: 'SELECT "post"."content" FROM "post" ORDER BY "post"."content", "post"."userId" DESC', | ||
mysql : 'SELECT `post`.`content` FROM `post` ORDER BY `post`.`content`, `post`.`userId` DESC' | ||
query: post.select(post.content).order([post.content, post.userId.descending]), | ||
pg: { | ||
text : 'SELECT "post"."content" FROM "post" ORDER BY "post"."content", "post"."userId" DESC', | ||
string: 'SELECT "post"."content" FROM "post" ORDER BY "post"."content", "post"."userId" DESC' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "post"."content" FROM "post" ORDER BY "post"."content", "post"."userId" DESC', | ||
string: 'SELECT "post"."content" FROM "post" ORDER BY "post"."content", "post"."userId" DESC' | ||
}, | ||
mysql: { | ||
text : 'SELECT `post`.`content` FROM `post` ORDER BY `post`.`content`, `post`.`userId` DESC', | ||
string: 'SELECT `post`.`content` FROM `post` ORDER BY `post`.`content`, `post`.`userId` DESC' | ||
}, | ||
params: [] | ||
}); |
@@ -10,17 +10,37 @@ 'use strict'; | ||
quote: true, | ||
columns: ['id','name'] | ||
columns: ['id', 'name'] | ||
}); | ||
Harness.test({ | ||
query : userWithSchema.select(userWithSchema.id).from(userWithSchema), | ||
pg : 'SELECT "staging"."user"."id" FROM "staging"."user"', | ||
sqlite: 'SELECT "staging"."user"."id" FROM "staging"."user"', | ||
mysql : 'SELECT `staging`.`user`.`id` FROM `staging`.`user`' | ||
query: userWithSchema.select(userWithSchema.id).from(userWithSchema), | ||
pg: { | ||
text : 'SELECT "staging"."user"."id" FROM "staging"."user"', | ||
string: 'SELECT "staging"."user"."id" FROM "staging"."user"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "staging"."user"."id" FROM "staging"."user"', | ||
string: 'SELECT "staging"."user"."id" FROM "staging"."user"' | ||
}, | ||
mysql: { | ||
text : 'SELECT `staging`.`user`.`id` FROM `staging`.`user`', | ||
string: 'SELECT `staging`.`user`.`id` FROM `staging`.`user`' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : userWithSchema.select(userWithSchema.id, userWithSchema.name).from(userWithSchema), | ||
pg : 'SELECT "staging"."user"."id", "staging"."user"."name" FROM "staging"."user"', | ||
sqlite: 'SELECT "staging"."user"."id", "staging"."user"."name" FROM "staging"."user"', | ||
mysql : 'SELECT `staging`.`user`.`id`, `staging`.`user`.`name` FROM `staging`.`user`' | ||
query: userWithSchema.select(userWithSchema.id, userWithSchema.name).from(userWithSchema), | ||
pg: { | ||
text : 'SELECT "staging"."user"."id", "staging"."user"."name" FROM "staging"."user"', | ||
string: 'SELECT "staging"."user"."id", "staging"."user"."name" FROM "staging"."user"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "staging"."user"."id", "staging"."user"."name" FROM "staging"."user"', | ||
string: 'SELECT "staging"."user"."id", "staging"."user"."name" FROM "staging"."user"' | ||
}, | ||
mysql: { | ||
text : 'SELECT `staging`.`user`.`id`, `staging`.`user`.`name` FROM `staging`.`user`', | ||
string: 'SELECT `staging`.`user`.`id`, `staging`.`user`.`name` FROM `staging`.`user`' | ||
}, | ||
params: [] | ||
}); | ||
@@ -30,6 +50,16 @@ | ||
Harness.test({ | ||
query : uws.select(uws.name).from(uws), | ||
pg :'SELECT "uws"."name" FROM "staging"."user" AS "uws"', | ||
sqlite:'SELECT "uws"."name" FROM "staging"."user" AS "uws"', | ||
mysql :'SELECT `uws`.`name` FROM `staging`.`user` AS `uws`' | ||
query: uws.select(uws.name).from(uws), | ||
pg: { | ||
text : 'SELECT "uws"."name" FROM "staging"."user" AS "uws"', | ||
string: 'SELECT "uws"."name" FROM "staging"."user" AS "uws"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "uws"."name" FROM "staging"."user" AS "uws"', | ||
string: 'SELECT "uws"."name" FROM "staging"."user" AS "uws"' | ||
}, | ||
mysql: { | ||
text : 'SELECT `uws`.`name` FROM `staging`.`user` AS `uws`', | ||
string: 'SELECT `uws`.`name` FROM `staging`.`user` AS `uws`' | ||
}, | ||
params: [] | ||
}); | ||
@@ -44,13 +74,33 @@ | ||
Harness.test({ | ||
query : userWithSchema.select(userWithSchema.name, postWithSchema.content).from(userWithSchema.join(postWithSchema).on(userWithSchema.id.equals(postWithSchema.userId))), | ||
pg : 'SELECT "staging"."user"."name", "dev"."post"."content" FROM "staging"."user" INNER JOIN "dev"."post" ON ("staging"."user"."id" = "dev"."post"."userId")', | ||
sqlite: 'SELECT "staging"."user"."name", "dev"."post"."content" FROM "staging"."user" INNER JOIN "dev"."post" ON ("staging"."user"."id" = "dev"."post"."userId")', | ||
mysql : 'SELECT `staging`.`user`.`name`, `dev`.`post`.`content` FROM `staging`.`user` INNER JOIN `dev`.`post` ON (`staging`.`user`.`id` = `dev`.`post`.`userId`)' | ||
query: userWithSchema.select(userWithSchema.name, postWithSchema.content).from(userWithSchema.join(postWithSchema).on(userWithSchema.id.equals(postWithSchema.userId))), | ||
pg: { | ||
text : 'SELECT "staging"."user"."name", "dev"."post"."content" FROM "staging"."user" INNER JOIN "dev"."post" ON ("staging"."user"."id" = "dev"."post"."userId")', | ||
string: 'SELECT "staging"."user"."name", "dev"."post"."content" FROM "staging"."user" INNER JOIN "dev"."post" ON ("staging"."user"."id" = "dev"."post"."userId")' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "staging"."user"."name", "dev"."post"."content" FROM "staging"."user" INNER JOIN "dev"."post" ON ("staging"."user"."id" = "dev"."post"."userId")', | ||
string: 'SELECT "staging"."user"."name", "dev"."post"."content" FROM "staging"."user" INNER JOIN "dev"."post" ON ("staging"."user"."id" = "dev"."post"."userId")' | ||
}, | ||
mysql: { | ||
text : 'SELECT `staging`.`user`.`name`, `dev`.`post`.`content` FROM `staging`.`user` INNER JOIN `dev`.`post` ON (`staging`.`user`.`id` = `dev`.`post`.`userId`)', | ||
string: 'SELECT `staging`.`user`.`name`, `dev`.`post`.`content` FROM `staging`.`user` INNER JOIN `dev`.`post` ON (`staging`.`user`.`id` = `dev`.`post`.`userId`)' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : uws.select(uws.name, postWithSchema.content).from(uws.join(postWithSchema).on(uws.id.equals(postWithSchema.userId))), | ||
pg : 'SELECT "uws"."name", "dev"."post"."content" FROM "staging"."user" AS "uws" INNER JOIN "dev"."post" ON ("uws"."id" = "dev"."post"."userId")', | ||
sqlite: 'SELECT "uws"."name", "dev"."post"."content" FROM "staging"."user" AS "uws" INNER JOIN "dev"."post" ON ("uws"."id" = "dev"."post"."userId")', | ||
mysql : 'SELECT `uws`.`name`, `dev`.`post`.`content` FROM `staging`.`user` AS `uws` INNER JOIN `dev`.`post` ON (`uws`.`id` = `dev`.`post`.`userId`)' | ||
query: uws.select(uws.name, postWithSchema.content).from(uws.join(postWithSchema).on(uws.id.equals(postWithSchema.userId))), | ||
pg: { | ||
text : 'SELECT "uws"."name", "dev"."post"."content" FROM "staging"."user" AS "uws" INNER JOIN "dev"."post" ON ("uws"."id" = "dev"."post"."userId")', | ||
string: 'SELECT "uws"."name", "dev"."post"."content" FROM "staging"."user" AS "uws" INNER JOIN "dev"."post" ON ("uws"."id" = "dev"."post"."userId")' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "uws"."name", "dev"."post"."content" FROM "staging"."user" AS "uws" INNER JOIN "dev"."post" ON ("uws"."id" = "dev"."post"."userId")', | ||
string: 'SELECT "uws"."name", "dev"."post"."content" FROM "staging"."user" AS "uws" INNER JOIN "dev"."post" ON ("uws"."id" = "dev"."post"."userId")' | ||
}, | ||
mysql: { | ||
text : 'SELECT `uws`.`name`, `dev`.`post`.`content` FROM `staging`.`user` AS `uws` INNER JOIN `dev`.`post` ON (`uws`.`id` = `dev`.`post`.`userId`)', | ||
string: 'SELECT `uws`.`name`, `dev`.`post`.`content` FROM `staging`.`user` AS `uws` INNER JOIN `dev`.`post` ON (`uws`.`id` = `dev`.`post`.`userId`)' | ||
}, | ||
params: [] | ||
}); |
@@ -7,6 +7,16 @@ 'use strict'; | ||
Harness.test({ | ||
query : post.select(post.id).select(post.content), | ||
pg : 'SELECT "post"."id", "post"."content" FROM "post"', | ||
sqlite: 'SELECT "post"."id", "post"."content" FROM "post"', | ||
mysql : 'SELECT `post`.`id`, `post`.`content` FROM `post`' | ||
query: post.select(post.id).select(post.content), | ||
pg: { | ||
text : 'SELECT "post"."id", "post"."content" FROM "post"', | ||
string: 'SELECT "post"."id", "post"."content" FROM "post"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "post"."id", "post"."content" FROM "post"', | ||
string: 'SELECT "post"."id", "post"."content" FROM "post"' | ||
}, | ||
mysql: { | ||
text : 'SELECT `post`.`id`, `post`.`content` FROM `post`', | ||
string: 'SELECT `post`.`id`, `post`.`content` FROM `post`' | ||
}, | ||
params: [] | ||
}); |
@@ -9,22 +9,50 @@ 'use strict'; | ||
Harness.test({ | ||
query : user, | ||
pg : 'SELECT "user".* FROM "user"', | ||
sqlite: 'SELECT "user".* FROM "user"', | ||
mysql : 'SELECT `user`.* FROM `user`' | ||
query: user, | ||
pg: { | ||
text : 'SELECT "user".* FROM "user"', | ||
string: 'SELECT "user".* FROM "user"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user".* FROM "user"', | ||
string: 'SELECT "user".* FROM "user"' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.* FROM `user`', | ||
string: 'SELECT `user`.* FROM `user`' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : user.where(user.name.equals(3)), | ||
pg : 'SELECT * FROM "user" WHERE ("user"."name" = $1)', | ||
sqlite: 'SELECT * FROM "user" WHERE ("user"."name" = $1)', | ||
mysql : 'SELECT * FROM `user` WHERE (`user`.`name` = ?)', | ||
params : [3] | ||
query: user.where(user.name.equals(3)), | ||
pg: { | ||
text : 'SELECT * FROM "user" WHERE ("user"."name" = $1)', | ||
string: 'SELECT * FROM "user" WHERE ("user"."name" = 3)' | ||
}, | ||
sqlite: { | ||
text : 'SELECT * FROM "user" WHERE ("user"."name" = $1)', | ||
string: 'SELECT * FROM "user" WHERE ("user"."name" = 3)' | ||
}, | ||
mysql: { | ||
text : 'SELECT * FROM `user` WHERE (`user`.`name` = ?)', | ||
string: 'SELECT * FROM `user` WHERE (`user`.`name` = 3)' | ||
}, | ||
params: [3] | ||
}); | ||
Harness.test({ | ||
query : user.where(user.name.equals(3)).where(user.id.equals(1)), | ||
pg : 'SELECT * FROM "user" WHERE (("user"."name" = $1) AND ("user"."id" = $2))', | ||
sqlite: 'SELECT * FROM "user" WHERE (("user"."name" = $1) AND ("user"."id" = $2))', | ||
mysql : 'SELECT * FROM `user` WHERE ((`user`.`name` = ?) AND (`user`.`id` = ?))', | ||
params: [3,1] | ||
query: user.where(user.name.equals(3)).where(user.id.equals(1)), | ||
pg: { | ||
text : 'SELECT * FROM "user" WHERE (("user"."name" = $1) AND ("user"."id" = $2))', | ||
string: 'SELECT * FROM "user" WHERE (("user"."name" = 3) AND ("user"."id" = 1))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT * FROM "user" WHERE (("user"."name" = $1) AND ("user"."id" = $2))', | ||
string: 'SELECT * FROM "user" WHERE (("user"."name" = 3) AND ("user"."id" = 1))' | ||
}, | ||
mysql: { | ||
text : 'SELECT * FROM `user` WHERE ((`user`.`name` = ?) AND (`user`.`id` = ?))', | ||
string: 'SELECT * FROM `user` WHERE ((`user`.`name` = 3) AND (`user`.`id` = 1))' | ||
}, | ||
params: [3, 1] | ||
}); | ||
@@ -34,13 +62,32 @@ | ||
Harness.test({ | ||
query : post.select(post.content), | ||
pg : 'SELECT "post"."content" FROM "post"', | ||
sqlite: 'SELECT "post"."content" FROM "post"', | ||
mysql : 'SELECT `post`.`content` FROM `post`' | ||
query: post.select(post.content), | ||
pg: { | ||
text : 'SELECT "post"."content" FROM "post"', | ||
string: 'SELECT "post"."content" FROM "post"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "post"."content" FROM "post"', | ||
string: 'SELECT "post"."content" FROM "post"' | ||
}, | ||
mysql: { | ||
text : 'SELECT `post`.`content` FROM `post`', | ||
string: 'SELECT `post`.`content` FROM `post`' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : post.select(post.content).where(post.userId.equals(1)), | ||
pg : 'SELECT "post"."content" FROM "post" WHERE ("post"."userId" = $1)', | ||
sqlite: 'SELECT "post"."content" FROM "post" WHERE ("post"."userId" = $1)', | ||
mysql : 'SELECT `post`.`content` FROM `post` WHERE (`post`.`userId` = ?)', | ||
query: post.select(post.content).where(post.userId.equals(1)), | ||
pg: { | ||
text : 'SELECT "post"."content" FROM "post" WHERE ("post"."userId" = $1)', | ||
string: 'SELECT "post"."content" FROM "post" WHERE ("post"."userId" = 1)' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "post"."content" FROM "post" WHERE ("post"."userId" = $1)', | ||
string: 'SELECT "post"."content" FROM "post" WHERE ("post"."userId" = 1)' | ||
}, | ||
mysql: { | ||
text : 'SELECT `post`.`content` FROM `post` WHERE (`post`.`userId` = ?)', | ||
string: 'SELECT `post`.`content` FROM `post` WHERE (`post`.`userId` = 1)' | ||
}, | ||
params: [1] | ||
@@ -50,7 +97,20 @@ }); | ||
Harness.test({ | ||
query : post.where(post.content.isNull()).or({content: ''}).and({userId: 1}), | ||
pg : 'SELECT * FROM "post" WHERE ((("post"."content" IS NULL) OR ("post"."content" = $1)) AND ("post"."userId" = $2))', | ||
sqlite: 'SELECT * FROM "post" WHERE ((("post"."content" IS NULL) OR ("post"."content" = $1)) AND ("post"."userId" = $2))', | ||
mysql : 'SELECT * FROM `post` WHERE (((`post`.`content` IS NULL) OR (`post`.`content` = ?)) AND (`post`.`userId` = ?))', | ||
query: post.where(post.content.isNull()).or({ | ||
content: '' | ||
}).and({ | ||
userId: 1 | ||
}), | ||
pg: { | ||
text : 'SELECT * FROM "post" WHERE ((("post"."content" IS NULL) OR ("post"."content" = $1)) AND ("post"."userId" = $2))', | ||
string: 'SELECT * FROM "post" WHERE ((("post"."content" IS NULL) OR ("post"."content" = \'\')) AND ("post"."userId" = 1))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT * FROM "post" WHERE ((("post"."content" IS NULL) OR ("post"."content" = $1)) AND ("post"."userId" = $2))', | ||
string: 'SELECT * FROM "post" WHERE ((("post"."content" IS NULL) OR ("post"."content" = \'\')) AND ("post"."userId" = 1))' | ||
}, | ||
mysql: { | ||
text : 'SELECT * FROM `post` WHERE (((`post`.`content` IS NULL) OR (`post`.`content` = ?)) AND (`post`.`userId` = ?))', | ||
string: 'SELECT * FROM `post` WHERE (((`post`.`content` IS NULL) OR (`post`.`content` = \'\')) AND (`post`.`userId` = 1))' | ||
}, | ||
params: ['', 1] | ||
}); |
@@ -5,32 +5,29 @@ /* global test */ | ||
var Table = require(__dirname + '/../../lib/table'); | ||
var Table = require('../../lib/table'); | ||
// specify dialect classes | ||
var dialects = { | ||
pg : require('../../lib/dialect/postgres'), | ||
sqlite: require('../../lib/dialect/sqlite'), | ||
mysql : require('../../lib/dialect/mysql') | ||
pg : require('../../lib/dialect/postgres'), | ||
sqlite : require('../../lib/dialect/sqlite'), | ||
mysql : require('../../lib/dialect/mysql') | ||
}; | ||
module.exports = { | ||
test: function(expected) { | ||
test: function(expected) { | ||
// for each dialect | ||
Object.keys(dialects).forEach(function(dialect) { | ||
if(expected[dialect]) { | ||
var expectedObject = expected[dialect]; | ||
if (undefined !== expectedObject) { | ||
var DialectClass = dialects[dialect]; | ||
var title = dialect+': '+(expected.title || expected[dialect].text || expected[dialect]); | ||
var title = dialect + ': ' + (expected.title || expectedObject.text || expectedObject); | ||
test(title, function() { | ||
// check if this query is expected to throw | ||
if(expected[dialect].throws) { | ||
if (expectedObject.throws) { | ||
assert.throws(function() { | ||
new DialectClass().getQuery(expected.query); | ||
}); | ||
} else { | ||
// build query for dialect | ||
@@ -40,32 +37,42 @@ var compiledQuery = new DialectClass().getQuery(expected.query); | ||
// test result is correct | ||
var expectedText = expected[dialect].text || expected[dialect]; | ||
assert.equal(compiledQuery.text, expectedText,'query result'); | ||
var expectedText = expectedObject.text || expectedObject; | ||
assert.equal(compiledQuery.text, expectedText, 'query result'); | ||
// if params are specified then test these are correct | ||
var expectedParams = expected[dialect].params || expected.params; | ||
if(expectedParams) { | ||
var expectedParams = expectedObject.params || expected.params; | ||
if (undefined !== expectedParams) { | ||
assert.equal(expectedParams.length, compiledQuery.values.length, 'params length'); | ||
for(var i = 0; i < expectedParams.length; i++) { | ||
assert.equal(expectedParams[i], compiledQuery.values[i], 'param '+(i+1)); | ||
for (var i = 0; i < expectedParams.length; i++) { | ||
assert.equal(expectedParams[i], compiledQuery.values[i], 'param ' + (i + 1)); | ||
} | ||
} | ||
} | ||
if (undefined !== expectedObject.string) { | ||
// test the toString | ||
if (expectedObject.throws) { | ||
assert.throws(function() { | ||
new DialectClass().getString(expected.query); | ||
}); | ||
} else { | ||
var compiledString = new DialectClass().getString(expected.query); | ||
// test result is correct | ||
assert.equal(compiledString, expectedObject.string); | ||
} | ||
} | ||
}); | ||
} // if | ||
}); // forEach | ||
}, | ||
defineUserTable: function () { | ||
defineUserTable: function() { | ||
return Table.define({ | ||
name: 'user', | ||
quote: true, | ||
columns: ['id','name'] | ||
columns: ['id', 'name'] | ||
}); | ||
}, | ||
definePostTable: function () { | ||
definePostTable: function() { | ||
return Table.define({ | ||
@@ -77,3 +84,3 @@ name: 'post', | ||
defineCommentTable: function () { | ||
defineCommentTable: function() { | ||
return Table.define({ | ||
@@ -85,3 +92,3 @@ name: 'comment', | ||
defineCustomerTable: function () { | ||
defineCustomerTable: function() { | ||
return Table.define({ | ||
@@ -96,6 +103,6 @@ name: 'customer', | ||
return Table.define({ | ||
name: 'variable', | ||
columns: ['a', 'b', 'c', 'd', 't', 'u', 'v', 'x', 'y', 'z'] | ||
name: 'variable', | ||
columns: ['a', 'b', 'c', 'd', 't', 'u', 'v', 'x', 'y', 'z'] | ||
}); | ||
} | ||
}; |
@@ -7,27 +7,66 @@ 'use strict'; | ||
Harness.test({ | ||
query : user.select(user.id).from(user), | ||
pg : 'SELECT "user"."id" FROM "user"', | ||
sqlite: 'SELECT "user"."id" FROM "user"', | ||
mysql : 'SELECT `user`.`id` FROM `user`' | ||
query: user.select(user.id).from(user), | ||
pg: { | ||
text : 'SELECT "user"."id" FROM "user"', | ||
string: 'SELECT "user"."id" FROM "user"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."id" FROM "user"', | ||
string: 'SELECT "user"."id" FROM "user"' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`id` FROM `user`', | ||
string: 'SELECT `user`.`id` FROM `user`' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : user.select(user.id, user.name).from(user), | ||
pg : 'SELECT "user"."id", "user"."name" FROM "user"', | ||
sqlite: 'SELECT "user"."id", "user"."name" FROM "user"', | ||
mysql : 'SELECT `user`.`id`, `user`.`name` FROM `user`' | ||
query: user.select(user.id, user.name).from(user), | ||
pg: { | ||
text : 'SELECT "user"."id", "user"."name" FROM "user"', | ||
string: 'SELECT "user"."id", "user"."name" FROM "user"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."id", "user"."name" FROM "user"', | ||
string: 'SELECT "user"."id", "user"."name" FROM "user"' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`id`, `user`.`name` FROM `user`', | ||
string: 'SELECT `user`.`id`, `user`.`name` FROM `user`' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : user.select(user.star()).from(user), | ||
pg : 'SELECT "user".* FROM "user"', | ||
sqlite: 'SELECT "user".* FROM "user"', | ||
mysql : 'SELECT `user`.* FROM `user`' | ||
query: user.select(user.star()).from(user), | ||
pg: { | ||
text : 'SELECT "user".* FROM "user"', | ||
string: 'SELECT "user".* FROM "user"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user".* FROM "user"', | ||
string: 'SELECT "user".* FROM "user"' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.* FROM `user`', | ||
string: 'SELECT `user`.* FROM `user`' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : user.select(user.id).from(user).where(user.name.equals('foo')), | ||
pg : 'SELECT "user"."id" FROM "user" WHERE ("user"."name" = $1)', | ||
sqlite: 'SELECT "user"."id" FROM "user" WHERE ("user"."name" = $1)', | ||
mysql : 'SELECT `user`.`id` FROM `user` WHERE (`user`.`name` = ?)', | ||
query: user.select(user.id).from(user).where(user.name.equals('foo')), | ||
pg: { | ||
text : 'SELECT "user"."id" FROM "user" WHERE ("user"."name" = $1)', | ||
string: 'SELECT "user"."id" FROM "user" WHERE ("user"."name" = \'foo\')' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."id" FROM "user" WHERE ("user"."name" = $1)', | ||
string: 'SELECT "user"."id" FROM "user" WHERE ("user"."name" = \'foo\')' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`id` FROM `user` WHERE (`user`.`name` = ?)', | ||
string: 'SELECT `user`.`id` FROM `user` WHERE (`user`.`name` = \'foo\')' | ||
}, | ||
params: ['foo'] | ||
@@ -37,6 +76,15 @@ }); | ||
Harness.test({ | ||
query : user.select(user.id).from(user).where(user.name.equals('foo').or(user.name.equals('bar'))), | ||
pg : 'SELECT "user"."id" FROM "user" WHERE (("user"."name" = $1) OR ("user"."name" = $2))', | ||
sqlite: 'SELECT "user"."id" FROM "user" WHERE (("user"."name" = $1) OR ("user"."name" = $2))', | ||
mysql : 'SELECT `user`.`id` FROM `user` WHERE ((`user`.`name` = ?) OR (`user`.`name` = ?))', | ||
query: user.select(user.id).from(user).where(user.name.equals('foo').or(user.name.equals('bar'))), | ||
pg: { | ||
text : 'SELECT "user"."id" FROM "user" WHERE (("user"."name" = $1) OR ("user"."name" = $2))', | ||
string: 'SELECT "user"."id" FROM "user" WHERE (("user"."name" = \'foo\') OR ("user"."name" = \'bar\'))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."id" FROM "user" WHERE (("user"."name" = $1) OR ("user"."name" = $2))', | ||
string: 'SELECT "user"."id" FROM "user" WHERE (("user"."name" = \'foo\') OR ("user"."name" = \'bar\'))' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`id` FROM `user` WHERE ((`user`.`name` = ?) OR (`user`.`name` = ?))', | ||
string: 'SELECT `user`.`id` FROM `user` WHERE ((`user`.`name` = \'foo\') OR (`user`.`name` = \'bar\'))' | ||
}, | ||
params: ['foo', 'bar'] | ||
@@ -46,6 +94,15 @@ }); | ||
Harness.test({ | ||
query : user.select(user.id).from(user).where(user.name.equals('foo').and(user.name.equals('bar'))), | ||
pg : 'SELECT "user"."id" FROM "user" WHERE (("user"."name" = $1) AND ("user"."name" = $2))', | ||
sqlite: 'SELECT "user"."id" FROM "user" WHERE (("user"."name" = $1) AND ("user"."name" = $2))', | ||
mysql : 'SELECT `user`.`id` FROM `user` WHERE ((`user`.`name` = ?) AND (`user`.`name` = ?))', | ||
query: user.select(user.id).from(user).where(user.name.equals('foo').and(user.name.equals('bar'))), | ||
pg: { | ||
text : 'SELECT "user"."id" FROM "user" WHERE (("user"."name" = $1) AND ("user"."name" = $2))', | ||
string: 'SELECT "user"."id" FROM "user" WHERE (("user"."name" = \'foo\') AND ("user"."name" = \'bar\'))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."id" FROM "user" WHERE (("user"."name" = $1) AND ("user"."name" = $2))', | ||
string: 'SELECT "user"."id" FROM "user" WHERE (("user"."name" = \'foo\') AND ("user"."name" = \'bar\'))' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`id` FROM `user` WHERE ((`user`.`name` = ?) AND (`user`.`name` = ?))', | ||
string: 'SELECT `user`.`id` FROM `user` WHERE ((`user`.`name` = \'foo\') AND (`user`.`name` = \'bar\'))' | ||
}, | ||
params: ['foo', 'bar'] | ||
@@ -55,20 +112,49 @@ }); | ||
Harness.test({ | ||
query : user.select(user.id).from(user).where(user.name.equals('foo')).or(user.name.equals('bar')), | ||
pg : 'SELECT "user"."id" FROM "user" WHERE (("user"."name" = $1) OR ("user"."name" = $2))', | ||
sqlite: 'SELECT "user"."id" FROM "user" WHERE (("user"."name" = $1) OR ("user"."name" = $2))', | ||
mysql : 'SELECT `user`.`id` FROM `user` WHERE ((`user`.`name` = ?) OR (`user`.`name` = ?))' | ||
query: user.select(user.id).from(user).where(user.name.equals('foo')).or(user.name.equals('bar')), | ||
pg: { | ||
text : 'SELECT "user"."id" FROM "user" WHERE (("user"."name" = $1) OR ("user"."name" = $2))', | ||
string: 'SELECT "user"."id" FROM "user" WHERE (("user"."name" = \'foo\') OR ("user"."name" = \'bar\'))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."id" FROM "user" WHERE (("user"."name" = $1) OR ("user"."name" = $2))', | ||
string: 'SELECT "user"."id" FROM "user" WHERE (("user"."name" = \'foo\') OR ("user"."name" = \'bar\'))' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`id` FROM `user` WHERE ((`user`.`name` = ?) OR (`user`.`name` = ?))', | ||
string: 'SELECT `user`.`id` FROM `user` WHERE ((`user`.`name` = \'foo\') OR (`user`.`name` = \'bar\'))' | ||
}, | ||
params: ['foo', 'bar'] | ||
}); | ||
Harness.test({ | ||
query : user.select(user.id).from(user).where(user.name.equals('foo')).or(user.name.equals('baz')).and(user.name.equals('bar')), | ||
pg : 'SELECT "user"."id" FROM "user" WHERE ((("user"."name" = $1) OR ("user"."name" = $2)) AND ("user"."name" = $3))', | ||
sqlite: 'SELECT "user"."id" FROM "user" WHERE ((("user"."name" = $1) OR ("user"."name" = $2)) AND ("user"."name" = $3))', | ||
mysql : 'SELECT `user`.`id` FROM `user` WHERE (((`user`.`name` = ?) OR (`user`.`name` = ?)) AND (`user`.`name` = ?))' | ||
query: user.select(user.id).from(user).where(user.name.equals('foo')).or(user.name.equals('baz')).and(user.name.equals('bar')), | ||
pg: { | ||
text : 'SELECT "user"."id" FROM "user" WHERE ((("user"."name" = $1) OR ("user"."name" = $2)) AND ("user"."name" = $3))', | ||
string: 'SELECT "user"."id" FROM "user" WHERE ((("user"."name" = \'foo\') OR ("user"."name" = \'baz\')) AND ("user"."name" = \'bar\'))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."id" FROM "user" WHERE ((("user"."name" = $1) OR ("user"."name" = $2)) AND ("user"."name" = $3))', | ||
string: 'SELECT "user"."id" FROM "user" WHERE ((("user"."name" = \'foo\') OR ("user"."name" = \'baz\')) AND ("user"."name" = \'bar\'))' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`id` FROM `user` WHERE (((`user`.`name` = ?) OR (`user`.`name` = ?)) AND (`user`.`name` = ?))', | ||
string: 'SELECT `user`.`id` FROM `user` WHERE (((`user`.`name` = \'foo\') OR (`user`.`name` = \'baz\')) AND (`user`.`name` = \'bar\'))' | ||
}, | ||
params: ['foo', 'baz', 'bar'] | ||
}); | ||
Harness.test({ | ||
query : user.select(user.id).from(user).where(user.name['in'](['foo', 'bar'])), | ||
pg : 'SELECT "user"."id" FROM "user" WHERE ("user"."name" IN ($1, $2))', | ||
sqlite: 'SELECT "user"."id" FROM "user" WHERE ("user"."name" IN ($1, $2))', | ||
mysql : 'SELECT `user`.`id` FROM `user` WHERE (`user`.`name` IN (?, ?))', | ||
query: user.select(user.id).from(user).where(user.name.in(['foo', 'bar'])), | ||
pg: { | ||
text : 'SELECT "user"."id" FROM "user" WHERE ("user"."name" IN ($1, $2))', | ||
string: 'SELECT "user"."id" FROM "user" WHERE ("user"."name" IN (\'foo\', \'bar\'))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."id" FROM "user" WHERE ("user"."name" IN ($1, $2))', | ||
string: 'SELECT "user"."id" FROM "user" WHERE ("user"."name" IN (\'foo\', \'bar\'))' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`id` FROM `user` WHERE (`user`.`name` IN (?, ?))', | ||
string: 'SELECT `user`.`id` FROM `user` WHERE (`user`.`name` IN (\'foo\', \'bar\'))' | ||
}, | ||
params: ['foo', 'bar'] | ||
@@ -78,6 +164,15 @@ }); | ||
Harness.test({ | ||
query : user.select(user.id).from(user).where(user.name['in'](['foo', 'bar']).and(user.id.equals(1))), | ||
pg : 'SELECT "user"."id" FROM "user" WHERE (("user"."name" IN ($1, $2)) AND ("user"."id" = $3))', | ||
sqlite: 'SELECT "user"."id" FROM "user" WHERE (("user"."name" IN ($1, $2)) AND ("user"."id" = $3))', | ||
mysql : 'SELECT `user`.`id` FROM `user` WHERE ((`user`.`name` IN (?, ?)) AND (`user`.`id` = ?))', | ||
query: user.select(user.id).from(user).where(user.name.in(['foo', 'bar']).and(user.id.equals(1))), | ||
pg: { | ||
text : 'SELECT "user"."id" FROM "user" WHERE (("user"."name" IN ($1, $2)) AND ("user"."id" = $3))', | ||
string: 'SELECT "user"."id" FROM "user" WHERE (("user"."name" IN (\'foo\', \'bar\')) AND ("user"."id" = 1))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."id" FROM "user" WHERE (("user"."name" IN ($1, $2)) AND ("user"."id" = $3))', | ||
string: 'SELECT "user"."id" FROM "user" WHERE (("user"."name" IN (\'foo\', \'bar\')) AND ("user"."id" = 1))' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`id` FROM `user` WHERE ((`user`.`name` IN (?, ?)) AND (`user`.`id` = ?))', | ||
string: 'SELECT `user`.`id` FROM `user` WHERE ((`user`.`name` IN (\'foo\', \'bar\')) AND (`user`.`id` = 1))' | ||
}, | ||
params: ['foo', 'bar', 1] | ||
@@ -87,6 +182,15 @@ }); | ||
Harness.test({ | ||
query : user.select(user.columns), | ||
pg : 'SELECT "user"."id", "user"."name" FROM "user"', | ||
sqlite: 'SELECT "user"."id", "user"."name" FROM "user"', | ||
mysql : 'SELECT `user`.`id`, `user`.`name` FROM `user`', | ||
query: user.select(user.columns), | ||
pg: { | ||
text : 'SELECT "user"."id", "user"."name" FROM "user"', | ||
string: 'SELECT "user"."id", "user"."name" FROM "user"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."id", "user"."name" FROM "user"', | ||
string: 'SELECT "user"."id", "user"."name" FROM "user"' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`id`, `user`.`name` FROM `user`', | ||
string: 'SELECT `user`.`id`, `user`.`name` FROM `user`' | ||
}, | ||
params: [] | ||
@@ -97,29 +201,55 @@ }); | ||
Harness.test({ | ||
query : user | ||
query: user | ||
.select(user.id) | ||
.from(user) | ||
.where( | ||
user.name.equals('boom') | ||
.and(user.id.equals(1)) | ||
).or( | ||
user.name.equals('bang').and(user.id.equals(2)) | ||
), | ||
pg : 'SELECT "user"."id" FROM "user" WHERE ((("user"."name" = $1) AND ("user"."id" = $2)) OR (("user"."name" = $3) AND ("user"."id" = $4)))', | ||
sqlite: 'SELECT "user"."id" FROM "user" WHERE ((("user"."name" = $1) AND ("user"."id" = $2)) OR (("user"."name" = $3) AND ("user"."id" = $4)))', | ||
mysql : 'SELECT `user`.`id` FROM `user` WHERE (((`user`.`name` = ?) AND (`user`.`id` = ?)) OR ((`user`.`name` = ?) AND (`user`.`id` = ?)))', | ||
params: ['boom', 1, 'bang', 2] | ||
user.name.equals('boom') | ||
.and(user.id.equals(1))).or( | ||
user.name.equals('bang').and(user.id.equals(2))), | ||
pg: { | ||
text : 'SELECT "user"."id" FROM "user" WHERE ((("user"."name" = $1) AND ("user"."id" = $2)) OR (("user"."name" = $3) AND ("user"."id" = $4)))', | ||
string: 'SELECT "user"."id" FROM "user" WHERE ((("user"."name" = \'boom\') AND ("user"."id" = 1)) OR (("user"."name" = \'bang\') AND ("user"."id" = 2)))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."id" FROM "user" WHERE ((("user"."name" = $1) AND ("user"."id" = $2)) OR (("user"."name" = $3) AND ("user"."id" = $4)))', | ||
string: 'SELECT "user"."id" FROM "user" WHERE ((("user"."name" = \'boom\') AND ("user"."id" = 1)) OR (("user"."name" = \'bang\') AND ("user"."id" = 2)))' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`id` FROM `user` WHERE (((`user`.`name` = ?) AND (`user`.`id` = ?)) OR ((`user`.`name` = ?) AND (`user`.`id` = ?)))', | ||
string: 'SELECT `user`.`id` FROM `user` WHERE (((`user`.`name` = \'boom\') AND (`user`.`id` = 1)) OR ((`user`.`name` = \'bang\') AND (`user`.`id` = 2)))' | ||
}, | ||
params: ['boom', 1, 'bang', 2] | ||
}); | ||
Harness.test({ | ||
query : user.select(user.name.as('user name'), user.id.as('user id')).from(user), | ||
pg : 'SELECT "user"."name" AS "user name", "user"."id" AS "user id" FROM "user"', | ||
sqlite: 'SELECT "user"."name" AS "user name", "user"."id" AS "user id" FROM "user"', | ||
mysql : 'SELECT `user`.`name` AS `user name`, `user`.`id` AS `user id` FROM `user`' | ||
query: user.select(user.name.as('user name'), user.id.as('user id')).from(user), | ||
pg: { | ||
text : 'SELECT "user"."name" AS "user name", "user"."id" AS "user id" FROM "user"', | ||
string: 'SELECT "user"."name" AS "user name", "user"."id" AS "user id" FROM "user"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."name" AS "user name", "user"."id" AS "user id" FROM "user"', | ||
string: 'SELECT "user"."name" AS "user name", "user"."id" AS "user id" FROM "user"' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`name` AS `user name`, `user`.`id` AS `user id` FROM `user`', | ||
string: 'SELECT `user`.`name` AS `user name`, `user`.`id` AS `user id` FROM `user`' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : user.select(user.name.as('user name')).from(user).where(user.name.equals('brian')), | ||
pg : 'SELECT "user"."name" AS "user name" FROM "user" WHERE ("user"."name" = $1)', | ||
sqlite: 'SELECT "user"."name" AS "user name" FROM "user" WHERE ("user"."name" = $1)', | ||
mysql : 'SELECT `user`.`name` AS `user name` FROM `user` WHERE (`user`.`name` = ?)', | ||
query: user.select(user.name.as('user name')).from(user).where(user.name.equals('brian')), | ||
pg: { | ||
text : 'SELECT "user"."name" AS "user name" FROM "user" WHERE ("user"."name" = $1)', | ||
string: 'SELECT "user"."name" AS "user name" FROM "user" WHERE ("user"."name" = \'brian\')' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."name" AS "user name" FROM "user" WHERE ("user"."name" = $1)', | ||
string: 'SELECT "user"."name" AS "user name" FROM "user" WHERE ("user"."name" = \'brian\')' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`name` AS `user name` FROM `user` WHERE (`user`.`name` = ?)', | ||
string: 'SELECT `user`.`name` AS `user name` FROM `user` WHERE (`user`.`name` = \'brian\')' | ||
}, | ||
params: ['brian'] | ||
@@ -129,13 +259,32 @@ }); | ||
Harness.test({ | ||
query : user.select(user.name).from(user).where(user.name.equals('brian')), | ||
pg : 'SELECT "user"."name" FROM "user" WHERE ("user"."name" = $1)', | ||
sqlite: 'SELECT "user"."name" FROM "user" WHERE ("user"."name" = $1)', | ||
mysql : 'SELECT `user`.`name` FROM `user` WHERE (`user`.`name` = ?)' | ||
query: user.select(user.name).from(user).where(user.name.equals('brian')), | ||
pg: { | ||
text : 'SELECT "user"."name" FROM "user" WHERE ("user"."name" = $1)', | ||
string: 'SELECT "user"."name" FROM "user" WHERE ("user"."name" = \'brian\')' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."name" FROM "user" WHERE ("user"."name" = $1)', | ||
string: 'SELECT "user"."name" FROM "user" WHERE ("user"."name" = \'brian\')' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`name` FROM `user` WHERE (`user`.`name` = ?)', | ||
string: 'SELECT `user`.`name` FROM `user` WHERE (`user`.`name` = \'brian\')' | ||
}, | ||
params: ['brian'] | ||
}); | ||
Harness.test({ | ||
query : user.select('name').from('user').where('name <> NULL'), | ||
pg : 'SELECT name FROM user WHERE (name <> NULL)', | ||
sqlite: 'SELECT name FROM user WHERE (name <> NULL)', | ||
mysql : 'SELECT name FROM user WHERE (name <> NULL)', | ||
query: user.select('name').from('user').where('name <> NULL'), | ||
pg: { | ||
text : 'SELECT name FROM user WHERE (name <> NULL)', | ||
string: 'SELECT name FROM user WHERE (name <> NULL)' | ||
}, | ||
sqlite: { | ||
text : 'SELECT name FROM user WHERE (name <> NULL)', | ||
string: 'SELECT name FROM user WHERE (name <> NULL)' | ||
}, | ||
mysql: { | ||
text : 'SELECT name FROM user WHERE (name <> NULL)', | ||
string: 'SELECT name FROM user WHERE (name <> NULL)' | ||
}, | ||
params: [] | ||
@@ -145,6 +294,15 @@ }); | ||
Harness.test({ | ||
query : user.select('name,id').from('user').where('name <> NULL'), | ||
pg : 'SELECT name,id FROM user WHERE (name <> NULL)', | ||
sqlite: 'SELECT name,id FROM user WHERE (name <> NULL)', | ||
mysql : 'SELECT name,id FROM user WHERE (name <> NULL)', | ||
query: user.select('name,id').from('user').where('name <> NULL'), | ||
pg: { | ||
text : 'SELECT name,id FROM user WHERE (name <> NULL)', | ||
string: 'SELECT name,id FROM user WHERE (name <> NULL)' | ||
}, | ||
sqlite: { | ||
text : 'SELECT name,id FROM user WHERE (name <> NULL)', | ||
string: 'SELECT name,id FROM user WHERE (name <> NULL)' | ||
}, | ||
mysql: { | ||
text : 'SELECT name,id FROM user WHERE (name <> NULL)', | ||
string: 'SELECT name,id FROM user WHERE (name <> NULL)' | ||
}, | ||
params: [] | ||
@@ -154,6 +312,15 @@ }); | ||
Harness.test({ | ||
query : user.select('name','id').from('user').where('name <> NULL'), | ||
pg : 'SELECT name, id FROM user WHERE (name <> NULL)', | ||
sqlite: 'SELECT name, id FROM user WHERE (name <> NULL)', | ||
mysql : 'SELECT name, id FROM user WHERE (name <> NULL)', | ||
query: user.select('name', 'id').from('user').where('name <> NULL'), | ||
pg: { | ||
text : 'SELECT name, id FROM user WHERE (name <> NULL)', | ||
string: 'SELECT name, id FROM user WHERE (name <> NULL)' | ||
}, | ||
sqlite: { | ||
text : 'SELECT name, id FROM user WHERE (name <> NULL)', | ||
string: 'SELECT name, id FROM user WHERE (name <> NULL)' | ||
}, | ||
mysql: { | ||
text : 'SELECT name, id FROM user WHERE (name <> NULL)', | ||
string: 'SELECT name, id FROM user WHERE (name <> NULL)' | ||
}, | ||
params: [] | ||
@@ -163,6 +330,15 @@ }); | ||
Harness.test({ | ||
query : user.select('name','id').from('user').where('name <> NULL').and('id <> NULL'), | ||
pg : 'SELECT name, id FROM user WHERE ((name <> NULL) AND (id <> NULL))', | ||
sqlite: 'SELECT name, id FROM user WHERE ((name <> NULL) AND (id <> NULL))', | ||
mysql : 'SELECT name, id FROM user WHERE ((name <> NULL) AND (id <> NULL))', | ||
query: user.select('name', 'id').from('user').where('name <> NULL').and('id <> NULL'), | ||
pg: { | ||
text : 'SELECT name, id FROM user WHERE ((name <> NULL) AND (id <> NULL))', | ||
string: 'SELECT name, id FROM user WHERE ((name <> NULL) AND (id <> NULL))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT name, id FROM user WHERE ((name <> NULL) AND (id <> NULL))', | ||
string: 'SELECT name, id FROM user WHERE ((name <> NULL) AND (id <> NULL))' | ||
}, | ||
mysql: { | ||
text : 'SELECT name, id FROM user WHERE ((name <> NULL) AND (id <> NULL))', | ||
string: 'SELECT name, id FROM user WHERE ((name <> NULL) AND (id <> NULL))' | ||
}, | ||
params: [] | ||
@@ -172,6 +348,17 @@ }); | ||
Harness.test({ | ||
query : user.select('name').from('user').where({name: 'brian'}), | ||
pg : 'SELECT name FROM user WHERE ("user"."name" = $1)', | ||
sqlite: 'SELECT name FROM user WHERE ("user"."name" = $1)', | ||
mysql : 'SELECT name FROM user WHERE (`user`.`name` = ?)', | ||
query: user.select('name').from('user').where({ | ||
name: 'brian' | ||
}), | ||
pg: { | ||
text : 'SELECT name FROM user WHERE ("user"."name" = $1)', | ||
string: 'SELECT name FROM user WHERE ("user"."name" = \'brian\')' | ||
}, | ||
sqlite: { | ||
text : 'SELECT name FROM user WHERE ("user"."name" = $1)', | ||
string: 'SELECT name FROM user WHERE ("user"."name" = \'brian\')' | ||
}, | ||
mysql: { | ||
text : 'SELECT name FROM user WHERE (`user`.`name` = ?)', | ||
string: 'SELECT name FROM user WHERE (`user`.`name` = \'brian\')' | ||
}, | ||
params: ['brian'] | ||
@@ -181,6 +368,18 @@ }); | ||
Harness.test({ | ||
query : user.select('name').from('user').where({name: 'brian', id: 1}), | ||
pg : 'SELECT name FROM user WHERE (("user"."name" = $1) AND ("user"."id" = $2))', | ||
sqlite: 'SELECT name FROM user WHERE (("user"."name" = $1) AND ("user"."id" = $2))', | ||
mysql : 'SELECT name FROM user WHERE ((`user`.`name` = ?) AND (`user`.`id` = ?))', | ||
query: user.select('name').from('user').where({ | ||
name: 'brian', | ||
id: 1 | ||
}), | ||
pg: { | ||
text : 'SELECT name FROM user WHERE (("user"."name" = $1) AND ("user"."id" = $2))', | ||
string: 'SELECT name FROM user WHERE (("user"."name" = \'brian\') AND ("user"."id" = 1))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT name FROM user WHERE (("user"."name" = $1) AND ("user"."id" = $2))', | ||
string: 'SELECT name FROM user WHERE (("user"."name" = \'brian\') AND ("user"."id" = 1))' | ||
}, | ||
mysql: { | ||
text : 'SELECT name FROM user WHERE ((`user`.`name` = ?) AND (`user`.`id` = ?))', | ||
string: 'SELECT name FROM user WHERE ((`user`.`name` = \'brian\') AND (`user`.`id` = 1))' | ||
}, | ||
params: ['brian', 1] | ||
@@ -190,6 +389,15 @@ }); | ||
Harness.test({ | ||
query : user.select(user.name.as('quote"quote"tick`tick`')), | ||
pg : 'SELECT "user"."name" AS "quote""quote""tick`tick`" FROM "user"', | ||
sqlite: 'SELECT "user"."name" AS "quote""quote""tick`tick`" FROM "user"', | ||
mysql : 'SELECT `user`.`name` AS `quote"quote"tick``tick``` FROM `user`', | ||
query: user.select(user.name.as('quote"quote"tick`tick`')), | ||
pg: { | ||
text : 'SELECT "user"."name" AS "quote""quote""tick`tick`" FROM "user"', | ||
string: 'SELECT "user"."name" AS "quote""quote""tick`tick`" FROM "user"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user"."name" AS "quote""quote""tick`tick`" FROM "user"', | ||
string: 'SELECT "user"."name" AS "quote""quote""tick`tick`" FROM "user"' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.`name` AS `quote"quote"tick``tick``` FROM `user`', | ||
string: 'SELECT `user`.`name` AS `quote"quote"tick``tick``` FROM `user`' | ||
}, | ||
params: [] | ||
@@ -199,7 +407,16 @@ }); | ||
Harness.test({ | ||
query : user.select(user.star()).where(user.id['in'](user.subQuery().select(user.id))), | ||
pg : 'SELECT "user".* FROM "user" WHERE ("user"."id" IN (SELECT "user"."id" FROM "user"))', | ||
sqlite: 'SELECT "user".* FROM "user" WHERE ("user"."id" IN (SELECT "user"."id" FROM "user"))', | ||
mysql : 'SELECT `user`.* FROM `user` WHERE (`user`.`id` IN (SELECT `user`.`id` FROM `user`))', | ||
query: user.select(user.star()).where(user.id.in(user.subQuery().select(user.id))), | ||
pg: { | ||
text : 'SELECT "user".* FROM "user" WHERE ("user"."id" IN (SELECT "user"."id" FROM "user"))', | ||
string: 'SELECT "user".* FROM "user" WHERE ("user"."id" IN (SELECT "user"."id" FROM "user"))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "user".* FROM "user" WHERE ("user"."id" IN (SELECT "user"."id" FROM "user"))', | ||
string: 'SELECT "user".* FROM "user" WHERE ("user"."id" IN (SELECT "user"."id" FROM "user"))' | ||
}, | ||
mysql: { | ||
text : 'SELECT `user`.* FROM `user` WHERE (`user`.`id` IN (SELECT `user`.`id` FROM `user`))', | ||
string: 'SELECT `user`.* FROM `user` WHERE (`user`.`id` IN (SELECT `user`.`id` FROM `user`))' | ||
}, | ||
params: [] | ||
}); |
@@ -9,6 +9,15 @@ 'use strict'; | ||
Harness.test({ | ||
query : customer.select().where(customer.age.between(18, 25)), | ||
pg : 'SELECT "customer".* FROM "customer" WHERE ("customer"."age" BETWEEN $1 AND $2)', | ||
sqlite: 'SELECT "customer".* FROM "customer" WHERE ("customer"."age" BETWEEN $1 AND $2)', | ||
mysql : 'SELECT `customer`.* FROM `customer` WHERE (`customer`.`age` BETWEEN ? AND ?)', | ||
query: customer.select().where(customer.age.between(18, 25)), | ||
pg: { | ||
text : 'SELECT "customer".* FROM "customer" WHERE ("customer"."age" BETWEEN $1 AND $2)', | ||
string: 'SELECT "customer".* FROM "customer" WHERE ("customer"."age" BETWEEN 18 AND 25)' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "customer".* FROM "customer" WHERE ("customer"."age" BETWEEN $1 AND $2)', | ||
string: 'SELECT "customer".* FROM "customer" WHERE ("customer"."age" BETWEEN 18 AND 25)' | ||
}, | ||
mysql: { | ||
text : 'SELECT `customer`.* FROM `customer` WHERE (`customer`.`age` BETWEEN ? AND ?)', | ||
string: 'SELECT `customer`.* FROM `customer` WHERE (`customer`.`age` BETWEEN 18 AND 25)' | ||
}, | ||
params: [18, 25] | ||
@@ -18,7 +27,16 @@ }); | ||
Harness.test({ | ||
query : post.select().where(post.userId.between(customer.subQuery().select(customer.id.min()), customer.subQuery().select(customer.id.max()))), | ||
pg : 'SELECT "post".* FROM "post" WHERE ("post"."userId" BETWEEN (SELECT MIN("customer"."id") AS "id_min" FROM "customer") AND (SELECT MAX("customer"."id") AS "id_max" FROM "customer"))', | ||
sqlite: 'SELECT "post".* FROM "post" WHERE ("post"."userId" BETWEEN (SELECT MIN("customer"."id") AS "id_min" FROM "customer") AND (SELECT MAX("customer"."id") AS "id_max" FROM "customer"))', | ||
mysql : 'SELECT `post`.* FROM `post` WHERE (`post`.`userId` BETWEEN (SELECT MIN(`customer`.`id`) AS `id_min` FROM `customer`) AND (SELECT MAX(`customer`.`id`) AS `id_max` FROM `customer`))', | ||
query: post.select().where(post.userId.between(customer.subQuery().select(customer.id.min()), customer.subQuery().select(customer.id.max()))), | ||
pg: { | ||
text : 'SELECT "post".* FROM "post" WHERE ("post"."userId" BETWEEN (SELECT MIN("customer"."id") AS "id_min" FROM "customer") AND (SELECT MAX("customer"."id") AS "id_max" FROM "customer"))', | ||
string: 'SELECT "post".* FROM "post" WHERE ("post"."userId" BETWEEN (SELECT MIN("customer"."id") AS "id_min" FROM "customer") AND (SELECT MAX("customer"."id") AS "id_max" FROM "customer"))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "post".* FROM "post" WHERE ("post"."userId" BETWEEN (SELECT MIN("customer"."id") AS "id_min" FROM "customer") AND (SELECT MAX("customer"."id") AS "id_max" FROM "customer"))', | ||
string: 'SELECT "post".* FROM "post" WHERE ("post"."userId" BETWEEN (SELECT MIN("customer"."id") AS "id_min" FROM "customer") AND (SELECT MAX("customer"."id") AS "id_max" FROM "customer"))' | ||
}, | ||
mysql: { | ||
text : 'SELECT `post`.* FROM `post` WHERE (`post`.`userId` BETWEEN (SELECT MIN(`customer`.`id`) AS `id_min` FROM `customer`) AND (SELECT MAX(`customer`.`id`) AS `id_max` FROM `customer`))', | ||
string: 'SELECT `post`.* FROM `post` WHERE (`post`.`userId` BETWEEN (SELECT MIN(`customer`.`id`) AS `id_min` FROM `customer`) AND (SELECT MAX(`customer`.`id`) AS `id_max` FROM `customer`))' | ||
}, | ||
params: [] | ||
}); |
@@ -9,6 +9,15 @@ 'use strict'; | ||
Harness.test({ | ||
query : customer.select().where(customer.age.isNotNull()), | ||
pg : 'SELECT "customer".* FROM "customer" WHERE ("customer"."age" IS NOT NULL)', | ||
sqlite: 'SELECT "customer".* FROM "customer" WHERE ("customer"."age" IS NOT NULL)', | ||
mysql : 'SELECT `customer`.* FROM `customer` WHERE (`customer`.`age` IS NOT NULL)', | ||
query: customer.select().where(customer.age.isNotNull()), | ||
pg: { | ||
text : 'SELECT "customer".* FROM "customer" WHERE ("customer"."age" IS NOT NULL)', | ||
string: 'SELECT "customer".* FROM "customer" WHERE ("customer"."age" IS NOT NULL)' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "customer".* FROM "customer" WHERE ("customer"."age" IS NOT NULL)', | ||
string: 'SELECT "customer".* FROM "customer" WHERE ("customer"."age" IS NOT NULL)' | ||
}, | ||
mysql: { | ||
text : 'SELECT `customer`.* FROM `customer` WHERE (`customer`.`age` IS NOT NULL)', | ||
string: 'SELECT `customer`.* FROM `customer` WHERE (`customer`.`age` IS NOT NULL)' | ||
}, | ||
params: [] | ||
@@ -18,7 +27,16 @@ }); | ||
Harness.test({ | ||
query : post.select().where(post.userId.in(customer.subQuery().select(customer.id).where(customer.age.isNull()))), | ||
pg : 'SELECT "post".* FROM "post" WHERE ("post"."userId" IN (SELECT "customer"."id" FROM "customer" WHERE ("customer"."age" IS NULL)))', | ||
sqlite: 'SELECT "post".* FROM "post" WHERE ("post"."userId" IN (SELECT "customer"."id" FROM "customer" WHERE ("customer"."age" IS NULL)))', | ||
mysql : 'SELECT `post`.* FROM `post` WHERE (`post`.`userId` IN (SELECT `customer`.`id` FROM `customer` WHERE (`customer`.`age` IS NULL)))', | ||
query: post.select().where(post.userId. in (customer.subQuery().select(customer.id).where(customer.age.isNull()))), | ||
pg: { | ||
text : 'SELECT "post".* FROM "post" WHERE ("post"."userId" IN (SELECT "customer"."id" FROM "customer" WHERE ("customer"."age" IS NULL)))', | ||
string: 'SELECT "post".* FROM "post" WHERE ("post"."userId" IN (SELECT "customer"."id" FROM "customer" WHERE ("customer"."age" IS NULL)))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "post".* FROM "post" WHERE ("post"."userId" IN (SELECT "customer"."id" FROM "customer" WHERE ("customer"."age" IS NULL)))', | ||
string: 'SELECT "post".* FROM "post" WHERE ("post"."userId" IN (SELECT "customer"."id" FROM "customer" WHERE ("customer"."age" IS NULL)))' | ||
}, | ||
mysql: { | ||
text : 'SELECT `post`.* FROM `post` WHERE (`post`.`userId` IN (SELECT `customer`.`id` FROM `customer` WHERE (`customer`.`age` IS NULL)))', | ||
string: 'SELECT `post`.* FROM `post` WHERE (`post`.`userId` IN (SELECT `customer`.`id` FROM `customer` WHERE (`customer`.`age` IS NULL)))' | ||
}, | ||
params: [] | ||
}); |
@@ -8,6 +8,17 @@ 'use strict'; | ||
Harness.test({ | ||
query : post.update({content: 'test'}), | ||
pg : 'UPDATE "post" SET "content" = $1', | ||
sqlite: 'UPDATE "post" SET "content" = $1', | ||
mysql : 'UPDATE `post` SET `content` = ?', | ||
query: post.update({ | ||
content: 'test' | ||
}), | ||
pg: { | ||
text : 'UPDATE "post" SET "content" = $1', | ||
string: 'UPDATE "post" SET "content" = \'test\'' | ||
}, | ||
sqlite: { | ||
text : 'UPDATE "post" SET "content" = $1', | ||
string: 'UPDATE "post" SET "content" = \'test\'' | ||
}, | ||
mysql: { | ||
text : 'UPDATE `post` SET `content` = ?', | ||
string: 'UPDATE `post` SET `content` = \'test\'' | ||
}, | ||
params: ['test'] | ||
@@ -17,6 +28,18 @@ }); | ||
Harness.test({ | ||
query : post.update({content: 'test', userId: 3}), | ||
pg : 'UPDATE "post" SET "content" = $1, "userId" = $2', | ||
sqlite: 'UPDATE "post" SET "content" = $1, "userId" = $2', | ||
mysql : 'UPDATE `post` SET `content` = ?, `userId` = ?', | ||
query: post.update({ | ||
content: 'test', | ||
userId: 3 | ||
}), | ||
pg: { | ||
text : 'UPDATE "post" SET "content" = $1, "userId" = $2', | ||
string: 'UPDATE "post" SET "content" = \'test\', "userId" = 3' | ||
}, | ||
sqlite: { | ||
text : 'UPDATE "post" SET "content" = $1, "userId" = $2', | ||
string: 'UPDATE "post" SET "content" = \'test\', "userId" = 3' | ||
}, | ||
mysql: { | ||
text : 'UPDATE `post` SET `content` = ?, `userId` = ?', | ||
string: 'UPDATE `post` SET `content` = \'test\', `userId` = 3' | ||
}, | ||
params: ['test', 3] | ||
@@ -26,6 +49,18 @@ }); | ||
Harness.test({ | ||
query : post.update({content: null, userId: 3}), | ||
pg : 'UPDATE "post" SET "content" = $1, "userId" = $2', | ||
sqlite: 'UPDATE "post" SET "content" = $1, "userId" = $2', | ||
mysql : 'UPDATE `post` SET `content` = ?, `userId` = ?', | ||
query: post.update({ | ||
content: null, | ||
userId: 3 | ||
}), | ||
pg: { | ||
text : 'UPDATE "post" SET "content" = $1, "userId" = $2', | ||
string: 'UPDATE "post" SET "content" = NULL, "userId" = 3' | ||
}, | ||
sqlite: { | ||
text : 'UPDATE "post" SET "content" = $1, "userId" = $2', | ||
string: 'UPDATE "post" SET "content" = NULL, "userId" = 3' | ||
}, | ||
mysql: { | ||
text : 'UPDATE `post` SET `content` = ?, `userId` = ?', | ||
string: 'UPDATE `post` SET `content` = NULL, `userId` = 3' | ||
}, | ||
params: [null, 3] | ||
@@ -35,6 +70,18 @@ }); | ||
Harness.test({ | ||
query : post.update({content: 'test', userId: 3}).where(post.content.equals('no')), | ||
pg : 'UPDATE "post" SET "content" = $1, "userId" = $2 WHERE ("post"."content" = $3)', | ||
sqlite: 'UPDATE "post" SET "content" = $1, "userId" = $2 WHERE ("post"."content" = $3)', | ||
mysql : 'UPDATE `post` SET `content` = ?, `userId` = ? WHERE (`post`.`content` = ?)', | ||
query: post.update({ | ||
content: 'test', | ||
userId: 3 | ||
}).where(post.content.equals('no')), | ||
pg: { | ||
text : 'UPDATE "post" SET "content" = $1, "userId" = $2 WHERE ("post"."content" = $3)', | ||
string: 'UPDATE "post" SET "content" = \'test\', "userId" = 3 WHERE ("post"."content" = \'no\')' | ||
}, | ||
sqlite: { | ||
text : 'UPDATE "post" SET "content" = $1, "userId" = $2 WHERE ("post"."content" = $3)', | ||
string: 'UPDATE "post" SET "content" = \'test\', "userId" = 3 WHERE ("post"."content" = \'no\')' | ||
}, | ||
mysql: { | ||
text : 'UPDATE `post` SET `content` = ?, `userId` = ? WHERE (`post`.`content` = ?)', | ||
string: 'UPDATE `post` SET `content` = \'test\', `userId` = 3 WHERE (`post`.`content` = \'no\')' | ||
}, | ||
params: ['test', 3, 'no'] | ||
@@ -44,6 +91,17 @@ }); | ||
Harness.test({ | ||
query : post.update({content: user.name}).from(user).where(post.userId.equals(user.id)), | ||
sqlite: 'UPDATE "post" SET "content" = "user"."name" FROM "user" WHERE ("post"."userId" = "user"."id")', | ||
pg : 'UPDATE "post" SET "content" = "user"."name" FROM "user" WHERE ("post"."userId" = "user"."id")', | ||
mysql : 'UPDATE `post` SET `content` = `user`.`name` FROM `user` WHERE (`post`.`userId` = `user`.`id`)', | ||
query: post.update({ | ||
content: user.name | ||
}).from(user).where(post.userId.equals(user.id)), | ||
sqlite: { | ||
text : 'UPDATE "post" SET "content" = "user"."name" FROM "user" WHERE ("post"."userId" = "user"."id")', | ||
string: 'UPDATE "post" SET "content" = "user"."name" FROM "user" WHERE ("post"."userId" = "user"."id")' | ||
}, | ||
pg: { | ||
text : 'UPDATE "post" SET "content" = "user"."name" FROM "user" WHERE ("post"."userId" = "user"."id")', | ||
string: 'UPDATE "post" SET "content" = "user"."name" FROM "user" WHERE ("post"."userId" = "user"."id")' | ||
}, | ||
mysql: { | ||
text : 'UPDATE `post` SET `content` = `user`.`name` FROM `user` WHERE (`post`.`userId` = `user`.`id`)', | ||
string: 'UPDATE `post` SET `content` = `user`.`name` FROM `user` WHERE (`post`.`userId` = `user`.`id`)' | ||
}, | ||
params: [] | ||
@@ -54,7 +112,18 @@ }); | ||
Harness.test({ | ||
query : post.update({userId: user.id}).from(user).where(post.userId.equals(user.id)), | ||
pg : 'UPDATE "post" SET "userId" = "user"."id" FROM "user" WHERE ("post"."userId" = "user"."id")', | ||
sqlite: 'UPDATE "post" SET "userId" = "user"."id" FROM "user" WHERE ("post"."userId" = "user"."id")', | ||
mysql : 'UPDATE `post` SET `userId` = `user`.`id` FROM `user` WHERE (`post`.`userId` = `user`.`id`)', | ||
query: post.update({ | ||
userId: user.id | ||
}).from(user).where(post.userId.equals(user.id)), | ||
pg: { | ||
text : 'UPDATE "post" SET "userId" = "user"."id" FROM "user" WHERE ("post"."userId" = "user"."id")', | ||
string: 'UPDATE "post" SET "userId" = "user"."id" FROM "user" WHERE ("post"."userId" = "user"."id")' | ||
}, | ||
sqlite: { | ||
text : 'UPDATE "post" SET "userId" = "user"."id" FROM "user" WHERE ("post"."userId" = "user"."id")', | ||
string: 'UPDATE "post" SET "userId" = "user"."id" FROM "user" WHERE ("post"."userId" = "user"."id")' | ||
}, | ||
mysql: { | ||
text : 'UPDATE `post` SET `userId` = `user`.`id` FROM `user` WHERE (`post`.`userId` = `user`.`id`)', | ||
string: 'UPDATE `post` SET `userId` = `user`.`id` FROM `user` WHERE (`post`.`userId` = `user`.`id`)' | ||
}, | ||
params: [] | ||
}); |
@@ -9,6 +9,15 @@ 'use strict'; | ||
Harness.test({ | ||
query : customer.select(customer.name, customer.income.modulo(100)).where(customer.age.plus(5).multiply(customer.age.minus(2)).equals(10)), | ||
pg : 'SELECT "customer"."name", ("customer"."income" % $1) FROM "customer" WHERE ((("customer"."age" + $2) * ("customer"."age" - $3)) = $4)', | ||
sqlite: 'SELECT "customer"."name", ("customer"."income" % $1) FROM "customer" WHERE ((("customer"."age" + $2) * ("customer"."age" - $3)) = $4)', | ||
mysql : 'SELECT `customer`.`name`, (`customer`.`income` % ?) FROM `customer` WHERE (((`customer`.`age` + ?) * (`customer`.`age` - ?)) = ?)', | ||
query: customer.select(customer.name, customer.income.modulo(100)).where(customer.age.plus(5).multiply(customer.age.minus(2)).equals(10)), | ||
pg: { | ||
text : 'SELECT "customer"."name", ("customer"."income" % $1) FROM "customer" WHERE ((("customer"."age" + $2) * ("customer"."age" - $3)) = $4)', | ||
string: 'SELECT "customer"."name", ("customer"."income" % 100) FROM "customer" WHERE ((("customer"."age" + 5) * ("customer"."age" - 2)) = 10)' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "customer"."name", ("customer"."income" % $1) FROM "customer" WHERE ((("customer"."age" + $2) * ("customer"."age" - $3)) = $4)', | ||
string: 'SELECT "customer"."name", ("customer"."income" % 100) FROM "customer" WHERE ((("customer"."age" + 5) * ("customer"."age" - 2)) = 10)' | ||
}, | ||
mysql: { | ||
text : 'SELECT `customer`.`name`, (`customer`.`income` % ?) FROM `customer` WHERE (((`customer`.`age` + ?) * (`customer`.`age` - ?)) = ?)', | ||
string: 'SELECT `customer`.`name`, (`customer`.`income` % 100) FROM `customer` WHERE (((`customer`.`age` + 5) * (`customer`.`age` - 2)) = 10)' | ||
}, | ||
params: [100, 5, 2, 10] | ||
@@ -19,6 +28,15 @@ }); | ||
Harness.test({ | ||
query : customer.select(customer.name).where(customer.name.like(customer.id.plus('hello'))), | ||
pg : 'SELECT "customer"."name" FROM "customer" WHERE ("customer"."name" LIKE ("customer"."id" + $1))', | ||
sqlite: 'SELECT "customer"."name" FROM "customer" WHERE ("customer"."name" LIKE ("customer"."id" + $1))', | ||
mysql : 'SELECT `customer`.`name` FROM `customer` WHERE (`customer`.`name` LIKE (`customer`.`id` + ?))', | ||
query: customer.select(customer.name).where(customer.name.like(customer.id.plus('hello'))), | ||
pg: { | ||
text : 'SELECT "customer"."name" FROM "customer" WHERE ("customer"."name" LIKE ("customer"."id" + $1))', | ||
string: 'SELECT "customer"."name" FROM "customer" WHERE ("customer"."name" LIKE ("customer"."id" + \'hello\'))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT "customer"."name" FROM "customer" WHERE ("customer"."name" LIKE ("customer"."id" + $1))', | ||
string: 'SELECT "customer"."name" FROM "customer" WHERE ("customer"."name" LIKE ("customer"."id" + \'hello\'))' | ||
}, | ||
mysql: { | ||
text : 'SELECT `customer`.`name` FROM `customer` WHERE (`customer`.`name` LIKE (`customer`.`id` + ?))', | ||
string: 'SELECT `customer`.`name` FROM `customer` WHERE (`customer`.`name` LIKE (`customer`.`id` + \'hello\'))' | ||
}, | ||
params: ['hello'] | ||
@@ -30,6 +48,15 @@ }); | ||
Harness.test({ | ||
query : v.select(v.a.multiply(v.a).divide(2).plus(v.v.multiply(v.t)).equals(v.d)), | ||
pg : 'SELECT (((("variable"."a" * "variable"."a") / $1) + ("variable"."v" * "variable"."t")) = "variable"."d") FROM "variable"', | ||
sqlite: 'SELECT (((("variable"."a" * "variable"."a") / $1) + ("variable"."v" * "variable"."t")) = "variable"."d") FROM "variable"', | ||
mysql : 'SELECT ((((`variable`.`a` * `variable`.`a`) / ?) + (`variable`.`v` * `variable`.`t`)) = `variable`.`d`) FROM `variable`', | ||
query: v.select(v.a.multiply(v.a).divide(2).plus(v.v.multiply(v.t)).equals(v.d)), | ||
pg: { | ||
text : 'SELECT (((("variable"."a" * "variable"."a") / $1) + ("variable"."v" * "variable"."t")) = "variable"."d") FROM "variable"', | ||
string: 'SELECT (((("variable"."a" * "variable"."a") / 2) + ("variable"."v" * "variable"."t")) = "variable"."d") FROM "variable"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT (((("variable"."a" * "variable"."a") / $1) + ("variable"."v" * "variable"."t")) = "variable"."d") FROM "variable"', | ||
string: 'SELECT (((("variable"."a" * "variable"."a") / 2) + ("variable"."v" * "variable"."t")) = "variable"."d") FROM "variable"' | ||
}, | ||
mysql: { | ||
text : 'SELECT ((((`variable`.`a` * `variable`.`a`) / ?) + (`variable`.`v` * `variable`.`t`)) = `variable`.`d`) FROM `variable`', | ||
string: 'SELECT ((((`variable`.`a` * `variable`.`a`) / 2) + (`variable`.`v` * `variable`.`t`)) = `variable`.`d`) FROM `variable`' | ||
}, | ||
params: [2] | ||
@@ -40,7 +67,16 @@ }); | ||
Harness.test({ | ||
query : v.select(v.a.multiply(v.a).plus(v.b.multiply(v.b)).equals(v.c.multiply(v.c))), | ||
pg : 'SELECT ((("variable"."a" * "variable"."a") + ("variable"."b" * "variable"."b")) = ("variable"."c" * "variable"."c")) FROM "variable"', | ||
sqlite: 'SELECT ((("variable"."a" * "variable"."a") + ("variable"."b" * "variable"."b")) = ("variable"."c" * "variable"."c")) FROM "variable"', | ||
mysql : 'SELECT (((`variable`.`a` * `variable`.`a`) + (`variable`.`b` * `variable`.`b`)) = (`variable`.`c` * `variable`.`c`)) FROM `variable`', | ||
query: v.select(v.a.multiply(v.a).plus(v.b.multiply(v.b)).equals(v.c.multiply(v.c))), | ||
pg: { | ||
text : 'SELECT ((("variable"."a" * "variable"."a") + ("variable"."b" * "variable"."b")) = ("variable"."c" * "variable"."c")) FROM "variable"', | ||
string: 'SELECT ((("variable"."a" * "variable"."a") + ("variable"."b" * "variable"."b")) = ("variable"."c" * "variable"."c")) FROM "variable"' | ||
}, | ||
sqlite: { | ||
text : 'SELECT ((("variable"."a" * "variable"."a") + ("variable"."b" * "variable"."b")) = ("variable"."c" * "variable"."c")) FROM "variable"', | ||
string: 'SELECT ((("variable"."a" * "variable"."a") + ("variable"."b" * "variable"."b")) = ("variable"."c" * "variable"."c")) FROM "variable"' | ||
}, | ||
mysql: { | ||
text : 'SELECT (((`variable`.`a` * `variable`.`a`) + (`variable`.`b` * `variable`.`b`)) = (`variable`.`c` * `variable`.`c`)) FROM `variable`', | ||
string: 'SELECT (((`variable`.`a` * `variable`.`a`) + (`variable`.`b` * `variable`.`b`)) = (`variable`.`c` * `variable`.`c`)) FROM `variable`' | ||
}, | ||
params: [] | ||
}); |
@@ -7,13 +7,33 @@ 'use strict'; | ||
Harness.test({ | ||
query : user.where(user.id.isNotNull(), user.name.isNotNull()), | ||
pg : 'SELECT * FROM "user" WHERE (("user"."id" IS NOT NULL) AND ("user"."name" IS NOT NULL))', | ||
mysql : 'SELECT * FROM `user` WHERE ((`user`.`id` IS NOT NULL) AND (`user`.`name` IS NOT NULL))', | ||
sqlite: 'SELECT * FROM "user" WHERE (("user"."id" IS NOT NULL) AND ("user"."name" IS NOT NULL))' | ||
query: user.where(user.id.isNotNull(), user.name.isNotNull()), | ||
pg: { | ||
text : 'SELECT * FROM "user" WHERE (("user"."id" IS NOT NULL) AND ("user"."name" IS NOT NULL))', | ||
string: 'SELECT * FROM "user" WHERE (("user"."id" IS NOT NULL) AND ("user"."name" IS NOT NULL))' | ||
}, | ||
mysql: { | ||
text : 'SELECT * FROM `user` WHERE ((`user`.`id` IS NOT NULL) AND (`user`.`name` IS NOT NULL))', | ||
string: 'SELECT * FROM `user` WHERE ((`user`.`id` IS NOT NULL) AND (`user`.`name` IS NOT NULL))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT * FROM "user" WHERE (("user"."id" IS NOT NULL) AND ("user"."name" IS NOT NULL))', | ||
string: 'SELECT * FROM "user" WHERE (("user"."id" IS NOT NULL) AND ("user"."name" IS NOT NULL))' | ||
}, | ||
params: [] | ||
}); | ||
Harness.test({ | ||
query : user.and(user.id.isNotNull(), user.name.isNotNull()), | ||
pg : 'SELECT * FROM "user" WHERE (("user"."id" IS NOT NULL) AND ("user"."name" IS NOT NULL))', | ||
mysql : 'SELECT * FROM `user` WHERE ((`user`.`id` IS NOT NULL) AND (`user`.`name` IS NOT NULL))', | ||
sqlite: 'SELECT * FROM "user" WHERE (("user"."id" IS NOT NULL) AND ("user"."name" IS NOT NULL))' | ||
query: user.and(user.id.isNotNull(), user.name.isNotNull()), | ||
pg: { | ||
text : 'SELECT * FROM "user" WHERE (("user"."id" IS NOT NULL) AND ("user"."name" IS NOT NULL))', | ||
string: 'SELECT * FROM "user" WHERE (("user"."id" IS NOT NULL) AND ("user"."name" IS NOT NULL))' | ||
}, | ||
mysql: { | ||
text : 'SELECT * FROM `user` WHERE ((`user`.`id` IS NOT NULL) AND (`user`.`name` IS NOT NULL))', | ||
string: 'SELECT * FROM `user` WHERE ((`user`.`id` IS NOT NULL) AND (`user`.`name` IS NOT NULL))' | ||
}, | ||
sqlite: { | ||
text : 'SELECT * FROM "user" WHERE (("user"."id" IS NOT NULL) AND ("user"."name" IS NOT NULL))', | ||
string: 'SELECT * FROM "user" WHERE (("user"."id" IS NOT NULL) AND ("user"."name" IS NOT NULL))' | ||
}, | ||
params: [] | ||
}); |
@@ -5,3 +5,3 @@ /* global suite, test */ | ||
var sql = require(__dirname + '/../lib'); | ||
var sql = require('../lib'); | ||
@@ -20,6 +20,6 @@ var user = sql.define({ | ||
test('throws before dialect is set', function() { | ||
assert.throws(function() { | ||
var query = sql.select(user.id).where(user.email.equals('brian.m.carlson@gmail.com')).toQuery(); | ||
}); | ||
test('can create a query using the default dialect', function() { | ||
var query = sql.select(user.id).from(user).where(user.email.equals('brian.m.carlson@gmail.com')).toQuery(); | ||
assert.equal(query.text, 'SELECT "user"."id" FROM "user" WHERE ("user"."email" = $1)'); | ||
assert.equal(query.values[0], 'brian.m.carlson@gmail.com'); | ||
}); | ||
@@ -66,2 +66,30 @@ | ||
}); | ||
test('override dialect for toQuery using dialect name', function() { | ||
var Sql = sql.Sql; | ||
var mysql = new Sql('mysql'); | ||
var postgres = new Sql('postgres'); | ||
var sqlite = new Sql('sqlite'); | ||
var sqliteQuery = mysql.select(user.id).from(user).where(user.email.equals('brian.m.carlson@gmail.com')).toQuery('sqlite'); | ||
var postgresQuery = sqlite.select(user.id).from(user).where(user.email.equals('brian.m.carlson@gmail.com')).toQuery('postgres'); | ||
var mysqlQuery = postgres.select(user.id).from(user).where(user.email.equals('brian.m.carlson@gmail.com')).toQuery('mysql'); | ||
var values = ['brian.m.carlson@gmail.com']; | ||
assert.equal(sqliteQuery.text, 'SELECT "user"."id" FROM "user" WHERE ("user"."email" = $1)'); | ||
assert.deepEqual(sqliteQuery.values, values); | ||
assert.equal(postgresQuery.text, 'SELECT "user"."id" FROM "user" WHERE ("user"."email" = $1)'); | ||
assert.deepEqual(postgresQuery.values, values); | ||
assert.equal(mysqlQuery.text, 'SELECT `user`.`id` FROM `user` WHERE (`user`.`email` = ?)'); | ||
assert.deepEqual(mysqlQuery.values, values); | ||
}); | ||
test('override dialect for toQuery using invalid dialect name', function() { | ||
var query = sql.select(user.id).from(user); | ||
assert.throws(function() { | ||
query.toQuery('invalid'); | ||
}); | ||
}); | ||
}); |
Sorry, the diff of this file is not supported yet
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
194946
94
5277
114