[Groonga-commit] droonga/express-droonga at 5d3f872 [master] Extract as a function

Back to archive index

Kouhei Sutou null+****@clear*****
Tue Mar 25 10:02:45 JST 2014


Kouhei Sutou	2014-03-25 10:02:45 +0900 (Tue, 25 Mar 2014)

  New Revision: 5d3f8725ede105c267a1abc1c044f3ed5c80885b
  https://github.com/droonga/express-droonga/commit/5d3f8725ede105c267a1abc1c044f3ed5c80885b

  Message:
    Extract as a function

  Modified files:
    lib/adapter/api/rest-request-builder.js

  Modified: lib/adapter/api/rest-request-builder.js (+33 -27)
===================================================================
--- lib/adapter/api/rest-request-builder.js    2014-03-25 09:31:46 +0900 (c8d7b57)
+++ lib/adapter/api/rest-request-builder.js    2014-03-25 10:02:45 +0900 (d81f8f5)
@@ -17,25 +17,9 @@ function getIntegerValue(params, key) {
   return parseInt(value);
 }
 
-function searchRequestBuilder(request) {
-  var params = request.params;
-  if (!params.tableName)
-    throw new Error('no source is specified');
-
-  var queryParams = request.query;
-
-  var queries = {};
-  var queryCondition = {};
-  var scriptCondition = {};
-  var queryName = params.tableName;
-  try {
-    queryName = inflection.tableize(queryName);
-    queryName = inflection.camelize(queryName, true);
-  } catch(error) {
-    queryName = params.tableName.toLowerCase();
-  }
-  queries[queryName] = {
-    source: params.tableName,
+function buildQuery(tableName, queryParams) {
+  var query = {
+    source: tableName,
     output: {
       elements: [
         'startTime',
@@ -48,13 +32,15 @@ function searchRequestBuilder(request) {
   };
 
   if ('attributes' in queryParams) {
-    queries[queryName].output.attributes = queryParams.attributes.split(',');
+    query.output.attributes = queryParams.attributes.split(',');
   } else {
-    queries[queryName].output.attributes = [];
+    query.output.attributes = [];
   }
   if ('limit' in queryParams)
-    queries[queryName].output.limit = getIntegerValue(queryParams, 'limit');
+    query.output.limit = getIntegerValue(queryParams, 'limit');
 
+  var queryCondition = {};
+  var scriptCondition = {};
   if ('match_escalation_threshold' in queryParams)
     queryCondition.matchEscalationThreshold = getIntegerValue(queryParams, 'match_escalation_threshold');
   if ('match_to' in queryParams)
@@ -65,11 +51,11 @@ function searchRequestBuilder(request) {
     scriptCondition.script = queryParams.script;
   if ('query' in queryCondition || 'script' in scriptCondition) {
     if (!('query' in queryCondition)) {
-      queries[queryName].condition = scriptCondition;
+      query.condition = scriptCondition;
     } else if (!('script' in scriptCondition)) {
-      queries[queryName].condition = queryCondition;
+      query.condition = queryCondition;
     } else {
-      queries[queryName].condition = [
+      query.condition = [
         '&&',
         queryCondition,
         scriptCondition
@@ -78,9 +64,29 @@ function searchRequestBuilder(request) {
   }
 
   if ('offset' in queryParams)
-    queries[queryName].output.offset = getIntegerValue(queryParams, 'offset');
+    query.output.offset = getIntegerValue(queryParams, 'offset');
   if ('sort_by' in queryParams)
-    queries[queryName].sortBy = queryParams.sort_by.split(',');
+    query.sortBy = queryParams.sort_by.split(',');
+
+  return query;
+}
+
+function searchRequestBuilder(request) {
+  var params = request.params;
+  if (!params.tableName)
+    throw new Error('no source is specified');
+
+  var queryParams = request.query;
+
+  var queries = {};
+  var queryName = params.tableName;
+  try {
+    queryName = inflection.tableize(queryName);
+    queryName = inflection.camelize(queryName, true);
+  } catch(error) {
+    queryName = params.tableName.toLowerCase();
+  }
+  queries[queryName] = buildQuery(params.tableName, queryParams);
 
   var message = {};
   message.queries = queries;
-------------- next part --------------
HTML����������������������������...
Download 



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