[Groonga-commit] groonga/gcs [master] Return response for DefineIndexField as an XML

Back to archive index

null+****@clear***** null+****@clear*****
2012年 6月 21日 (木) 16:28:40 JST


SHIMODA Hiroshi	2012-06-21 16:28:40 +0900 (Thu, 21 Jun 2012)

  New Revision: 11cd37a4921ca661cd75487e4ad8da32b687e862
  https://github.com/groonga/gcs/commit/11cd37a4921ca661cd75487e4ad8da32b687e862

  Log:
    Return response for DefineIndexField as an XML

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

  Modified: lib/api/2011-02-01/configuration.js (+47 -2)
===================================================================
--- lib/api/2011-02-01/configuration.js    2012-06-21 15:59:36 +0900 (6c84642)
+++ lib/api/2011-02-01/configuration.js    2012-06-21 16:28:40 +0900 (0f87e61)
@@ -2,6 +2,7 @@ var path = require('path');
 var Database = require('../../database').Database;
 var Domain = require('../../domain').Domain;
 var Deferred = require('jsdeferred').Deferred;
+var dateFormat = require('dateformat');
 
 exports.version = path.basename(__dirname);
 
@@ -105,6 +106,42 @@ handlers.CreateDomain = function(database, request, response) {
     });
 };
 
+function createIndexFieldStatus(options) {
+  return '<IndexField>' +
+           '<Status>' +
+             '<CreationDate>' + dateFormat(options.createdAt,
+                                           'isoUtcDateTime') +
+               '</CreationDate>' +
+             '<UpdateVersion>' + (options.updateVersion || 0) +
+               '</UpdateVersion>' +
+             '<State>' + options.state + '</State>' +
+             '<UpdateDate>' + dateFormat(options.updatedAt, 'isoUtcDateTime') +
+               '</UpdateDate>' +
+           '</Status>' +
+           '<Options>' +
+             '<IndexFieldType>' + options.fieldType + '</IndexFieldType>' +
+             '<IndexFieldName>' + options.fieldName + '</IndexFieldName>' +
+             '<TextOptions>' +
+               '<FacetEnabled>' + (options.facetEnabled || false) +
+                 '</FacetEnabled>' +
+               '<ResultEnabled>' + (options.resultEnabled || false) +
+                 '</ResultEnabled>' +
+               '<DefaultValue/>' +
+             '</TextOptions>' +
+           '</Options>' +
+         '</IndexField>';
+}
+
+function createDefineIndexFieldResponse(options) {
+  return '<?xml version="1.0"?>\n' +
+         '<DefineIndexFieldResponse xmlns="' + XMLNS + '">' +
+           '<DefineIndexFieldResult>' +
+           '</DefineIndexFieldResult>' +
+           '<ResponseMetadata>' +
+             '<RequestId>' + (options.requestId || '') + '</RequestId>' +
+           '</ResponseMetadata>' +
+         '</DefineIndexFieldResponse>';
+}
 
 handlers.DefineIndexField = function(database, request, response) {
   var domain = new Domain(request);
@@ -112,6 +149,7 @@ handlers.DefineIndexField = function(database, request, response) {
   var fieldName = request.query['IndexField.IndexFieldName'] || '';
   var field = domain.getIndexField(fieldName);
 
+  var createdAt = new Date();
   var options = {
         table: domain.tableName,
         name: field.columnName,
@@ -130,8 +168,15 @@ handlers.DefineIndexField = function(database, request, response) {
       return database.commandDeferred('column_create', termsOptions);
     })
     .next(function() {
-      response.send('created index field "' + field + '" ' +
-                    'for the domain "' + domain.name + '"');
+      response.send(createDefineIndexFieldResponse({
+        fieldName: field,
+        fieldType: 'text',
+        facetEnabled: false,
+        resultEnabled: true,
+        state: 'RequiresIndexDocuments',
+        createdAt: createdAt,
+        updatedAt: createdAt
+      }));
     })
     .error(function(error) {
       var body = createCommonErrorResponse('InternalFailure', error.message);
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
Download 



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