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