class Activecube::Processor::Table
Attributes
model[R]
Public Class Methods
new(model)
click to toggle source
# File lib/activecube/processor/table.rb, line 6 def initialize model @model = model end
Public Instance Methods
join(cube_query, left_query, right_query)
click to toggle source
# File lib/activecube/processor/table.rb, line 35 def join cube_query, left_query, right_query outer_table = model.arel_table.class.new('').project(Arel.star) dimension_names = (cube_query.join_fields + cube_query.slices.map{|s| s.key} ).uniq query = outer_table.from(left_query). join(right_query, ::Arel::Nodes::FullOuterJoin). using(*dimension_names) cube_query.options.each do |option| query = option.append_query model, cube_query, outer_table, query end query end
matches?(query, measures = query.measures)
click to toggle source
# File lib/activecube/processor/table.rb, line 14 def matches? query, measures = query.measures (query.column_names(measures)-model.attribute_types.keys).empty? && !model.activecube_indexes.detect{|index| !index.matches?(query, measures) } end
measures?(measure)
click to toggle source
# File lib/activecube/processor/table.rb, line 19 def measures? measure (measure.required_column_names - model.attribute_types.keys).empty? end
name()
click to toggle source
# File lib/activecube/processor/table.rb, line 10 def name model.table_name end
query(cube_query)
click to toggle source
# File lib/activecube/processor/table.rb, line 23 def query cube_query table = model.arel_table query = table (cube_query.slices + cube_query.measures + cube_query.selectors + cube_query.options).each do |s| query = s.append_query model, cube_query, table, query end query end