不要怂,就是干,撸起袖子干!

Commit 1bf57680 by Sascha Depold

added IN finders

1 parent 9e4b54d2
...@@ -117,4 +117,5 @@ ...@@ -117,4 +117,5 @@
- [REFACTORING] renamed the global options for sync, query and define on sequelize; before: options.queryOptions; now: options.query - [REFACTORING] renamed the global options for sync, query and define on sequelize; before: options.queryOptions; now: options.query
- [FEATURE] allow definition of charset via global define option in sequelize or via charset option in sequelize.define - [FEATURE] allow definition of charset via global define option in sequelize or via charset option in sequelize.define
- [FEATURE] allow definition of mysql engine via global define option in sequelize or via engine option in sequelize.define; default is InnoDB now - [FEATURE] allow definition of mysql engine via global define option in sequelize or via engine option in sequelize.define; default is InnoDB now
- [FEATURE] find and findAll will now search in a list of values via: Model.findAll({where: { id: [1,2,3] }}); will return all models with id 1, 2 and 3
- [TEST] force latin1 charset for travis - [TEST] force latin1 charset for travis
...@@ -178,10 +178,19 @@ var QueryGenerator = module.exports = { ...@@ -178,10 +178,19 @@ var QueryGenerator = module.exports = {
*/ */
hashToWhereConditions: function(hash) { hashToWhereConditions: function(hash) {
return Utils._.map(hash, function(value, key) { return Utils._.map(hash, function(value, key) {
var _value = Utils.escape(value) var _key = Utils.addTicks(key)
, _key = Utils.addTicks(key) , _value = null
return (_value == 'NULL') ? _key + " IS NULL" : [_key, _value].join("=") if(Array.isArray(value)) {
_value = "(" + Utils._.map(value, function(subvalue) {
return Utils.escape(subvalue);
}).join(',') + ")"
return [_key, _value].join(" IN ")
} else {
_value = Utils.escape(value)
return (_value == 'NULL') ? _key + " IS NULL" : [_key, _value].join("=")
}
}).join(" AND ") }).join(" AND ")
} }
} }
var config = require("./config/config")
, Sequelize = require("../index")
, sequelize = new Sequelize(config.database, config.username, config.password, { logging: false })
, Helpers = new (require("./config/helpers"))(sequelize)
describe('Associations', function() {
beforeEach(function() { Helpers.sync() })
afterEach(function() { Helpers.drop() })
/////////// many-to-many with same prefix ////////////
describe('many-to-many', function() {
describe('where tables have the same prefix', function() {
var Table2 = sequelize.define('wp_table2', {foo: Sequelize.STRING})
, Table1 = sequelize.define('wp_table1', {foo: Sequelize.STRING})
Table1.hasMany(Table2)
Table2.hasMany(Table1)
it("should create a table wp_table1wp_table2s", function() {
expect(sequelize.modelManager.getModel('wp_table1swp_table2s')).toBeDefined()
})
})
})
})
...@@ -4,11 +4,11 @@ var config = require("./config/config") ...@@ -4,11 +4,11 @@ var config = require("./config/config")
, Helpers = new (require("./config/helpers"))(sequelize) , Helpers = new (require("./config/helpers"))(sequelize)
describe('ModelDefinition', function() { describe('ModelDefinition', function() {
var User = sequelize.define('User', { age: Sequelize.INTEGER, name: Sequelize.STRING, bio: Sequelize.TEXT })
beforeEach(function() { Helpers.sync() }) beforeEach(function() { Helpers.sync() })
afterEach(function() { Helpers.drop() }) afterEach(function() { Helpers.drop() })
var User = sequelize.define('User', { age: Sequelize.INTEGER, name: Sequelize.STRING, bio: Sequelize.TEXT })
//////////// all ////////////// //////////// all //////////////
describe('.all', function() { describe('.all', function() {
...@@ -42,7 +42,6 @@ describe('ModelDefinition', function() { ...@@ -42,7 +42,6 @@ describe('ModelDefinition', function() {
//////////// min ////////////// //////////// min //////////////
describe('.min', function() { describe('.min', function() {
it("should return the min value", function() { it("should return the min value", function() {
for(var i = 2; i < 5; i++) Helpers.Factories.User({ age: i }) for(var i = 2; i < 5; i++) Helpers.Factories.User({ age: i })
...@@ -52,13 +51,11 @@ describe('ModelDefinition', function() { ...@@ -52,13 +51,11 @@ describe('ModelDefinition', function() {
}) })
}) })
}) })
}) })
//////////// max ////////////// //////////// max //////////////
describe('.max', function() { describe('.max', function() {
it("should return the max value", function() { it("should return the max value", function() {
for(var i = 2; i <= 5; i++) Helpers.Factories.User({ age: i }) for(var i = 2; i <= 5; i++) Helpers.Factories.User({ age: i })
...@@ -68,22 +65,5 @@ describe('ModelDefinition', function() { ...@@ -68,22 +65,5 @@ describe('ModelDefinition', function() {
}) })
}) })
}) })
})
/////////// many-to-many with same prefix ////////////
describe('many-to-many', function() {
describe('where tables have the same prefix', function() {
var Table2 = sequelize.define('wp_table2', {foo: Sequelize.STRING})
, Table1 = sequelize.define('wp_table1', {foo: Sequelize.STRING})
Table1.hasMany(Table2)
Table2.hasMany(Table1)
it("should create a table wp_table1wp_table2s", function() {
expect(sequelize.modelManager.getModel('wp_table1swp_table2s')).toBeDefined()
})
})
}) })
}) })
var config = require("./config/config")
, Sequelize = require("../index")
, sequelize = new Sequelize(config.database, config.username, config.password, { logging: false })
, Helpers = new (require("./config/helpers"))(sequelize)
, QueryGenerator = require("../lib/sequelize/query-generator")
describe('QueryGenerator', function() {
beforeEach(function() { Helpers.sync() })
afterEach(function() { Helpers.drop() })
describe('hashToWhereConditions', function() {
it("should correctly transform array into IN", function() {
expect(
QueryGenerator.hashToWhereConditions({ id: [1,2,3] })
).toEqual(
"`id` IN (1,2,3)"
)
})
})
})
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!