module Clearly::Query::Compose::Subset
Methods for composing subset queries.
Private Instance Methods
Create contains condition. @param [Arel::Nodes::Node, Arel::Attributes::Attribute, String] node @param [Object] value @return [Arel::Nodes::Node] condition
# File lib/clearly/query/compose/subset.rb, line 15 def compose_contains_node(node, value) validate_node_or_attribute(node) node.matches(like_syntax(value, {start: true, end: true})) end
Create ends_with condition. @param [Arel::Nodes::Node, Arel::Attributes::Attribute, String] node @param [Object] value @return [Arel::Nodes::Node] condition
# File lib/clearly/query/compose/subset.rb, line 51 def compose_ends_with_node(node, value) validate_node_or_attribute(node) node.matches(like_syntax(value, {start: true, end: false})) end
Create IN condition. @param [Arel::Nodes::Node, Arel::Attributes::Attribute, String] node @param [Array] values @return [Arel::Nodes::Node] condition
# File lib/clearly/query/compose/subset.rb, line 69 def compose_in_node(node, values) validate_node_or_attribute(node) values = [values].flatten validate_not_blank(values) validate_array(values) validate_array_items(values) node.in(values) end
Create not contains condition. @param [Arel::Nodes::Node, Arel::Attributes::Attribute, String] node @param [Object] value @return [Arel::Nodes::Node] condition
# File lib/clearly/query/compose/subset.rb, line 24 def compose_not_contains_node(node, value) validate_node_or_attribute(node) node.does_not_match(like_syntax(value, {start: true, end: true})) end
Create not ends_with condition. @param [Arel::Nodes::Node, Arel::Attributes::Attribute, String] node @param [Object] value @return [Arel::Nodes::Node] condition
# File lib/clearly/query/compose/subset.rb, line 60 def compose_not_ends_with_node(node, value) validate_node_or_attribute(node) node.does_not_match(like_syntax(value, {start: true, end: false})) end
Create NOT IN condition. @param [Arel::Nodes::Node, Arel::Attributes::Attribute, String] node @param [Array] values @return [Arel::Nodes::Node] condition
# File lib/clearly/query/compose/subset.rb, line 82 def compose_not_in_node(node, values) validate_node_or_attribute(node) values = [values].flatten validate_not_blank(values) validate_array(values) validate_array_items(values) node.not_in(values) end
Create negated regular expression condition. Not available just now, maybe in Arel 6? @param [Arel::Nodes::Node, Arel::Attributes::Attribute, String] node @param [Object] value @return [Arel::Nodes::Node] condition
# File lib/clearly/query/compose/subset.rb, line 106 def compose_not_regex_node(node, value) validate_node_or_attribute(node) sanitized_value = sanitize_similar_to_value(value) Arel::Nodes::NotRegexp.new(node, Arel::Nodes.build_quoted(sanitized_value)) end
Create not starts_with condition. @param [Arel::Nodes::Node, Arel::Attributes::Attribute, String] node @param [Object] value @return [Arel::Nodes::Node] condition
# File lib/clearly/query/compose/subset.rb, line 42 def compose_not_starts_with_node(node, value) validate_node_or_attribute(node) node.does_not_match(like_syntax(value, {start: false, end: true})) end
Create regular expression condition. @param [Arel::Nodes::Node, Arel::Attributes::Attribute, String] node @param [Object] value @return [Arel::Nodes::Node] condition
# File lib/clearly/query/compose/subset.rb, line 95 def compose_regex_node(node, value) validate_node_or_attribute(node) sanitized_value = sanitize_similar_to_value(value) Arel::Nodes::Regexp.new(node, Arel::Nodes.build_quoted(sanitized_value)) end
Create starts_with condition. @param [Arel::Nodes::Node, Arel::Attributes::Attribute, String] node @param [Object] value @return [Arel::Nodes::Node] condition
# File lib/clearly/query/compose/subset.rb, line 33 def compose_starts_with_node(node, value) validate_node_or_attribute(node) node.matches(like_syntax(value, {start: false, end: true})) end