[Groonga-commit] groonga/gcs [master] Output index field summaries

Back to archive index

YUKI Hiroshi null+****@clear*****
Mon Oct 15 15:42:39 JST 2012


YUKI Hiroshi	2012-10-15 15:42:39 +0900 (Mon, 15 Oct 2012)

  New Revision: 85f1578227d1dada02e02a928457c7127b29fdfe
  https://github.com/groonga/gcs/commit/85f1578227d1dada02e02a928457c7127b29fdfe

  Log:
    Output index field summaries

  Modified files:
    bin/gcs-describe-domain
    lib/command-line.js

  Modified: bin/gcs-describe-domain (+24 -16)
===================================================================
--- bin/gcs-describe-domain    2012-10-15 15:09:29 +0900 (160c176)
+++ bin/gcs-describe-domain    2012-10-15 15:42:39 +0900 (d1aecae)
@@ -52,25 +52,25 @@ function report(domain) {
   console.log('======================');
 }
 
-function reportDomainStatus(status) {
+function reportStatus(domain, indexFields) {
   console.log('=== Domain Summary ===');
   console.log('Domain Name: %s',
-              status.DomainName);
+              domain.DomainName);
   console.log('Document Service endpoint: %s',
-              status.DocService.Endpoint);
+              domain.DocService.Endpoint);
   console.log('Search Service endpoint: %s',
-               status.SearchService.Endpoint);
+              domain.SearchService.Endpoint);
   console.log('SearchInstanceType: %s',
               null);
   console.log('SearchPartitionCount: %s',
-              status.SearchPartitionCount);
+              domain.SearchPartitionCount);
   console.log('SearchInstanceCount: %s',
-              status.SearchInstanceCount);
+              domain.SearchInstanceCount);
   console.log('Searchable Documents: %s',
-              status.NumSearchableDocs);
+              domain.NumSearchableDocs);
   console.log('Current configuration changes require a call to ' +
                 'IndexDocuments: %s',
-              status.RequiresIndexDocuments ? 'Yes' : 'No' );
+              domain.RequiresIndexDocuments == 'true' ? 'Yes' : 'No' );
 
 //  // additional information for the default search field!
 //  var field = status.defaultSearchField;
@@ -83,9 +83,9 @@ function reportDomainStatus(status) {
   console.log('');
   console.log('Fields:');
   console.log('=======');
-//  domain.indexFields.forEach(function(field) {
-//    console.log(field.summary);
-//  });
+  indexFields.forEach(function(indexField) {
+    console.log(commandLine.summarizeIndexFieldStatus(indexField));
+  });
   console.log('======================');
 }
 
@@ -96,11 +96,19 @@ function outputNotesForHostAndPort() {
               'default information.');
 }
 
-if (commandLine.options.domainName) {
-  commandLine.getDomainStatus(function(error, domainStatus) {
-    reportDomainStatus(domainStatus);
-    outputNotesForHostAndPort();
-  });
+if (commandLine.domainName) {
+  commandLine.getDomainStatus(
+    commandLine.domainName,
+    function(error, domainStatus) {
+      commandLine.getIndexFieldStatus(
+        commandLine.domainName,
+        function(error, indexFieldStatuses) {
+          reportStatus(domainStatus, indexFieldStatuses);
+          outputNotesForHostAndPort();
+        }
+      );
+    }
+  );
 } else {
   var domains = CLI.Domain.getAll(commandLine.context);
   domains.forEach(function(domain, index) {

  Modified: lib/command-line.js (+59 -14)
===================================================================
--- lib/command-line.js    2012-10-15 15:09:29 +0900 (ccfe338)
+++ lib/command-line.js    2012-10-15 15:42:39 +0900 (ff176fe)
@@ -129,30 +129,75 @@ CommandLineInterface.prototype = {
     return this;
   },
 
-  getDomainStatus: function(callback) {
-    var domainName = this.domainName;
-    this.cloudSearch.DescribeDomains(function(error, data) {
+  getDomainStatus: function(domainName, callback) {
+    this.getDomainStatuses(
+      { 'DomainNames.member.1' : domainName },
+      function(error, domainStatuses) {
+        if (domainStatuses.length) {
+          callback(null, domainStatuses[0]);
+        } else {
+          console.log('You must specify an existing domain name.');
+          process.exit(1);
+        }
+      }
+    });
+  },
+
+  getDomainStatuses: function(options, callback) {
+    this.cloudSearch.DescribeDomains(options, function(error, response) {
       if (error) {
         console.log('Unexpected error: ' + JSON.stringify(error));
         process.exit(1);
       }
-      var matchedDomains = data.Body
+      var domainStatuses = response.Body
            .DescribeDomainsResponse
            .DescribeDomainsResult
            .DomainStatusList
-           .member
-           .filter(function(domainStatus) {
-             return domainStatus.DomainName == domainName;
-           });
-      if (matchedDomains.length) {
-        callback(null, matchedDomains[0]);
-      } else {
-        console.log('You must specify an existing domain name.');
-        process.exit(1);
-      }
+           .member;
+      callback(null, domainStatuses);
     });
   },
 
+  getIndexFieldStatuses: function(domainName, callback) {
+    this.cloudSearch.DescribeIndexFields(
+      { DomainName: domainName },
+      function(error, response) {
+        if (error) {
+          console.log('Unexpected error: ' + JSON.stringify(error));
+          process.exit(1);
+        }
+        var indexFields = response.Body
+             .DescribeIndexFieldsResponse
+             .DescribeIndexFieldsResult
+             .IndexFields
+             .member;
+        callback(null, indexFields);
+      }
+    );
+  },
+
+  summarizeIndexFieldStatus: function(status) {
+    var type = status.Options.TextOptions ? 'text' :
+               status.Options.UIntOptions ? 'uint' :
+               status.Options.LiteralOptions ? 'literal' :
+               null;
+
+    var options = status.Options.TextOptions ||
+                  status.Options.UIntOptions ||
+                  status.Options.LiteralOptions;
+    var summarizedOptions = [];
+    if (type == 'text' || type == 'uint' || options.SearchEnabled == 'true')
+      summarizedOptions.push('Search');
+    if (type != 'uint' && options.FacetEnabled == 'true')
+      summarizedOptions.push('Facet');
+    if (type == 'uint' || options.ResultEnabled == 'true')
+      summarizedOptions.push('Result');
+
+    return status.Options.IndexFieldName + ' ' +
+             status.Status.State + ' ' +
+             type + ' (' + summarizedOptions.join(' ') + ')';
+  },
+
   assertDomainExists: function() {
     if (!this.domain.exists()) {
       console.log('You must specify an existing domain name.');
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index