module ActiveRecordExtended::Visitors::PostgreSQLDecorator

Private Instance Methods

matchable_column?(col, object) click to toggle source
# File lib/active_record_extended/arel/visitors/postgresql_decorator.rb, line 113
def matchable_column?(col, object)
  col.name == object.left.name.to_s || col.name == object.left.relation.name.to_s
end
visit_Arel_Nodes_AggregateFunctionName(object, collector) click to toggle source
# File lib/active_record_extended/arel/visitors/postgresql_decorator.rb, line 78
def visit_Arel_Nodes_AggregateFunctionName(object, collector)
  collector << "#{object.name}("
  collector << "DISTINCT " if object.distinct
  collector = inject_join(object.expressions, collector, ", ")

  if object.orderings
    collector << " ORDER BY "
    collector = inject_join(object.orderings, collector, ", ")
  end
  collector << ")"

  if object.alias
    collector << " AS "
    visit object.alias, collector
  else
    collector
  end
end
visit_Arel_Nodes_Array(object, collector) click to toggle source
# File lib/active_record_extended/arel/visitors/postgresql_decorator.rb, line 70
def visit_Arel_Nodes_Array(object, collector)
  aggregate "ARRAY", object, collector
end
visit_Arel_Nodes_ArrayAgg(object, collector) click to toggle source
# File lib/active_record_extended/arel/visitors/postgresql_decorator.rb, line 74
def visit_Arel_Nodes_ArrayAgg(object, collector)
  aggregate "ARRAY_AGG", object, collector
end
visit_Arel_Nodes_ContainedInArray(object, collector) click to toggle source
# File lib/active_record_extended/arel/visitors/postgresql_decorator.rb, line 42
def visit_Arel_Nodes_ContainedInArray(object, collector)
  infix_value object, collector, " <@ "
end
visit_Arel_Nodes_ContainedInHStore(object, collector) click to toggle source
# File lib/active_record_extended/arel/visitors/postgresql_decorator.rb, line 38
def visit_Arel_Nodes_ContainedInHStore(object, collector)
  infix_value object, collector, " <@ "
end
visit_Arel_Nodes_Contains(object, collector) click to toggle source
# File lib/active_record_extended/arel/visitors/postgresql_decorator.rb, line 16
def visit_Arel_Nodes_Contains(object, collector)
  left_column = object.left.relation.name.classify.constantize.columns.detect do |col|
    matchable_column?(col, object)
  end

  if [:hstore, :jsonb].include?(left_column&.type)
    visit_Arel_Nodes_ContainsHStore(object, collector)
  elsif left_column.try(:array)
    visit_Arel_Nodes_ContainsArray(object, collector)
  else
    visit_Arel_Nodes_Inet_Contains(object, collector)
  end
end
visit_Arel_Nodes_ContainsArray(object, collector) click to toggle source
# File lib/active_record_extended/arel/visitors/postgresql_decorator.rb, line 30
def visit_Arel_Nodes_ContainsArray(object, collector)
  infix_value object, collector, " @> "
end
visit_Arel_Nodes_ContainsHStore(object, collector) click to toggle source
# File lib/active_record_extended/arel/visitors/postgresql_decorator.rb, line 34
def visit_Arel_Nodes_ContainsHStore(object, collector)
  infix_value object, collector, " @> "
end
visit_Arel_Nodes_Inet_ContainedWithin(object, collector) click to toggle source
# File lib/active_record_extended/arel/visitors/postgresql_decorator.rb, line 46
def visit_Arel_Nodes_Inet_ContainedWithin(object, collector)
  infix_value object, collector, " << "
end
visit_Arel_Nodes_Inet_ContainedWithinEquals(object, collector) click to toggle source
# File lib/active_record_extended/arel/visitors/postgresql_decorator.rb, line 101
def visit_Arel_Nodes_Inet_ContainedWithinEquals(object, collector)
  infix_value object, collector, " <<= "
end
visit_Arel_Nodes_Inet_Contains(object, collector) click to toggle source
# File lib/active_record_extended/arel/visitors/postgresql_decorator.rb, line 97
def visit_Arel_Nodes_Inet_Contains(object, collector)
  infix_value object, collector, " >> "
end
visit_Arel_Nodes_Inet_ContainsEquals(object, collector) click to toggle source
# File lib/active_record_extended/arel/visitors/postgresql_decorator.rb, line 105
def visit_Arel_Nodes_Inet_ContainsEquals(object, collector)
  infix_value object, collector, " >>= "
end
visit_Arel_Nodes_Inet_ContainsOrContainedWithin(object, collector) click to toggle source
# File lib/active_record_extended/arel/visitors/postgresql_decorator.rb, line 109
def visit_Arel_Nodes_Inet_ContainsOrContainedWithin(object, collector)
  infix_value object, collector, " && "
end
visit_Arel_Nodes_JsonBuildObject(object, collector) click to toggle source
# File lib/active_record_extended/arel/visitors/postgresql_decorator.rb, line 54
def visit_Arel_Nodes_JsonBuildObject(object, collector)
  aggregate "JSON_BUILD_OBJECT", object, collector
end
visit_Arel_Nodes_JsonbBuildObject(object, collector) click to toggle source
# File lib/active_record_extended/arel/visitors/postgresql_decorator.rb, line 58
def visit_Arel_Nodes_JsonbBuildObject(object, collector)
  aggregate "JSONB_BUILD_OBJECT", object, collector
end
visit_Arel_Nodes_Overlaps(object, collector) click to toggle source

rubocop:disable Naming/MethodName

# File lib/active_record_extended/arel/visitors/postgresql_decorator.rb, line 12
def visit_Arel_Nodes_Overlaps(object, collector)
  infix_value object, collector, " && "
end
visit_Arel_Nodes_RowToJson(object, collector) click to toggle source
# File lib/active_record_extended/arel/visitors/postgresql_decorator.rb, line 50
def visit_Arel_Nodes_RowToJson(object, collector)
  aggregate "ROW_TO_JSON", object, collector
end
visit_Arel_Nodes_ToJson(object, collector) click to toggle source
# File lib/active_record_extended/arel/visitors/postgresql_decorator.rb, line 62
def visit_Arel_Nodes_ToJson(object, collector)
  aggregate "TO_JSON", object, collector
end
visit_Arel_Nodes_ToJsonb(object, collector) click to toggle source
# File lib/active_record_extended/arel/visitors/postgresql_decorator.rb, line 66
def visit_Arel_Nodes_ToJsonb(object, collector)
  aggregate "TO_JSONB", object, collector
end