Navigation Menu

Skip to content

Commit

Permalink
Load batchs via Domain#addRecordSync and Domain#deleteRecordSync
Browse files Browse the repository at this point in the history
  • Loading branch information
piroor committed Aug 13, 2012
1 parent 700083e commit 3baf262
Showing 1 changed file with 33 additions and 43 deletions.
76 changes: 33 additions & 43 deletions lib/batch/processor.js
@@ -1,5 +1,4 @@
var nroonga = require('../wrapped-nroonga');
var translator = require('./translator');
var Domain = require('../database').Domain;
var Deferred = require('jsdeferred').Deferred;

Expand All @@ -17,7 +16,6 @@ Processor.prototype = {
if (!this.context && !this.databasePath)
throw new Error('no database path');
this.context = new nroonga.Context(this.context || this.databasePath);
this.translator = new translator.Translator(this.domain, this.context);
},
validate: function(batches) {
var fields = this.domain.indexFields;
Expand Down Expand Up @@ -72,61 +70,53 @@ Processor.prototype = {
return errors;
},
load: function(batches) {
var commandSets = this.translator.translate(batches);
var result = {
adds: 0,
deletes: 0,
errors: [],
warnings: []
};
var result = this.createNewResult();
var self = this;
return Deferred.loop(commandSets.length, function(i) {
var commandSet = commandSets[i];
return self.context.commandDeferred(commandSet.command,
commandSet.options)
.next(function(commandResult) {
switch (commandSet.command) {
case 'load':
result.adds++;
break;
case 'delete':
result.deletes++;
break;
}
})
.error(function(error) {
result.errors.push(error);
});
return Deferred.loop(batches.length, function(i) {
self.loadOneBatchSync(batches[i], result);
})
.error(function(error) {
result.errors.push(error);
})
.next(function() {
return self.formatResult(result);
});
},
loadSync: function(batches) {
var commandSets = this.translator.translate(batches);
var result = {
adds: 0,
deletes: 0,
errors: [],
warnings: []
};
commandSets.forEach(function(commandSet) {
var result = this.createNewResult();
batches.forEach(function(batch) {
try {
this.context.commandSync(commandSet.command, commandSet.options);
switch (commandSet.command) {
case 'load':
result.adds++;
break;
case 'delete':
result.deletes++;
break;
}
this.loadOneBatchSync(batch, result);
} catch(error) {
result.errors.push(error);
}
}, this);
return this.formatResult(result);
},
loadOneBatchSync: function(batch, results) {
switch (batch.type) {
case 'add':
var record = { id: batch.id };
Object.keys(batch.fields).forEach(function(key) {
record[key] = batch.fields[key];
});
this.domain.addRecordSync(record);
results.adds++;
break;
case 'delete':
this.domain.deleteRecordSync(batch.id);
results.deletes++;
break;
}
},
createNewResult: function() {
return {
adds: 0,
deletes: 0,
errors: [],
warnings: []
};
},
formatResult: function(result) {
var formattedResult = {
status: 'success',
Expand Down

0 comments on commit 3baf262

Please sign in to comment.