Class: ActiveRecord::HierarchicalQuery::CTE::Query

Inherits:
Object
  • Object
show all
Defined in:
lib/active_record/hierarchical_query/cte/query.rb

Overview

CTE query builder

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(builder) ⇒ Query

Returns a new instance of Query.



19
20
21
22
23
# File 'lib/active_record/hierarchical_query/cte/query.rb', line 19

def initialize(builder)
  @builder = builder
  @adapter = Adapters.lookup(klass).new(self)
  @columns = Columns.new(self)
end

Instance Attribute Details

#adapterObject (readonly)

Returns the value of attribute adapter.



12
13
14
# File 'lib/active_record/hierarchical_query/cte/query.rb', line 12

def adapter
  @adapter
end

#builderObject (readonly)

Returns the value of attribute builder.



12
13
14
# File 'lib/active_record/hierarchical_query/cte/query.rb', line 12

def builder
  @builder
end

#columnsObject (readonly)

Returns the value of attribute columns.



12
13
14
# File 'lib/active_record/hierarchical_query/cte/query.rb', line 12

def columns
  @columns
end

Instance Method Details

#arelArel::SelectManager

Returns:

  • (Arel::SelectManager)


26
27
28
# File 'lib/active_record/hierarchical_query/cte/query.rb', line 26

def arel
  adapter.visit(:cte, build_arel)
end

#join_conditionsObject



35
36
37
# File 'lib/active_record/hierarchical_query/cte/query.rb', line 35

def join_conditions
  builder.connect_by_value[recursive_table, table]
end

#recursive_tableArel::Table

Returns:

  • (Arel::Table)


31
32
33
# File 'lib/active_record/hierarchical_query/cte/query.rb', line 31

def recursive_table
  @recursive_table ||= Arel::Table.new("#{table.name}__recursive")
end