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