Navigation Menu

Skip to content

Commit

Permalink
Remove needless FilterBetweenParameter
Browse files Browse the repository at this point in the history
between("column", ...) is deprecated. Use between(:column, ...)
instead.
  • Loading branch information
kou committed Apr 27, 2017
1 parent 8db9cc9 commit e4e285b
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 41 deletions.
68 changes: 28 additions & 40 deletions lib/groonga/client/request/select.rb
Expand Up @@ -302,10 +302,23 @@ def geo_in_circle(column_name_or_point,
#
# @since 0.4.4
def between(column_name, min, min_border, max, max_border)
parameter = FilterBetweenParameter.new(column_name,
min, min_border,
max, max_border)
add_parameter(FilterMerger, parameter)
# TODO: Accept not only column name but also literal as
# the first argument.
column_name = column_namify(column_name,
"first",
"#{self.class}\##{__method__}")
expression = "between(%{column_name}"
expression << ", %{min}"
expression << ", %{min_border}"
expression << ", %{max}"
expression << ", %{max_border}"
expression << ")"
@request.filter(expression,
column_name: column_name,
min: min,
min_border: min_border,
max: max,
max_border: max_border)
end

# Adds a `in_values` condition then returns a new `select`
Expand Down Expand Up @@ -338,14 +351,9 @@ def in_values(column_name, *values)

# TODO: Accept not only column name but also literal as
# the first argument.
if column_name.is_a?(String)
message = "column name (the first argument) "
message << "of #{self.class}\##{__method__} "
message << "should be Symbol: #{column_name.inspect}: "
message << caller(1, 1)[0]
warn(message)
column_name = column_name.to_sym
end
column_name = column_namify(column_name,
"first",
"#{self.class}\##{__method__}")
expression_values = {column_name: column_name}
expression = "in_values(%{column_name}"
values.each_with_index do |value, i|
Expand All @@ -357,8 +365,14 @@ def in_values(column_name, *values)
end

private
def add_parameter(merger, parameter)
@request.__send__(:add_parameter, merger, parameter)
def column_namify(column_name, ith, signature)
return column_name unless column_name.is_a?(String)

message = "column name (the #{ith} argument) of #{signature} "
message << "should be Symbol: #{column_name.inspect}: "
message << caller(2, 1)[0]
warn(message)
column_name.to_sym
end
end

Expand Down Expand Up @@ -615,32 +629,6 @@ def initialize(expression, values)
end
end

class FilterBetweenParameter
include ScriptSyntaxValueEscapable

def initialize(column_name,
min, min_border,
max, max_border)
@column_name = column_name
@min = min
@min_border = min_border
@max = max
@max_border = max_border
end

def to_parameters
filter = "between(#{@column_name}"
filter << ", #{escape_script_syntax_value(@min)}"
filter << ", #{escape_script_syntax_value(@min_border)}"
filter << ", #{escape_script_syntax_value(@max)}"
filter << ", #{escape_script_syntax_value(@max_border)}"
filter << ")"
{
filter: filter,
}
end
end

# @private
class OutputColumnsParameter < ValuesParameter
def initialize(prefix, output_columns)
Expand Down
2 changes: 1 addition & 1 deletion test/request/select/test-filter.rb
Expand Up @@ -256,7 +256,7 @@ def between(column_name,
:table => "posts",
:filter => "between(ages, 2, \"include\", 29, \"exclude\")",
},
between("ages", 2, "include", 29, "exclude"))
between(:ages, 2, "include", 29, "exclude"))
end
end

Expand Down

0 comments on commit e4e285b

Please sign in to comment.