Navigation Menu

Skip to content

Commit

Permalink
Implement load command
Browse files Browse the repository at this point in the history
TODO:

  * validation
  * unit tests
  • Loading branch information
kou committed Apr 25, 2014
1 parent d27cc7a commit 71095f8
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 0 deletions.
53 changes: 53 additions & 0 deletions lib/adapter/api/groonga.js
@@ -1,10 +1,63 @@
var command = require('../command');
var jsonParser = require('jsonparse');

var statusCodes = {
SUCCESS: 0
};

module.exports = {
'groonga': new command.HTTPRequestResponse({
path: '/d/:commandName',
onRequest: function(request, connection) {
connection.emit(request.params.commandName, request.query);
}
}),
'groonga-load': new command.HTTPRequestResponse({
method: 'POST',
path: '/d/load',
onRequest: function(request, connection, response) {
var parser = new jsonParser();
var nRecords = 0;
var nResponses = 0;
var nAdded = 0;
var isEnd = false;
var startTimeInMilliseconds = Date.now();

parser.onValue = function(value) {
if (parser.stack.length != 1) {
return;
}

nRecords++;
var message = {
table: request.query.table, // TODO: validate it
key: value._key,
values: {}
};
connection.emit('add', message, function(error, message) {
nResponses++;
if (!error && message) {
nAdded++;
}
if (isEnd && nRecords == nResponses) {
var statusCode = statusCodes.SUCCESS;
var elapsedTimeInMilliseconds =
Date.now() - startTimeInMilliseconds;
var header = [
statusCode,
startTimeInMilliseconds / 1000,
elapsedTimeInMilliseconds / 1000,
];
response.jsonp([header, [nAdded]]);
}
});
};
request.on('data', function(chunk) {
parser.write(chunk);
});
request.once('end', function() {
isEnd = true;
});
}
})
};
1 change: 1 addition & 0 deletions package.json
Expand Up @@ -25,6 +25,7 @@
"fluent-logger": "*",
"inflection": "*",
"jade": "*",
"jsonparse": "*",
"less-middleware": ">=0.2",
"uber-cache": "*",
"method-override": "*",
Expand Down

0 comments on commit 71095f8

Please sign in to comment.