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