Navigation Menu

Skip to content

Commit

Permalink
Ignore no values in_values()
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Apr 13, 2017
1 parent 17c2231 commit 05795ca
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 15 deletions.
27 changes: 15 additions & 12 deletions lib/groonga/client/request/select.rb
Expand Up @@ -178,29 +178,30 @@ def initialize(request)
@request = request
end

# @example: Use in_values function
# Adds a `in_values` condition then return a new `select`
# request object.
#
# @example: Multiple conditions
# request.
# filter.in_values("tags", "tag1", "tag2").
# # -> --filter 'in_values(tags, "tag1", "tag2")'
# filter("user", "alice")
# # -> --filter '(in_values(tags, "tag1", "tag2")) && (user == "alice")'
#
# @example: Ignore no values case
# request.
# filter.in_values("tags")
# # -> --filter ''
#
# @param [String, Symbol] column_name The target column name.
#
# @param [Object] value A column value that cover target
# @param [Object] values The column values that cover target
# column values.
#
# @param [Object] values The rest column values that cover
# target column values.
#
# Adds a `in_values` condition then return a new `select`
# request object.
#
# @return [Groonga::Client::Request::Select]
# The new request with the given condition.
def in_values(column_name, value, *values)
parameters =
FilterInValuesParameters.new(column_name, value, *values)
def in_values(column_name, *values)
parameters = FilterInValuesParameters.new(column_name, *values)
add_parameter(FilterMerger, parameters)
end

Expand Down Expand Up @@ -359,7 +360,7 @@ def to_parameters
filter2 = params2[:filter]
if filter1 and filter2
params[:filter] = "(#{filter1}) && (#{filter2})"
else
elsif filter1 or filter2
params[:filter] = (filter1 || filter2)
end
params
Expand Down Expand Up @@ -462,6 +463,8 @@ def initialize(column_name, *values)
end

def to_parameters
return {} if @values.empty?

escaped_values = @values.collect do |value|
escape_script_syntax_value(value)
end
Expand Down
7 changes: 4 additions & 3 deletions test/request/test-select.rb
Expand Up @@ -114,9 +114,10 @@ def in_values(column_name, *values)
end

test("no values") do
assert_raise(ArgumentError) do
in_values("tags")
end
assert_equal({
:table => "posts",
},
in_values("tags"))
end
end
end
Expand Down

0 comments on commit 05795ca

Please sign in to comment.