New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More

thinky

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

thinky - npm Package Compare versions

Comparing version

to
1.1.1

@@ -559,10 +559,35 @@ var eventEmitter = require('events').EventEmitter;

if (constructor.getTableName() < model._joins[key].model.getTableName()) {
newLink.id = self[model._joins[key].leftKey]+"_"+link;
if ((constructor.getTableName() === model._joins[key].model.getTableName())
&& (model._joins[key].leftKey === model._joins[key].rightKey)) {
// We link on the same model and same key
// We don't want to save redundant field
if (link < self[model._joins[key].leftKey]) {
newLink.id = link+"_"+self[model._joins[key].leftKey];
}
else {
newLink.id = self[model._joins[key].leftKey]+"_"+link;
}
newLink[model._joins[key].leftKey+"_"+model._joins[key].leftKey] = [link, self[model._joins[key].leftKey]];
}
else {
newLink.id = link+"_"+self[model._joins[key].leftKey];
newLink[constructor.getTableName()+"_"+model._joins[key].leftKey] = self[model._joins[key].leftKey];
newLink[model._joins[key].model.getTableName()+"_"+model._joins[key].rightKey] = link;
// Create the primary key
if (constructor.getTableName() < model._joins[key].model.getTableName()) {
newLink.id = self[model._joins[key].leftKey]+"_"+link;
}
else if (constructor.getTableName() > model._joins[key].model.getTableName()) {
newLink.id = link+"_"+self[model._joins[key].leftKey];
}
else {
if (link < self[model._joins[key].leftKey]) {
newLink.id = link+"_"+self[model._joins[key].leftKey];
}
else {
newLink.id = self[model._joins[key].leftKey]+"_"+link;
}
}
}
newLink[constructor.getTableName()+"_"+model._joins[key].leftKey] = self[model._joins[key].leftKey];
newLink[model._joins[key].model.getTableName()+"_"+model._joins[key].rightKey] = link;

@@ -569,0 +594,0 @@ (function(key, link) {

@@ -235,3 +235,3 @@ var util = require(__dirname+'/util.js');

Model.prototype.ensureIndex = function(name, fn) {
Model.prototype.ensureIndex = function(name, fn, opts) {
var self = this;

@@ -254,3 +254,3 @@ var r = self._getModel()._thinky.r;

r.table(tableName).indexWait(name),
r.table(tableName).indexCreate(name, fn).do(function() {
r.table(tableName).indexCreate(name, fn, opts || {}).do(function() {
return r.table(tableName).indexWait(name)

@@ -552,3 +552,3 @@ })

else {
joinedModel.on('created', function() {
joinedModel.once('created', function() {
query.run().then(function() {

@@ -586,3 +586,3 @@ joinedModel._indexWasCreated('local');

var self = this;
var link;
var link, query;
var thinky = this._getModel()._thinky;

@@ -632,2 +632,3 @@

// Create the two indexes on two models
var queryIndex1 = r.branch(

@@ -643,3 +644,5 @@ r.table(self.getTableName()).indexList().contains(leftKey),

)
)
);
// This could try to create the same index, but that's ok
var queryIndex2 = r.branch(

@@ -655,28 +658,4 @@ r.table(joinedModel.getTableName()).indexList().contains(rightKey),

)
)
);
var query = r.branch(
r.table(link).indexList().contains(self.getTableName()+'_'+leftKey),
r.table(link).indexWait(self.getTableName()+'_'+leftKey),
r.table(link).indexCreate(self.getTableName()+'_'+leftKey).do(function() {
return r.table(link).indexWait(self.getTableName()+'_'+leftKey)
})
).do(function() {
return r.branch(
r.table(link).indexList().contains(self.getTableName()+'_'+leftKey),
r.table(link).indexWait(self.getTableName()+'_'+leftKey),
r.table(link).indexCreate(self.getTableName()+'_'+leftKey).do(function() {
return r.table(link).indexWait(self.getTableName()+'_'+leftKey)
})
)
}).do(function() {
return r.branch(
r.table(link).indexList().contains(joinedModel.getTableName()+'_'+rightKey),
r.table(link).indexWait(joinedModel.getTableName()+'_'+rightKey),
r.table(link).indexCreate(joinedModel.getTableName()+'_'+rightKey).do(function() {
return r.table(link).indexWait(joinedModel.getTableName()+'_'+rightKey)
})
)
})
self._getModel()._tableReady = false;

@@ -686,3 +665,2 @@ joinedModel._getModel()._tableReady = false;

joinedModel._getModel()._foreignIndexesToCreate++;
if (self._getModel()._tableCreated === true) {

@@ -704,3 +682,3 @@ queryIndex1.run().then(function(result) {

else {
self.on('created', function() {
self.once('created', function() {
queryIndex1.run().then(function() {

@@ -721,3 +699,2 @@ self._indexWasCreated('local');

joinedModel._getModel()._tableReady = false;
joinedModel._getModel()._indexesToCreate++;

@@ -741,3 +718,3 @@ self._getModel()._foreignIndexesToCreate++;

else {
joinedModel.on('created', function() {
joinedModel.once('created', function() {
queryIndex2.run().then(function() {

@@ -759,3 +736,35 @@ joinedModel._indexWasCreated('local');

if ((this.getTableName() === joinedModel.getTableName())
&& (leftKey === rightKey)) {
// The relation is built for the same model, using the same key
// Create a multi index
query = r.branch(
r.table(link).indexList().contains(leftKey+"_"+rightKey),
r.table(link).indexWait(leftKey+"_"+rightKey),
r.table(link).indexCreate(leftKey+"_"+rightKey, function(doc) {
return doc(leftKey+"_"+rightKey)
}, {multi: true}).do(function() {
return r.table(link).indexWait(leftKey+"_"+rightKey)
})
)
}
else {
query = r.branch(
r.table(link).indexList().contains(self.getTableName()+'_'+leftKey),
r.table(link).indexWait(self.getTableName()+'_'+leftKey),
r.table(link).indexCreate(self.getTableName()+'_'+leftKey).do(function() {
return r.table(link).indexWait(self.getTableName()+'_'+leftKey)
})
).do(function() {
return r.branch(
r.table(link).indexList().contains(joinedModel.getTableName()+'_'+rightKey),
r.table(link).indexWait(joinedModel.getTableName()+'_'+rightKey),
r.table(link).indexCreate(joinedModel.getTableName()+'_'+rightKey).do(function() {
return r.table(link).indexWait(joinedModel.getTableName()+'_'+rightKey)
})
)
})
}
return new Promise(function(resolve, reject) {

@@ -793,3 +802,3 @@ var successCb = function() {

else {
linkModel.on('ready', function() {
linkModel.once('ready', function() {
query.run().then(successCb).error(errorCb)

@@ -796,0 +805,0 @@ });

@@ -72,3 +72,3 @@ var Promise = require('bluebird');

p = new Promise(function(resolve, reject) {
self._model.on('ready', function() {
self._model.once('ready', function() {
self._query.run(fullOptions).then(function(result) {

@@ -130,2 +130,3 @@ if (parse === true) {

}
var innerQuery;

@@ -203,11 +204,21 @@ gotModel = gotModel || {};

self._query = self._query.merge(function(doc) {
if ((modelToGet[key] != null) && (modelToGet[key]._order != null)) {
if ((model.getTableName() === joins[key].model.getTableName()) && (joins[key].leftKey === joins[key].rightKey)) {
// In case the model is linked with itself on the same key
innerQuery = r.table(joins[key].link).getAll(doc(joins[key].leftKey), {index: joins[key].leftKey+"_"+joins[key].leftKey}).concatMap(function(link) {
return r.table(joins[key].model.getTableName()).getAll(
r.branch(
doc(joins[key].leftKey).eq(link(joins[key].leftKey+"_"+joins[key].leftKey).nth(0)),
link(joins[key].leftKey+"_"+joins[key].leftKey).nth(1),
link(joins[key].leftKey+"_"+joins[key].leftKey).nth(0)
)
, {index: joins[key].rightKey})
}).coerceTo("ARRAY")
if ((modelToGet[key] != null) && (modelToGet[key]._order != null)) {
innerQuery = innerQuery.orderBy(modelToGet[key]._order)
}
return r.branch(
doc.hasFields(joins[key].leftKey),
r.object(key,
new Query(joins[key].model,
r.table(joins[key].link).getAll(doc(joins[key].leftKey), {index: model.getTableName()+"_"+joins[key].leftKey}).concatMap(function(link) {
return r.table(joins[key].model.getTableName()).getAll(link(joins[key].model.getTableName()+"_"+joins[key].rightKey), {index: joins[key].rightKey})
}).coerceTo("ARRAY").orderBy(modelToGet[key]._order)
)._query),
r.object(key, new Query(joins[key].model, innerQuery).getJoin(modelToGet[key], getAll, gotModel)._query),
{}

@@ -217,10 +228,13 @@ )

else {
innerQuery = r.table(joins[key].link).getAll(doc(joins[key].leftKey), {index: model.getTableName()+"_"+joins[key].leftKey}).concatMap(function(link) {
return r.table(joins[key].model.getTableName()).getAll(link(joins[key].model.getTableName()+"_"+joins[key].rightKey), {index: joins[key].rightKey})
}).coerceTo("ARRAY")
if ((modelToGet[key] != null) && (modelToGet[key]._order != null)) {
innerQuery = innerQuery.orderBy(modelToGet[key]._order);
}
return r.branch(
doc.hasFields(joins[key].leftKey),
r.object(key,
new Query(joins[key].model,
r.table(joins[key].link).getAll(doc(joins[key].leftKey), {index: model.getTableName()+"_"+joins[key].leftKey}).concatMap(function(link) {
return r.table(joins[key].model.getTableName()).getAll(link(joins[key].model.getTableName()+"_"+joins[key].rightKey), {index: joins[key].rightKey})
}).coerceTo("ARRAY")
)._query),
new Query(joins[key].model, innerQuery).getJoin(modelToGet[key], getAll, gotModel)._query),
{}

@@ -227,0 +241,0 @@ )

{
"name": "thinky",
"version": "1.1.0",
"version": "1.1.1",
"description": "RethinkDB ORM for Node.js",

@@ -27,3 +27,3 @@ "main": "lib/thinky.js",

"dependencies":{
"rethinkdbdash": ">= 1.12.8",
"rethinkdbdash": ">= 1.12.12",
"bluebird": ">= 1.2.1"

@@ -30,0 +30,0 @@ },