attribute_presenters()
click to toggle source
def attribute_presenters
@attribute_presenters ||= property_sql_presenters_for source.attributes
end
custom_joins()
click to toggle source
def custom_joins
@custom_joins ||= source.associations.select(&:string?).collect(&:to_s)
end
field_presenters()
click to toggle source
def field_presenters
@field_presenters ||= property_sql_presenters_for source.fields
end
filter_by_query_info()
click to toggle source
def filter_by_query_info
self.scope = scope.where("#{quoted_primary_key} = #{reversed_document_id}")
end
filter_by_query_range()
click to toggle source
def filter_by_query_range
minimum = convert_nulls "MIN(#{quoted_primary_key})", 1
maximum = convert_nulls "MAX(#{quoted_primary_key})", 1
self.scope = scope.select("#{minimum}, #{maximum}").where(where_clause(true))
end
filter_by_scopes()
click to toggle source
def filter_by_scopes
scope_by_select
scope_by_where_clause
scope_by_group_clause
scope_by_joins
scope_by_custom_joins
scope_by_order
end
group_clause()
click to toggle source
def group_clause
builder = SQLBuilder::ClauseBuilder.new(quoted_primary_key)
builder.compose(
presenters_to_group(field_presenters),
presenters_to_group(attribute_presenters)
) unless source.options[:minimal_group_by?]
builder.compose(groupings).separated
end
method_missing(*args, &block)
click to toggle source
def method_missing(*args, &block)
report.send *args, &block
end
presenters_to_group(presenters)
click to toggle source
def presenters_to_group(presenters)
presenters.collect(&:to_group)
end
presenters_to_select(presenters)
click to toggle source
def presenters_to_select(presenters)
presenters.collect(&:to_select)
end
property_sql_presenter_for(property)
click to toggle source
def property_sql_presenter_for(property)
ThinkingSphinx::ActiveRecord::PropertySQLPresenter.new(
property, source.adapter, associations
)
end
property_sql_presenters_for(properties)
click to toggle source
def property_sql_presenters_for(properties)
properties.collect { |property| property_sql_presenter_for(property) }
end
scope_by_custom_joins()
click to toggle source
def scope_by_custom_joins
self.scope = scope.joins(custom_joins) if custom_joins.any?
end
scope_by_group_clause()
click to toggle source
def scope_by_group_clause
self.scope = scope.group(group_clause)
end
scope_by_joins()
click to toggle source
def scope_by_joins
self.scope = scope.joins(associations.join_values)
end
scope_by_order()
click to toggle source
def scope_by_order
self.scope = scope.order('NULL') if source.type == 'mysql'
end
scope_by_select()
click to toggle source
def scope_by_select
self.scope = scope.select(pre_select + select_clause)
end
scope_by_where_clause()
click to toggle source
def scope_by_where_clause
self.scope = scope.where where_clause
end
select_clause()
click to toggle source
def select_clause
SQLBuilder::ClauseBuilder.new(document_id).compose(
presenters_to_select(field_presenters),
presenters_to_select(attribute_presenters)
).separated
end
where_clause(for_range = false)
click to toggle source
def where_clause(for_range = false)
builder = SQLBuilder::ClauseBuilder.new(nil)
builder.add_clause inheritance_column_condition unless model.descends_from_active_record?
builder.add_clause delta_processor.clause(source.delta?) if delta_processor
builder.add_clause range_condition unless for_range
builder.separated(' AND ')
end