[Groonga-commit] nroonga/nroonga [master] Return dumped string as the result of "dump" command correctly

Back to archive index

null+****@clear***** null+****@clear*****
2012年 6月 11日 (月) 18:20:25 JST


SHIMODA Hiroshi	2012-06-11 18:20:25 +0900 (Mon, 11 Jun 2012)

  New Revision: 0f32446d844fec54ad07b01e135f31858f8cc306

  Log:
    Return dumped string as the result of "dump" command correctly

  Modified files:
    lib/nroonga.js
    src/nroonga.coffee
    test/database.test.coffee

  Modified: lib/nroonga.js (+16 -5)
===================================================================
--- lib/nroonga.js    2012-06-09 20:27:21 +0900 (0bbadbd)
+++ lib/nroonga.js    2012-06-11 18:20:25 +0900 (84ee838)
@@ -1,5 +1,6 @@
+// Generated by CoffeeScript 1.3.3
 (function() {
-  var msgpack, nroonga, optionsToCommandString, overrideOutputType;
+  var formatResult, msgpack, nroonga, optionsToCommandString, overrideOutputType;
 
   nroonga = module.exports = require('../build/Release/nroonga_bindings.node');
 
@@ -29,15 +30,25 @@
     return options;
   };
 
+  formatResult = function(result, command) {
+    if (command === 'dump') {
+      return result.toString('UTF-8');
+    } else {
+      return msgpack.unpack(result);
+    }
+  };
+
   nroonga.Database.prototype.commandSync = function(command, options) {
     var result;
-    if (options == null) options = {};
+    if (options == null) {
+      options = {};
+    }
     options = overrideOutputType(options, 'msgpack');
     result = this.commandSyncString(optionsToCommandString(command, options));
     if (result.length > 0) {
-      return msgpack.unpack(result);
+      return formatResult(result, command);
     } else {
-      return;
+      return void 0;
     }
   };
 
@@ -52,7 +63,7 @@
       if (error != null) {
         return callback(error);
       } else {
-        return callback(void 0, msgpack.unpack(data));
+        return callback(void 0, formatResult(data, command));
       }
     } : void 0;
     return this.commandString(optionsToCommandString(command, options), wrappedCallback);

  Modified: src/nroonga.coffee (+8 -2)
===================================================================
--- src/nroonga.coffee    2012-06-09 20:27:21 +0900 (469f715)
+++ src/nroonga.coffee    2012-06-11 18:20:25 +0900 (27e806f)
@@ -16,11 +16,17 @@ overrideOutputType = (optionsGiven, type) ->
   options.output_type = type
   options
 
+formatResult = (result, command) ->
+  if command == 'dump'
+    result.toString('UTF-8')
+  else
+    msgpack.unpack(result)
+
 nroonga.Database.prototype.commandSync = (command, options={}) ->
   options = overrideOutputType(options, 'msgpack')
   result = this.commandSyncString(optionsToCommandString(command, options))
   if result.length > 0
-    msgpack.unpack(result)
+    formatResult(result, command)
   else
     undefined
 
@@ -35,7 +41,7 @@ nroonga.Database.prototype.command = (command, options, callback) ->
       if error?
         callback error
       else
-        callback undefined, msgpack.unpack(data)
+        callback undefined, formatResult(data, command)
   else
     undefined
 

  Modified: test/database.test.coffee (+22 -0)
===================================================================
--- test/database.test.coffee    2012-06-09 20:27:21 +0900 (eac819b)
+++ test/database.test.coffee    2012-06-11 18:20:25 +0900 (aae0773)
@@ -101,3 +101,25 @@ describe 'database with data stored', ->
         query: 'search ranguba'
       matched[0][0][0].should.equal(1)
       done()
+
+  it 'should dump all records', (done) ->
+    withTestDatabase (db) ->
+      result = db.commandSync('dump', tables: 'Site')
+      expected_dump = 'table_create Site TABLE_HASH_KEY ShortText\n' +
+                      'column_create Site title COLUMN_SCALAR ShortText\n' +
+                      'table_create Terms TABLE_PAT_KEY|KEY_NORMALIZE ' +
+                        'ShortText --default_tokenizer TokenBigram\n' +
+                      'column_create Terms entry_title ' +
+                        'COLUMN_INDEX|WITH_POSITION Site title\n' +
+                      'load --table Site\n' +
+                      '[\n' +
+                      '["_key","title"],\n' +
+                      '["http://groonga.org/","groonga - An open-source ' +
+                        'fulltext search engine and column store"],\n' +
+                      '["http://groonga.rubyforge.org/","Fulltext search by ' +
+                        'Ruby with groonga - Ranguba"],\n' +
+                      '["http://mroonga.github.com/","Groonga storage ' +
+                        'engine - Fast fulltext search on MySQL"]\n' +
+                      ']'
+      result.should.equal(expected_dump)
+      done()




Groonga-commit メーリングリストの案内
Back to archive index