Comparing version 0.3.1 to 0.3.2
@@ -271,3 +271,2 @@ !function(){ | ||
transaction = this._getDatabase().createTransaction(); | ||
this._save(transaction, noReload, function(err){ | ||
@@ -317,7 +316,5 @@ if (err) { | ||
//log.error(this._defintion.getTableName()); | ||
//log(query); | ||
if (this._fromDb){ | ||
if (this._changedValues.length) { | ||
this._defintion.primaryKeys.forEach(function(key){ | ||
@@ -324,0 +321,0 @@ query.filter[key] = this[key]; |
@@ -36,3 +36,7 @@ !function(){ | ||
this._workerCount = value; | ||
if (value === 0) this.emit('idle'); | ||
if (value === 0) { | ||
process.nextTick(function(){ | ||
this.emit('idle'); | ||
}.bind(this)); | ||
} | ||
} | ||
@@ -81,4 +85,5 @@ } | ||
if (this._workers) { | ||
this.once('idle', function(){ | ||
this._executeSave(transaction, noReload, callback); | ||
this.once('idle', function() { | ||
if (this._error) callback(this._error); | ||
else this._executeSave(transaction, noReload, callback); | ||
}.bind(this)); | ||
@@ -396,2 +401,3 @@ } | ||
if (callback) callback(err); | ||
else this._error = err; | ||
} | ||
@@ -476,3 +482,3 @@ else { | ||
this.off(evt, listener); | ||
}); | ||
}.bind(this)); | ||
} | ||
@@ -479,0 +485,0 @@ }} |
@@ -29,2 +29,17 @@ !function(){ | ||
, or: function(){ | ||
var a = Array.prototype.slice.call(arguments); | ||
a.mode = 'or'; | ||
return a; | ||
} | ||
, and: function(){ | ||
var a = Array.prototype.slice.call(arguments); | ||
a.mode = 'and'; | ||
return a; | ||
} | ||
, in: function(values) { | ||
@@ -31,0 +46,0 @@ return function(){ |
@@ -9,4 +9,2 @@ !function(){ | ||
module.exports = function(database) { | ||
@@ -17,2 +15,3 @@ return Object.create(database, { | ||
if (this._transaction) this._transaction.commit(callback); | ||
else if (this._transaction === false) callback(); | ||
else callback(new Error('Cannot commit! The transaction has already eneded.')); | ||
@@ -25,2 +24,3 @@ this._endTransaction(); | ||
if (this._transaction) this._transaction.rollback(callback); | ||
else if (this._transaction === false) callback(); | ||
else callback(new Error('Cannot rollback! The transaction has already eneded.')); | ||
@@ -52,5 +52,5 @@ this._endTransaction(); | ||
, _transaction: {value: null, writable:true, configurable: true} | ||
, _transaction: {value: false, writable:true, configurable: true} | ||
}); | ||
} | ||
}(); |
{ | ||
"name" : "ee-orm" | ||
, "description" : "An easy to use ORM for node.js. Supports advanced eager loading, complex queries, joins, transactions, complex database clusters & connection pooling." | ||
, "version" : "0.3.1" | ||
, "version" : "0.3.2" | ||
, "homepage" : "https://github.com/eventEmitter/ee-orm" | ||
@@ -6,0 +6,0 @@ , "author" : "Michael van der Weg <michael@eventemitter.com> (http://eventemitter.com/)" |
27
test.js
@@ -23,11 +23,30 @@ | ||
if (err) log(err); | ||
if (data) data.dir(); | ||
if (data && data.dir) data.dir(); | ||
} | ||
/*return new db.eventLocale({ | ||
description : 'some text' | ||
db.event({id: ORM.and(2,3)}).find(cb); | ||
return; | ||
/*return new db.eventLocasle({ | ||
description : 'ssome text' | ||
, language : db.language({id:1}) | ||
, event : db.event({id:1}) | ||
}).save(log);*/ | ||
db.event({canceled: ORM.notNull()}).find(cb); | ||
var i = 1 | ||
, items = []; | ||
while(i--) items.push(i); | ||
setTimeout(function(){ | ||
log.error('----------------'); | ||
async.each(items, function(nope, cb){ | ||
new db.event({ | ||
title: Math.random() | ||
, venue: db.venue() | ||
, startdate: new Date() | ||
}).save(cb); | ||
}, cb); | ||
}, 1500); | ||
/* | ||
@@ -34,0 +53,0 @@ orm.ee_orm_test.venue.setMappingAccessorName('venue_image', 'image');*/ |
@@ -393,2 +393,79 @@ | ||
}); | ||
it('with a reference fetched using a query', function(done){ | ||
db.event({id:1}).findOne(function(err, event){ | ||
if (err) done(err); | ||
else { | ||
event.venue = db.venue({id:2}); | ||
event.save(function(err){ | ||
if (err) done(err); | ||
else db.event({id:1},['*']).getVenue(['*']).findOne(expect('{"id":1,"venue":{"id":2,"name":"Dachstock Reitschule"},"title":"Changed title","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":null}', done)); | ||
}); | ||
} | ||
}); | ||
}); | ||
it('with a new reference', function(done){ | ||
db.event({id:1}).findOne(function(err, event){ | ||
if (err) done(err); | ||
else { | ||
event.venue = new db.venue({ | ||
name: 'another venue' | ||
, logo: db.image({id:1}) | ||
, municipality: db.municipality({id:1}) | ||
}); | ||
event.save(function(err){ | ||
if (err) done(err); | ||
else db.event({id:1},['*']).getVenue(['*']).findOne(expect('{"id":1,"venue":{"id":3,"name":"another venue"},"title":"Changed title","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":null}', done)); | ||
}); | ||
} | ||
}); | ||
}); | ||
it('with a mapping fetched using a query', function(done){ | ||
db.event({id:1}).findOne(function(err, event){ | ||
if (err) done(err); | ||
else { | ||
event.venue = db.venue({id:2}); | ||
event.image.push(db.image({id:3})); | ||
event.save(function(err){ | ||
if (err) done(err); | ||
else db.event({id:1},['*']).getImage(['*']).findOne(expect('{"image":[{"id":3,"url":"http://i.imgur.com/fYaV6tK.gif"},{"id":1,"url":"http://gfycat.com/ScentedPresentKingfisher.gif"}],"id":1,"title":"Changed title","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":null}', done)); | ||
}); | ||
} | ||
}); | ||
}); | ||
it('with a new mapping record', function(done){ | ||
db.event({id:2}).findOne(function(err, event){ | ||
if (err) done(err); | ||
else { | ||
event.venue = db.venue({id:2}); | ||
event.image.push(new db.image({url:'http://i.imgur.com/1vjB9yu.gif'})); | ||
event.save(function(err){ | ||
if (err) done(err); | ||
else db.event({id:2},['*']).getImage(['*']).findOne(expect('{"image":[{"id":7,"url":"http://i.imgur.com/1vjB9yu.gif"}],"id":2,"title":"Mapping Test","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":null}', done)); | ||
}); | ||
} | ||
}); | ||
}); | ||
/*it('with a belonging record fetched using a query', function(done){ | ||
db.event({id:1}).findOne(function(err, event){ | ||
if (err) done(err); | ||
else { | ||
event.venue = db.venue({id:2}); | ||
event.eventLocale.push(db.eventLocale().getLanguage({id:1}).limit(1)); | ||
event.save(function(err){ | ||
if (err) done(err); | ||
else db.event({id:1},['*']).getEventLocale(['*']).findOne(expect('{"image":[{"id":3,"url":"http://i.imgur.com/fYaV6tK.gif"},{"id":1,"url":"http://gfycat.com/ScentedPresentKingfisher.gif"}],"id":1,"title":"Changed title","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":null}', done)); | ||
}); | ||
} | ||
}); | ||
});*/ | ||
}); | ||
@@ -406,3 +483,3 @@ | ||
it('Filter using null', function(done){ | ||
db.event({canceled: null}).find(expect('[{"id":2,"title":"Mapping Test","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":null},{"id":1,"title":"Changed title","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":null}]', done)); | ||
db.event({canceled: null}).find(expect('[{"id":1,"title":"Changed title","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":null},{"id":2,"title":"Mapping Test","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":null}]', done)); | ||
}); | ||
@@ -419,3 +496,3 @@ | ||
it('Using multiple values on the same column', function(done){ | ||
db.event({id: ORM.in([1, 2])}).find(expect('[{"id":2,"title":"Mapping Test","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":null},{"id":1,"title":"Changed title","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":null}]', done)); | ||
db.event({id: ORM.in([1, 2])}).find(expect('[{"id":1,"title":"Changed title","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":null},{"id":2,"title":"Mapping Test","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":null}]', done)); | ||
}); | ||
@@ -432,10 +509,43 @@ | ||
it('Records with the >= operator', function(done){ | ||
db.event({id: ORM.gte(2)}).find(expect('[{"id":2,"title":"Mapping Test","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":null},{"id":3,"title":"Mapping Test","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":true}]', done)); | ||
db.event({id: ORM.gte(2)}).find(expect('[{"id":3,"title":"Mapping Test","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":true},{"id":2,"title":"Mapping Test","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":null}]', done)); | ||
}); | ||
it('Records with the <= operator', function(done){ | ||
db.event({id: ORM.lte(2)}).find(expect('[{"id":2,"title":"Mapping Test","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":null},{"id":1,"title":"Changed title","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":null}]', done)); | ||
db.event({id: ORM.lte(2)}).find(expect('[{"id":1,"title":"Changed title","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":null},{"id":2,"title":"Mapping Test","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":null}]', done)); | ||
}); | ||
it('Filtering for two values using OR', function(done){ | ||
db.event({id: ORM.or(2,3)}).find(expect('[{"id":3,"title":"Mapping Test","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":true},{"id":2,"title":"Mapping Test","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":null}]', done)); | ||
}); | ||
it('Filtering for two values using AND', function(done){ | ||
db.event({id: ORM.and(2,3)}).find(expect('[]', done)); | ||
}); | ||
it('Filtering for two values using OR and differet operators', function(done){ | ||
db.event({id: ORM.and(ORM.gt(2),3)}).find(expect('[{"id":3,"title":"Mapping Test","startdate":"1970-01-01T00:00:00.000Z","enddate":null,"canceled":true}]', done)); | ||
}); | ||
}); | ||
describe('Connection Pooling', function(){ | ||
/*it('should be able to insert 1000 items at once', function(done){ | ||
var i = 1000 | ||
, items = []; | ||
this.timeout(30000); | ||
while(i--) items.push(i); | ||
async.each(items, function(nope, cb){ | ||
new db.event({ | ||
title: Math.random() | ||
, venue: db.venue({id:1}) | ||
, startdate: new Date() | ||
}).save(cb); | ||
}, done); | ||
});*/ | ||
}); | ||
}); | ||
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
165276
3093