# File lib/thinking_sphinx/active_record/sql_source.rb, line 60 def primary_key options[:primary_key] end
# File lib/thinking_sphinx/active_record/sql_source.rb, line 12 def initialize(model, options = {}) @model = model @database_settings = ::ActiveRecord::Base.connection. instance_variable_get(:@config).clone @options = { :utf8? => (@database_settings[:encoding] == 'utf8') }.merge options @fields = [] @attributes = [] @associations = [] @conditions = [] @groupings = [] @polymorphs = [] Template.new(self).apply name = "#{options[:name] || model.name.downcase}_#{options[:position]}" super name, type apply_defaults! end
# File lib/thinking_sphinx/active_record/sql_source.rb, line 36 def adapter @adapter ||= DatabaseAdapters.adapter_for(@model) end
# File lib/thinking_sphinx/active_record/sql_source.rb, line 44 def delta? options[:delta?] end
# File lib/thinking_sphinx/active_record/sql_source.rb, line 40 def delta_processor options[:delta_processor].try(:new, adapter) end
# File lib/thinking_sphinx/active_record/sql_source.rb, line 48 def disable_range? options[:disable_range?] end
# File lib/thinking_sphinx/active_record/sql_source.rb, line 52 def facets properties.select(&:facet?) end
# File lib/thinking_sphinx/active_record/sql_source.rb, line 56 def offset options[:offset] end
# File lib/thinking_sphinx/active_record/sql_source.rb, line 60 def primary_key options[:primary_key] end
# File lib/thinking_sphinx/active_record/sql_source.rb, line 64 def render prepare_for_render unless @prepared super end
# File lib/thinking_sphinx/active_record/sql_source.rb, line 70 def type @type ||= case adapter when DatabaseAdapters::MySQLAdapter 'mysql' when DatabaseAdapters::PostgreSQLAdapter 'pgsql' else raise "Unknown Adapter Type: #{adapter.class.name}" end end
# File lib/thinking_sphinx/active_record/sql_source.rb, line 83 def append_presenter_to_attribute_array attributes.each do |attribute| presenter = Attribute::SphinxPresenter.new(attribute, self) attribute_array_for(presenter.collection_type) << presenter.declaration end end
# File lib/thinking_sphinx/active_record/sql_source.rb, line 91 def attribute_array_for(type) instance_variable_get "@sql_attr_#{type}".to_sym end
# File lib/thinking_sphinx/active_record/sql_source.rb, line 99 def build_sql_fields fields.each do |field| @sql_field_string << field.name if field.with_attribute? @sql_field_str2wordcount << field.name if field.wordcount? @sql_file_field << field.name if field.file? @sql_joined_field << PropertyQuery.new(field, self).to_s if field.source_type end end
# File lib/thinking_sphinx/active_record/sql_source.rb, line 109 def build_sql_query @sql_query = builder.sql_query @sql_query_range ||= builder.sql_query_range @sql_query_info ||= builder.sql_query_info @sql_query_pre += builder.sql_query_pre end
# File lib/thinking_sphinx/active_record/sql_source.rb, line 95 def builder @builder ||= SQLBuilder.new self end
# File lib/thinking_sphinx/active_record/sql_source.rb, line 116 def config ThinkingSphinx::Configuration.instance end
# File lib/thinking_sphinx/active_record/sql_source.rb, line 120 def prepare_for_render polymorphs.each &:morph! append_presenter_to_attribute_array set_database_settings build_sql_fields build_sql_query @prepared = true end
# File lib/thinking_sphinx/active_record/sql_source.rb, line 131 def properties fields + attributes end
# File lib/thinking_sphinx/active_record/sql_source.rb, line 135 def set_database_settings @sql_host ||= database_settings[:host] || 'localhost' @sql_user ||= database_settings[:username] || database_settings[:user] || ENV['USER'] @sql_pass ||= database_settings[:password].to_s.gsub('#', '\#') @sql_db ||= database_settings[:database] @sql_port ||= database_settings[:port] @sql_sock ||= database_settings[:socket] end