module Clearly::Query::Compose::Subset

Methods for composing subset queries.

Private Instance Methods

compose_contains_node(node, value) click to toggle source

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
compose_ends_with_node(node, value) click to toggle source

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
compose_in_node(node, values) click to toggle source

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
compose_not_contains_node(node, value) click to toggle source

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
compose_not_ends_with_node(node, value) click to toggle source

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
compose_not_in_node(node, values) click to toggle source

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
compose_not_regex_node(node, value) click to toggle source

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
compose_not_starts_with_node(node, value) click to toggle source

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
compose_regex_node(node, value) click to toggle source

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
compose_starts_with_node(node, value) click to toggle source

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