[Groonga-commit] groonga/gcs [master] Save creation and update date for domain options

Back to archive index

YUKI Hiroshi null+****@clear*****
Fri Nov 16 18:52:11 JST 2012


YUKI Hiroshi	2012-11-16 18:52:11 +0900 (Fri, 16 Nov 2012)

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

  Log:
    Save creation and update date for domain options

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

  Modified: lib/api/2011-02-01/configuration.js (+8 -12)
===================================================================
--- lib/api/2011-02-01/configuration.js    2012-11-16 18:34:18 +0900 (41f0a7b)
+++ lib/api/2011-02-01/configuration.js    2012-11-16 18:52:11 +0900 (52e6c0d)
@@ -465,11 +465,10 @@ handlers.UpdateSynonymOptions = function(context, request, response, config) {
   var synonymOptions = JSON.parse(synonymOptionsJson);
   domain.updateSynonymsSync(synonymOptions.synonyms);
 
-  var updatedAt = new Date();
   var result = createSynonymOptionsStatus({
         domain:    domain,
-        updatedAt: updatedAt,
-        createdAt: updatedAt
+        updatedAt: options.domain.getOptionCreationDate('synonyms'),
+        createdAt: options.domain.getOptionUpdateDate('synonyms')
       });
   response.contentType('application/xml');
   response.send(createGenericResponse('UpdateSynonymOptions', result, request.id));
@@ -477,11 +476,10 @@ handlers.UpdateSynonymOptions = function(context, request, response, config) {
 
 handlers.DescribeSynonymOptions = function(context, request, response, config) {
   var domain = new Domain(request.query.DomainName, context);
-  var updatedAt = new Date();
   var result = createSynonymOptionsStatus({
         domain:    domain,
-        updatedAt: updatedAt,
-        createdAt: updatedAt
+        updatedAt: options.domain.getOptionCreationDate('synonyms'),
+        createdAt: options.domain.getOptionUpdateDate('synonyms')
       });
   response.contentType('application/xml');
   response.send(createGenericResponse('DescribeSynonymOptions', result, request.id));
@@ -506,11 +504,10 @@ handlers.UpdateDefaultSearchField = function(context, request, response, config)
   var fieldName = request.query.DefaultSearchField;
   domain.defaultSearchField = fieldName;
 
-  var updatedAt = new Date();
   var result = createDefaultSearchFieldStatus({
         fieldName: fieldName,
-        createdAt: updatedAt,
-        updatedAt: updatedAt
+        updatedAt: options.domain.getOptionCreationDate('defaultSearchField'),
+        createdAt: options.domain.getOptionUpdateDate('defaultSearchField')
       });
   response.contentType('application/xml');
   response.send(createGenericResponse('UpdateDefaultSearchField', result, request.id));
@@ -519,11 +516,10 @@ handlers.UpdateDefaultSearchField = function(context, request, response, config)
 handlers.DescribeDefaultSearchField = function(context, request, response, config) {
   var domain = new Domain(request.query.DomainName, context);
   var field = domain.defaultSearchField;
-  var updatedAt = new Date();
   var result = createDefaultSearchFieldStatus({
         fieldName: field ? field.name : '',
-        createdAt: updatedAt,
-        updatedAt: updatedAt
+        updatedAt: options.domain.getOptionCreationDate('defaultSearchField'),
+        createdAt: options.domain.getOptionUpdateDate('defaultSearchField')
       });
   response.contentType('application/xml');
   response.send(createGenericResponse('DescribeDefaultSearchField', result, request.id));

  Modified: lib/database/domain.js (+37 -0)
===================================================================
--- lib/database/domain.js    2012-11-16 18:34:18 +0900 (4f7a57f)
+++ lib/database/domain.js    2012-11-16 18:52:11 +0900 (d5ec41d)
@@ -268,12 +268,44 @@ Domain.prototype = {
       if (value.exists())
         this.setConfiguration(this.defaultSearchFieldConfigurationKey, value.name);
     }
+    var now = new Date();
+    if (!this.getConfiguration(this.getOptionCreationDateKey('defaultSearchField'))
+      this.setOptionCreationDate('defaultSearchField', now);
+    this.setOptionUpdateDate('defaultSearchField', now);
     return value;
   },
   get defaultSearchFieldConfigurationKey() {
     return 'default_search_field';
   },
 
+  getOptionCreationDate: function(name) {
+    return this.exists() ?
+      new Date(this.getConfiguration(this.getOptionCreationDateKey(name))) :
+      new Date();
+  },
+  setOptionCreationDate: function(name, date) {
+    if (this.exists())
+      this.setConfiguration(this.getOptionCreationDateKey(name), value.getTime())
+    return value;
+  },
+  getOptionCreationDateKey: function(option) {
+    return 'option_' + option + '_created_at';
+  },
+
+  getOptionUpdateDate: function(name) {
+    return this.exists() ?
+      new Date(this.getConfiguration(this.getOptionUpdateDateKey(name))) :
+      new Date();
+  },
+  setOptionUpdateDate: function(name, date) {
+    if (this.exists())
+      this.setConfiguration(this.getOptionUpdateDateKey(name), value.getTime())
+    return value;
+  },
+  getOptionUpdateDateKey: function(option) {
+    return 'option_' + option + '_updated_at';
+  },
+
   get id() {
     return this._id === undefined ? DEFAULT_ID : this._id ;
   },
@@ -468,6 +500,11 @@ Domain.prototype = {
       values: JSON.stringify(values)
     });
 
+    var now = new Date();
+    if (!this.getConfiguration(this.getOptionCreationDateKey('synonyms'))
+      this.setOptionCreationDate('synonyms', now);
+    this.setOptionUpdateDate('synonyms', now);
+
     return this;
   },
 
-------------- next part --------------
HTML����������������������������...
Download 



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