[Groonga-commit] groonga/gcs [master] Use saveSync instead of createSync generally

Back to archive index

YUKI Hiroshi null+****@clear*****
Wed Nov 21 17:38:47 JST 2012


YUKI Hiroshi	2012-11-21 17:38:47 +0900 (Wed, 21 Nov 2012)

  New Revision: 7b1dd2841b51a80a72a5eb2685fa124ec955d057
  https://github.com/groonga/gcs/commit/7b1dd2841b51a80a72a5eb2685fa124ec955d057

  Log:
    Use saveSync instead of createSync generally

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

  Modified: lib/api/2011-02-01/configuration.js (+2 -6)
===================================================================
--- lib/api/2011-02-01/configuration.js    2012-11-21 17:24:35 +0900 (28a17e8)
+++ lib/api/2011-02-01/configuration.js    2012-11-21 17:38:47 +0900 (d1aa3a3)
@@ -159,8 +159,7 @@ handlers.CreateDomain = function(context, request, response, config) {
   var domain = handleDomanValidationError(function() {
         return new Domain(request.query.DomainName || '', context).validate();
       });
-  if (!domain.exists())
-    domain.createSync();
+  domain.saveSync();
   var result = createDomainStatus({
         domain:      domain,
         hostAndPort: getBaseHostAndPort(config, request)
@@ -351,10 +350,7 @@ handlers.DefineIndexField = function(context, request, response, config) {
   if (searchEnabled !== undefined)
     field.searchEnabled = searchEnabled.toLowerCase() == 'true';
 
-  if (!field.exists())
-    field.createSync();
-  else
-    field.saveOptionsSync();
+  field.saveSync();
 
   var result = createIndexFieldStatus({
         field: field,

  Modified: lib/database/domain.js (+9 -0)
===================================================================
--- lib/database/domain.js    2012-11-21 17:24:35 +0900 (45633ab)
+++ lib/database/domain.js    2012-11-21 17:38:47 +0900 (3717495)
@@ -410,6 +410,15 @@ Domain.prototype = {
     return this;
   },
 
+  saveSync: function() {
+    this.validate();
+
+    if (!this.exists())
+      this.createSync();
+
+    return this;
+  },
+
   deleteSync: function() {
     this.validate();
 

  Modified: lib/database/index-field.js (+21 -19)
===================================================================
--- lib/database/index-field.js    2012-11-21 17:24:35 +0900 (5ad8e50)
+++ lib/database/index-field.js    2012-11-21 17:38:47 +0900 (d1cfad6)
@@ -141,19 +141,16 @@ function IndexField(name, domain) {
 };
 IndexField.prototype = {
   initialize: function() {
-    // for validation
-    this.columnName;
   },
 
   validate: function() {
+    assertValidFieldName(this.name);
     return this;
   },
 
   get columnName() {
-    if (!this._columnName) {
-      assertValidFieldName(this.name);
+    if (!this._columnName)
       this._columnName = IndexField.toColumnNamePart(this.name);
-    }
     return this._columnName;
   },
   get indexColumnName() {
@@ -212,6 +209,9 @@ IndexField.prototype = {
     if (this._type)
       return this._type;
 
+    return this.actualType;
+  },
+  get actualType() {
     var column = this.column;
     if (!column)
       throw new Error('the index field ' + this.name + ' is not created yet');
@@ -231,14 +231,7 @@ IndexField.prototype = {
     throw new Error('unknown unfixed column ' + this.columnName);
   },
   set type(type) {
-    assertValidFieldType(type);
-    if (this.exists()) {
-      if  (type != this.type)
-        this.changeTypeToSync(type);
-    } else {
-      this._type = type;
-    }
-    return type;
+    return this._type = type;
   },
   setType: function(type) {
     this.type = type;
@@ -419,6 +412,8 @@ IndexField.prototype = {
   },
 
   createSync: function(multipleValues) {
+    this.validate();
+
     var indexTableName = this.domain.termsTableName;
 
     var type = this.type;
@@ -449,8 +444,6 @@ IndexField.prototype = {
       source: this.columnName
     });
 
-    this.saveOptionsSync();
-
     var now = new Date();
     if (!this._createdAt) {
       this.updatedAt = this.createdAt = now;
@@ -462,8 +455,15 @@ IndexField.prototype = {
 
     return this;
   },
-  saveOptionsSync: function() {
-    if (!this.exists()) return this;
+
+  saveSync: function(multipleValues) {
+    this.validate();
+
+    if (!this.exists())
+      this.createSync(multipleValues);
+
+    if (this.type != this.actualType)
+      this.changeTypeToSync(this.type);
 
     this.facetEnabled;
     if (this._facetEnabled !== undefined)
@@ -490,6 +490,7 @@ IndexField.prototype = {
 
     return this;
   },
+
   deleteSync: function() {
     // backup information for re-creation
     this._type = this.type;
@@ -522,6 +523,7 @@ IndexField.prototype = {
 
     return this;
   },
+
   reindexSync: function() {
     var name = this.name;
     var type = this.type;
@@ -570,7 +572,7 @@ IndexField.prototype = {
     if (this.multipleValues) return this;
     var values = this.domain.dumpSync();
     this.deleteSync();
-    this.createSync(true);
+    this.saveSync(true);
     this.domain.loadSync(values);
     this.updatedAt = new Date();
     return this;
@@ -581,7 +583,7 @@ IndexField.prototype = {
     var multipleValues = this.multipleValues;
     this.deleteSync();
     this._type = type;
-    this.createSync(multipleValues);
+    this.saveSync(multipleValues);
     var name = this.columnName;
     values.forEach(function(record) {
       var value = record[name];

  Modified: test/database-domain.test.js (+6 -6)
===================================================================
--- test/database-domain.test.js    2012-11-21 17:24:35 +0900 (450ec7a)
+++ test/database-domain.test.js    2012-11-21 17:38:47 +0900 (0f6c3a3)
@@ -563,7 +563,7 @@ suite('database', function() {
 
       test('deleteSync', function() {
         var domain = new Domain('companies', context);
-        domain.createSync();
+        domain.saveSync();
         assert.isTrue(domain.exists());
 
         domain.deleteSync();
@@ -576,7 +576,7 @@ suite('database', function() {
 
       test('deleteSync again', function() {
         var domain = new Domain('companies', context);
-        domain.createSync();
+        domain.saveSync();
         domain.deleteSync();
         assert.throw(function() {
           domain.deleteSync();
@@ -696,13 +696,13 @@ suite('database', function() {
 
       test('getAll', function() {
         var domain3 = new Domain('domain3', context);
-        domain3.createSync();
+        domain3.saveSync();
 
         var domain1 = new Domain('domain1', context);
-        domain1.createSync();
+        domain1.saveSync();
 
         var domain2 = new Domain('domain2', context);
-        domain2.createSync();
+        domain2.saveSync();
 
         var allDomains = Domain.getAll(context);
         assert.deepEqual(allDomains.map(function(domain) {
@@ -860,7 +860,7 @@ suite('database', function() {
         temporaryDatabase = utils.createTemporaryDatabase();
         context = temporaryDatabase.get();
         domain = new Domain('companies', context);
-        domain.createSync();
+        domain.saveSync();
       });
 
       teardown(function() {

  Modified: test/database-index-field.test.js (+45 -45)
===================================================================
--- test/database-index-field.test.js    2012-11-21 17:24:35 +0900 (c74b281)
+++ test/database-index-field.test.js    2012-11-21 17:38:47 +0900 (025af3b)
@@ -16,7 +16,7 @@ suite('database', function() {
       context = temporaryDatabase.get();
       domain = new Domain('testdomain', context);
       domain.id = Domain.DEFAULT_ID;
-      domain.createSync();
+      domain.saveSync();
     });
 
     teardown(function() {
@@ -98,7 +98,7 @@ suite('database', function() {
       var field = new IndexField('foo', domain);
       assert.throw(function() {
         field.type = null;
-        field.createSync();
+        field.validate();
       }, '1 validation error detected: ' +
            'Value null at \'%TYPE_FIELD%\' failed to satisfy constraint: ' +
              'Member must not be null');
@@ -108,7 +108,7 @@ suite('database', function() {
       var field = new IndexField('foo', domain);
       assert.throw(function() {
         field.type = 'unknown';
-        field.createSync();
+        field.validate();
       }, '1 validation error detected: ' +
            'Value \'unknown\' at \'%TYPE_FIELD%\' failed to satisfy constraint: ' +
              'Member must satisfy enum value set: [text, literal, uint]');
@@ -143,7 +143,7 @@ suite('database', function() {
     test('initial status (text)', function() {
       var field = new IndexField('text', domain);
       field.type = 'text';
-      field.createSync();
+      field.validate();
       assert.deepEqual({
         facetEnabled:  field.facetEnabled,
         resultEnabled: field.resultEnabled,
@@ -162,7 +162,7 @@ suite('database', function() {
     test('initial status (uint)', function() {
       var field = new IndexField('uint', domain);
       field.type = 'uint';
-      field.createSync();
+      field.validate();
       assert.deepEqual({
         facetEnabled:  field.facetEnabled,
         resultEnabled: field.resultEnabled,
@@ -181,7 +181,7 @@ suite('database', function() {
     test('initial status (literal)', function() {
       var field = new IndexField('literal', domain);
       field.type = 'literal';
-      field.createSync();
+      field.validate();
       assert.deepEqual({
         facetEnabled:  field.facetEnabled,
         resultEnabled: field.resultEnabled,
@@ -198,9 +198,9 @@ suite('database', function() {
     });
 
     test('summary', function() {
-      var textField =    new IndexField('name', domain).setType('text').createSync();
-      var uintField =    new IndexField('age', domain).setType('uint').createSync();
-      var literalField = new IndexField('product', domain).setType('literal').createSync();
+      var textField =    new IndexField('name', domain).setType('text').saveSync();
+      var uintField =    new IndexField('age', domain).setType('uint').saveSync();
+      var literalField = new IndexField('product', domain).setType('literal').saveSync();
       assert.deepEqual({ text:    textField.summary,
                          uint:    uintField.summary,
                          literal: literalField.summary },
@@ -262,7 +262,7 @@ suite('database', function() {
         temporaryDatabase = utils.createTemporaryDatabase();
         context = temporaryDatabase.get();
         domain = new Domain('companies', context);
-        domain.createSync();
+        domain.saveSync();
       });
 
       teardown(function() {
@@ -275,29 +275,29 @@ suite('database', function() {
         assert.equal('Search', field.options);
 
         field.facetEnabled = true;
-        field.createSync();
+        field.saveSync();
 
         field = new IndexField('name', domain); // reset instance from database
         assert.equal('Search Facet', field.options);
       });
 
       test('create text field with conflicting options', function() {
-        var field = new IndexField('name', domain).setType('text').createSync();
+        var field = new IndexField('name', domain).setType('text').saveSync();
         field.facetEnabled = true;
         assert.throw(function() {
           field.resultEnabled = true;
-          field.saveOptionsSync();
+          field.saveSync();
         }, ' Error defining field: name. '+
              'An IndexField may not be both FacetEnabled and ResultEnabled');
       });
 
       test('update text field with options', function() {
         var field = new IndexField('name', domain).setType('text');
-        field.createSync();
+        field.saveSync();
         assert.equal('Search', field.options);
 
         field.resultEnabled = true;
-        field.saveOptionsSync();
+        field.saveSync();
 
         field = new IndexField('name', domain); // reset instance from database
         assert.equal('Search Result', field.options);
@@ -305,31 +305,31 @@ suite('database', function() {
 
       test('invalid modification of options for text field', function() {
         var field = new IndexField('name', domain).setType('text');
-        field.createSync();
+        field.saveSync();
         field.searchEnabled = true;
         assert.throw(function() {
           field.searchEnabled = false;
-          field.saveOptionsSync();
+          field.saveSync();
         }, 'searchable option cannot be configured for the type text');
       });
 
       test('invalid modification of options for uint field', function() {
         var field = new IndexField('age', domain).setType('uint');
-        field.createSync();
+        field.saveSync();
         field.searchEnabled = true;
         assert.throw(function() {
           field.searchEnabled = false;
-          field.saveOptionsSync();
+          field.saveSync();
         }, 'searchable option cannot be configured for the type uint');
         field.facetEnabled = false;
         assert.throw(function() {
           field.facetEnabled = true;
-          field.saveOptionsSync();
+          field.saveSync();
         }, 'facet option cannot be configured for the type uint');
         field.resultEnabled = true;
         assert.throw(function() {
           field.resultEnabled = false;
-          field.saveOptionsSync();
+          field.saveSync();
         }, 'returnable option cannot be configured for the type uint');
       });
 
@@ -339,7 +339,7 @@ suite('database', function() {
 
         field.searchEnabled = true;
         field.facetEnabled = true;
-        field.createSync();
+        field.saveSync();
 
         field = new IndexField('product', domain); // reset instance from database
         assert.equal('Search Facet', field.options);
@@ -351,19 +351,19 @@ suite('database', function() {
         field.facetEnabled = true;
         assert.throw(function() {
           field.resultEnabled = true;
-          field.saveOptionsSync();
+          field.saveSync();
         }, ' Error defining field: product. '+
              'An IndexField may not be both FacetEnabled and ResultEnabled');
       });
 
       test('update literal field with options', function() {
         var field = new IndexField('product', domain).setType('literal');
-        field.createSync();
+        field.saveSync();
         assert.equal('', field.options);
 
         field.searchEnabled = true;
         field.resultEnabled = true;
-        field.saveOptionsSync();
+        field.saveSync();
 
         field = new IndexField('product', domain); // reset instance from database
         assert.equal('Search Result', field.options);
@@ -371,24 +371,24 @@ suite('database', function() {
 
       test('setting default search field', function() {
         var field = new IndexField('product', domain).setType('literal');
-        field.createSync();
+        field.saveSync();
 
         field.defaultSearchField = true;
-        field.saveOptionsSync();
+        field.saveSync();
         assert.equal(domain.defaultSearchField,
                      domain.getIndexField('product'));
 
         field.defaultSearchField = false;
-        field.saveOptionsSync();
+        field.saveSync();
         assert.isTrue(domain.defaultSearchField === null,
                       domain.defaultSearchField);
       });
 
       test('auto-remove default search field', function() {
         var field = new IndexField('product', domain).setType('literal');
-        field.createSync();
+        field.saveSync();
         field.defaultSearchField = true;
-        field.saveOptionsSync();
+        field.saveSync();
         assert.equal(domain.defaultSearchField,
                      domain.getIndexField('product'));
 
@@ -407,7 +407,7 @@ suite('database', function() {
         temporaryDatabase = utils.createTemporaryDatabase();
         context = temporaryDatabase.get();
         domain = new Domain('companies', context);
-        domain.createSync();
+        domain.saveSync();
       });
 
       teardown(function() {
@@ -434,7 +434,7 @@ suite('database', function() {
         field.type = 'text';
         assert.isFalse(field.exists());
 
-        field.createSync();
+        field.saveSync();
         assert.isTrue(field.exists());
         assert.isFalse(field.multipleValues);
 
@@ -461,7 +461,7 @@ suite('database', function() {
 
       test('deleteSync for text field', function() {
         var field = new IndexField('name', domain).setType('text');
-        field.createSync();
+        field.saveSync();
         assert.isTrue(field.exists());
 
         field.deleteSync();
@@ -510,7 +510,7 @@ suite('database', function() {
 
       test('deleteSync for uint field', function() {
         var field = new IndexField('age', domain).setType('uint');
-        field.createSync();
+        field.saveSync();
         assert.isTrue(field.exists());
 
         field.deleteSync();
@@ -560,7 +560,7 @@ suite('database', function() {
 
       test('deleteSync for literal field', function() {
         var field = new IndexField('product', domain).setType('literal');
-        field.createSync();
+        field.saveSync();
         assert.isTrue(field.exists());
 
         field.deleteSync();
@@ -583,7 +583,7 @@ suite('database', function() {
         temporaryDatabase = utils.createTemporaryDatabase();
         context = temporaryDatabase.get();
         domain = new Domain('companies', context);
-        domain.createSync();
+        domain.saveSync();
       });
 
       teardown(function() {
@@ -621,7 +621,7 @@ suite('database', function() {
 
       test('upgradeToMultipleValuesSync', function() {
         var field = new IndexField('product', domain).setType('literal');
-        field.createSync();
+        field.saveSync();
         assert.isFalse(field.multipleValues);
 
         field.domain.loadSync([
@@ -651,7 +651,7 @@ suite('database', function() {
         temporaryDatabase = utils.createTemporaryDatabase();
         context = temporaryDatabase.get();
         domain = new Domain('companies', context);
-        domain.createSync();
+        domain.saveSync();
       });
 
       teardown(function() {
@@ -665,11 +665,11 @@ suite('database', function() {
         assert.equal(product.type, 'text');
         product.type = 'literal';
         assert.equal(product.type, 'literal');
-        product.createSync();
+        product.saveSync();
       });
 
       test('for existing field (text to literal)', function() {
-        var field = new IndexField('product', domain).setType('text').createSync();
+        var field = new IndexField('product', domain).setType('text').saveSync();
         assert.equal(field.type, 'text');
         assert.isTrue(field.exists());
 
@@ -690,7 +690,7 @@ suite('database', function() {
       });
 
       test('for existing field (literal to text)', function() {
-        var field = new IndexField('product', domain).setType('literal').createSync();
+        var field = new IndexField('product', domain).setType('literal').saveSync();
         assert.equal(field.type, 'literal');
         assert.isTrue(field.exists());
 
@@ -712,7 +712,7 @@ suite('database', function() {
       });
 
       test('for existing field (text to uint)', function() {
-        var field = new IndexField('age', domain).setType('text').createSync();
+        var field = new IndexField('age', domain).setType('text').saveSync();
         assert.equal(field.type, 'text');
         assert.isTrue(field.exists());
 
@@ -736,7 +736,7 @@ suite('database', function() {
       });
 
       test('for existing field (uint to text)', function() {
-        var field = new IndexField('age', domain).setType('uint').createSync();
+        var field = new IndexField('age', domain).setType('uint').saveSync();
         assert.equal(field.type, 'uint');
         assert.isTrue(field.exists());
 
@@ -758,7 +758,7 @@ suite('database', function() {
       });
 
       test('for existing field (literal to uint)', function() {
-        var field = new IndexField('age', domain).setType('literal').createSync();
+        var field = new IndexField('age', domain).setType('literal').saveSync();
         assert.equal(field.type, 'literal');
         assert.isTrue(field.exists());
 
@@ -782,7 +782,7 @@ suite('database', function() {
       });
 
       test('for existing field (uint to literal)', function() {
-        var field = new IndexField('age', domain).setType('uint').createSync();
+        var field = new IndexField('age', domain).setType('uint').saveSync();
         assert.equal(field.type, 'uint');
         assert.isFalse(field.multipleValues);
         assert.isTrue(field.exists());
-------------- next part --------------
HTML����������������������������...
Download 



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