Navigation Menu

Skip to content

Commit

Permalink
Add Domain#getSynonymsSync()
Browse files Browse the repository at this point in the history
  • Loading branch information
piroor committed Aug 9, 2012
1 parent 6acedab commit 39212b6
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 1 deletion.
27 changes: 26 additions & 1 deletion lib/database/domain.js
Expand Up @@ -22,6 +22,10 @@ var INDEX_SUFFIX =
exports.INDEX_SUFFIX =
Domain.INDEX_SUFFIX = 'index';

var SYNONYMS_COLUMN =
exports.SYNONYMS_COLUMN =
Domain.SYNONYMS_COKUMN = 'synonyms'

function assertValidDomainName(domain) {
if (typeof domain != 'string')
throw new Error('domain name must be a string');
Expand Down Expand Up @@ -248,9 +252,30 @@ Domain.prototype = {
});
},

getSynonymsSync: function() {
if (!this.context)
throw new Error('no context');

var options = {
table: this.synonymTableName,
match_columns: '_key,' + SYNONYMS_COLUMN
};
var synonyms = this.context.commandSync('select', options);

synonyms = nroonga.formatResults(synonyms);
Object.keys(synonyms).sort().forEach(function(key) {
var terms = synonyms[key];
terms = JSON.parse(terms);
synonyms[key] = terms.sort();
});

return synonyms;
},

updateSynonymsSync: function(synonymOptions) {
if (!this.context)
throw new Error('no context');

var synonyms = synonymOptions.synonyms;

try {
Expand All @@ -269,7 +294,7 @@ Domain.prototype = {
});
this.context.commandSync('column_create', {
table: this.synonymTableName,
name: 'synonyms',
name: SYNONYMS_COLUMN,
type: nroonga.ShortText,
flags: nroonga.COLUMN_VECTOR
});
Expand Down
17 changes: 17 additions & 0 deletions test/database-domain.test.js
Expand Up @@ -331,6 +331,23 @@ suite('database', function() {
assert.equal(dumpExpected, dumpActual);
});

test('getSynonymsSync', function() {
var domain = new Domain('companies', context);
domain.updateSynonymsSync({
synonyms: {
tokio: ['tonkin', 'tokyo'],
dekkaido: 'hokkaido'
}
});

var expectedSynonyms = {
dekkaido: ['hokkaido'],
tokio: ['tokyo', 'tonkin']
};
var synonyms = domain.getSynonymsSync();
assert.deepEqual(synonyms, expectedSynonyms);
});

test('getAll', function() {
var domain3 = new Domain('domain3', context);
domain3.createSync();
Expand Down

0 comments on commit 39212b6

Please sign in to comment.