[Groonga-commit] groonga/gcs [master] Build IndexField status from IndexField instance

Back to archive index

null+****@clear***** null+****@clear*****
2012年 8月 1日 (水) 11:33:13 JST


piro	2012-08-01 11:33:13 +0900 (Wed, 01 Aug 2012)

  New Revision: 9d6a65945237f1b625bf86a5197eee7fedcf04cf
  https://github.com/groonga/gcs/commit/9d6a65945237f1b625bf86a5197eee7fedcf04cf

  Log:
    Build IndexField status from IndexField instance

  Modified files:
    lib/api/2011-02-01/configuration.js
    lib/database/index-field.js
    test/api-configuration.test.js

  Modified: lib/api/2011-02-01/configuration.js (+10 -15)
===================================================================
--- lib/api/2011-02-01/configuration.js    2012-08-01 11:24:46 +0900 (da31258)
+++ lib/api/2011-02-01/configuration.js    2012-08-01 11:33:13 +0900 (ca6b900)
@@ -124,13 +124,13 @@ handlers.DeleteDomain = function(context, request, response) {
 };
 
 function createIndexFieldOptionStatus(options) {
-  switch (options.fieldType) {
+  switch (options.field.type) {
     case 'text':
       var textOptions = xmlbuilder.create();
       textOptions.begin('TextOptions', { version: '1.0' })
         .element('DefaultValue').up()
-        .element('FacetEnabled').text(options.facetEnabled || 'false').up()
-        .element('ResultEnabled').text(options.resultEnabled || 'false');
+        .element('FacetEnabled').text(options.field.facetEnabled).up()
+        .element('ResultEnabled').text(options.field.resultEnabled);
       return textOptions;
     case 'uint':
       var uintOptions = xmlbuilder.create();
@@ -141,9 +141,9 @@ function createIndexFieldOptionStatus(options) {
       var literalOptions = xmlbuilder.create();
       literalOptions.begin('LiteralOptions', { version: '1.0' })
         .element('DefaultValue').up()
-        .element('FacetEnabled').text(options.facetEnabled || 'false').up()
-        .element('ResultEnabled').text(options.resultEnabled || 'false').up()
-        .element('SearchEnabled').text(options.searchEnabled || 'false');
+        .element('FacetEnabled').text(options.field.facetEnabled).up()
+        .element('ResultEnabled').text(options.field.resultEnabled).up()
+        .element('SearchEnabled').text(options.field.searchEnabled);
       return literalOptions;
   }
 }
@@ -152,14 +152,14 @@ function createIndexFieldStatus(options) {
   var indexFieldStatus = xmlbuilder.create();
   indexFieldStatus.begin('IndexField', { version: '1.0' })
     .element('Options')
-      .element('IndexFieldName').text(options.fieldName).up()
-      .element('IndexFieldType').text(options.fieldType).up()
+      .element('IndexFieldName').text(options.field.name).up()
+      .element('IndexFieldType').text(options.field.type).up()
       .importXMLBuilder(createIndexFieldOptionStatus(options))
     .up()
     .element('Status')
       .element('CreationDate').text(dateFormat(options.createdAt,
                                                'isoUtcDateTime')).up()
-      .element('State').text(options.state).up()
+      .element('State').text(options.field.state).up()
       .element('UpdateDate').text(dateFormat(options.updatedAt,
                                              'isoUtcDateTime')).up()
       .element('UpdateVersion').text(options.updateVersion || '0').up()
@@ -188,17 +188,12 @@ handlers.DefineIndexField = function(context, request, response) {
   var field = domain.getIndexField(fieldName);
 
   var createdAt = new Date();
-  var resultEnabled = fieldType != 'literal';
   try {
     field.type = fieldType;
     field.createSync();
     response.contentType('application/xml');
     response.send(createDefineIndexFieldResponse({
-      fieldName: fieldName,
-      fieldType: fieldType,
-      facetEnabled: false,
-      resultEnabled: resultEnabled,
-      state: 'RequiresIndexDocuments',
+      field: field,
       createdAt: createdAt,
       updatedAt: createdAt
     }));

  Modified: lib/database/index-field.js (+20 -0)
===================================================================
--- lib/database/index-field.js    2012-08-01 11:24:46 +0900 (cccac53)
+++ lib/database/index-field.js    2012-08-01 11:33:13 +0900 (f499691)
@@ -140,6 +140,26 @@ IndexField.prototype = {
     return this._type = type
   },
 
+  get defaultValue() {
+    return null;
+  },
+
+  get facetEnabled() {
+    return this.type != 'text';
+  },
+
+  get resultEnabled() {
+    return true;
+  },
+
+  get searchEnabled() {
+    return true;
+  },
+
+  get state() {
+    return 'RequiresIndexDocuments';
+  },
+
   createSync: function() {
     var alterTableName = this.domain.termsTableName;
 

  Modified: test/api-configuration.test.js (+3 -3)
===================================================================
--- test/api-configuration.test.js    2012-08-01 11:24:46 +0900 (4c48bf9)
+++ test/api-configuration.test.js    2012-08-01 11:33:13 +0900 (df1d11d)
@@ -435,9 +435,9 @@ suite('Configuration API', function() {
               IndexFieldType: 'literal',
               LiteralOptions: {
                 DefaultValue: {},
-                FacetEnabled: 'false',
-                ResultEnabled: 'false',
-                SearchEnabled: 'false'
+                FacetEnabled: 'true',
+                ResultEnabled: 'true',
+                SearchEnabled: 'true'
               }
             };
         var options = response.body.DefineIndexFieldResponse.DefineIndexFieldResult.IndexField.Options;
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
다운로드 



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