module SearchCop::Visitors::Postgres

Public Instance Methods

visit_SearchCopGrammar_Attributes_Collection(node) click to toggle source
# File lib/search_cop/visitors/postgres.rb, line 44
def visit_SearchCopGrammar_Attributes_Collection(node)
  res = node.attributes.collect do |attribute|
    if attribute.options[:coalesce]
      "COALESCE(#{visit attribute}, '')"
    else
      visit attribute
    end
  end

  res.join(" || ' ' || ")
end
visit_SearchCopGrammar_Attributes_Hstore(attribute) click to toggle source
# File lib/search_cop/visitors/postgres.rb, line 18
def visit_SearchCopGrammar_Attributes_Hstore(attribute)
  "#{quote_table_name attribute.table_alias}.#{quote_column_name attribute.column_name}->#{quote attribute.field_names.first}"
end
visit_SearchCopGrammar_Attributes_Json(attribute) click to toggle source

rubocop:disable Naming/MethodName

# File lib/search_cop/visitors/postgres.rb, line 6
def visit_SearchCopGrammar_Attributes_Json(attribute)
  elements = ["#{quote_table_name attribute.table_alias}.#{quote_column_name attribute.column_name}", *attribute.field_names.map { |field_name| quote(field_name) }]

  "#{elements[0...-1].join("->")}->>#{elements.last}"
end
visit_SearchCopGrammar_Attributes_Jsonb(attribute) click to toggle source
# File lib/search_cop/visitors/postgres.rb, line 12
def visit_SearchCopGrammar_Attributes_Jsonb(attribute)
  elements = ["#{quote_table_name attribute.table_alias}.#{quote_column_name attribute.column_name}", *attribute.field_names.map { |field_name| quote(field_name) }]

  "#{elements[0...-1].join("->")}->>#{elements.last}"
end
visit_SearchCopGrammar_Nodes_FulltextExpression(node) click to toggle source
# File lib/search_cop/visitors/postgres.rb, line 56
def visit_SearchCopGrammar_Nodes_FulltextExpression(node)
  dictionary = node.collection.options[:dictionary] || "simple"

  "to_tsvector(#{visit dictionary}, #{visit node.collection}) @@ to_tsquery(#{visit dictionary}, #{visit FulltextQuery.new(connection).visit(node.node)})"
end
visit_SearchCopGrammar_Nodes_Matches(node) click to toggle source
# File lib/search_cop/visitors/postgres.rb, line 40
def visit_SearchCopGrammar_Nodes_Matches(node)
  "(#{visit node.left} IS NOT NULL AND #{visit node.left} ILIKE #{visit node.right} ESCAPE #{visit "\\"})"
end