class ThinkingSphinx::ActiveRecord::SQLBuilder

Attributes

source[R]

Public Class Methods

new(source) click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 6
def initialize(source)
  @source = source
end

Public Instance Methods

sql_query() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 10
def sql_query
  statement.to_relation.to_sql.gsub(/\n/, "\\\n")
end
sql_query_info() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 19
def sql_query_info
  statement.to_query_info_relation.to_sql
end
sql_query_post_index() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 27
def sql_query_post_index
  return [] unless delta_processor && !source.delta?

  [delta_processor.reset_query]
end
sql_query_pre() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 23
def sql_query_pre
  query.to_query
end
sql_query_range() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 14
def sql_query_range
  return nil if source.disable_range?
  statement.to_query_range_relation.to_sql
end

Private Instance Methods

associations() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 55
def associations
  @associations ||= Joiner::Joins.new(model).tap do |assocs|
    source.associations.reject(&:string?).each do |association|
      assocs.add_join_to association.stack
    end
  end
end
config() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 47
def config
  ThinkingSphinx::Configuration.instance
end
document_id() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 79
def document_id
  quoted_alias = quote_column source.primary_key
  "#{quoted_primary_key} * #{config.indices.count} + #{source.offset} AS #{quoted_alias}"
end
groupings() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 99
def groupings
  groupings = source.groupings
  if model.column_names.include?(model.inheritance_column)
    groupings << quoted_inheritance_column
  end
  groupings
end
inheritance_column_condition() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 88
def inheritance_column_condition
  "#{quoted_inheritance_column} = '#{model_name}'"
end
model_name() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 107
def model_name
  klass = model.name
  klass = klass.demodulize unless model.store_full_sti_class
  klass
end
pre_select() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 75
def pre_select
  ('SQL_NO_CACHE ' if source.type == 'mysql').to_s
end
query() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 39
def query
  Query.new(self)
end
quote_column(column) click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 63
def quote_column(column)
  model.connection.quote_column_name(column)
end
quoted_inheritance_column() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 71
def quoted_inheritance_column
  "#{model.quoted_table_name}.#{quote_column(model.inheritance_column)}"
end
quoted_primary_key() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 67
def quoted_primary_key
  "#{model.quoted_table_name}.#{quote_column(source.primary_key)}"
end
range_condition() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 92
def range_condition
  condition = []
  condition << "#{quoted_primary_key} BETWEEN $start AND $end" unless source.disable_range?
  condition += source.conditions
  condition
end
relation() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 51
def relation
  model.unscoped
end
reversed_document_id() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 84
def reversed_document_id
  "($id - #{source.offset}) / #{config.indices.count}"
end
statement() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 43
def statement
  Statement.new(self)
end