Navigation Menu

Skip to content

Commit

Permalink
Return field with empty value if it is "noresult"
Browse files Browse the repository at this point in the history
  • Loading branch information
piroor committed Aug 24, 2012
1 parent 3944bbb commit 0c342ea
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 5 deletions.
20 changes: 15 additions & 5 deletions lib/api/2011-02-01/search.js
@@ -1,6 +1,7 @@
// -*- indent-tabs-mode: nil; js2-basic-offset: 2 -*-

var SelectQuery = require('../../select-query').SelectQuery;
var IndexField = require('../../database').IndexField;

var dummyRid = '000000000000000000000000000000000000000000000000000000000000000';

Expand Down Expand Up @@ -30,7 +31,7 @@ function formatFacet(drilldownRecord) {
return {constraints: constraints};
}

function formatSelectResults(data) {
function formatSelectResults(data, selectQuery) {
var columnList = data[0][1];
var columnNames = columnList.map(function(column) {
return column[0];
Expand All @@ -40,6 +41,7 @@ function formatSelectResults(data) {
var results = records.map(function(record) {
var result = {};
var data = {};

columnNames.forEach(function(columnName, index) {
// bind internal "_key" column to the "id"
if (columnName == '_key') {
Expand All @@ -48,16 +50,24 @@ function formatSelectResults(data) {
}
// don't expose any internal column
if (columnName[0] == '_') return;

var fieldName = IndexField.toFieldName(columnName);
if (Array.isArray(record[index])) {
// vector column
data[columnName] = record[index];
data[fieldName] = record[index];
} else {
// scalar column
data[columnName] = [record[index]];
data[fieldName] = [record[index]];
}
});
if (Object.keys(data).length)

emptyReturnFields.forEach(function(fieldName) {
data[fieldName] = [];
});

if (selectQuery.returnFields.length)
result.data = data;

return result;
});
return results;
Expand All @@ -75,7 +85,7 @@ function select(context, selectQuery, callback) {
var numFoundRecords = data[0][0][0];
callback(
null,
formatSelectResults(data),
formatSelectResults(data, selectQuery),
numFoundRecords,
formatFacets(data)
);
Expand Down
24 changes: 24 additions & 0 deletions lib/select-query.js
Expand Up @@ -132,6 +132,30 @@ SelectQuery.prototype = {
this.matchExpression = matchExpression;
},

get emptyReturnFields() {
if (this._emptyReturnFields === undefined)
this._emptyReturnFields = this.prepareEmptyReturnFields();
return this._emptyReturnFields;
},
prepareEmptyReturnFields: function() {
return this.returnFields.filter(function(fieldName) {
var field = this.domain.getIndexField(fieldName);
return field.exists() && !field.resultEnabled;
}, this)
},

get emptyFacets() {
if (this._emptyFacets === undefined)
this._emptyFacets = this.prepareEmptyFacets();
return this._emptyFacets;
},
prepareEmptyFacets: function() {
return this.facets.filter(function(fieldName) {
var field = this.domain.getIndexField(fieldName);
return field.exists() && !field.facetEnabled;
}, this)
},

// for groonga query
get filter() {
return this.filters.join(' && ');
Expand Down

0 comments on commit 0c342ea

Please sign in to comment.