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