Navigation Menu

Skip to content

Commit

Permalink
Unify FilterEqualParameter into FilterExpressionParameter
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Apr 27, 2017
1 parent dd932a0 commit 11c765d
Show file tree
Hide file tree
Showing 5 changed files with 305 additions and 370 deletions.
54 changes: 25 additions & 29 deletions lib/groonga/client/request/select.rb
Expand Up @@ -107,22 +107,33 @@ def query(value)
# The new request object for setting a filter condition.
#
# @since 0.4.3
def filter(expression_or_column_name=nil, values_or_value=nil)
if expression_or_column_name.nil? and values_or_value.nil?
return Filter.new(self)
end

if expression_or_column_name.is_a?(Symbol)
parameter = FilterEqualParameter.new(expression_or_column_name,
values_or_value)
elsif values_or_value.nil? or values_or_value.is_a?(::Hash)
parameter = FilterExpressionParameter.new(expression_or_column_name,
values_or_value)
def filter(*args)
n_args = args.size
case n_args
when 0
Filter.new(self)
when 1, 2
expression_or_column_name, values_or_value = *args

if values_or_value.nil? or values_or_value.is_a?(::Hash)
expression = expression_or_column_name
values = values_or_value
else
expression = "%{column} == %{value}"
column_name = expression_or_column_name
column_name = column_name.to_sym if column_name.is_a?(String)
values = {
column: column_name,
value: values_or_value,
}
end
parameter = FilterExpressionParameter.new(expression, values)
add_parameter(FilterMerger, parameter)
else
parameter = FilterEqualParameter.new(expression_or_column_name,
values_or_value)
message =
"wrong number of arguments (given #{n_args}, expected 0..2)"
raise ArgumentError, message
end
add_parameter(FilterMerger, parameter)
end

def output_columns(value)
Expand Down Expand Up @@ -631,21 +642,6 @@ def to_parameters
end
end

class FilterEqualParameter
include ScriptSyntaxValueEscapable

def initialize(column_name, value)
@column_name = column_name
@value = value
end

def to_parameters
{
filter: "#{@column_name} == #{escape_script_syntax_value(@value)}",
}
end
end

# @private
class OutputColumnsParameter < ValuesParameter
def initialize(prefix, output_columns)
Expand Down
91 changes: 0 additions & 91 deletions test/request/select/test-filter-equal-parameter.rb

This file was deleted.

109 changes: 0 additions & 109 deletions test/request/select/test-filter-expression-parameter.rb

This file was deleted.

0 comments on commit 11c765d

Please sign in to comment.