class ThinkingSphinx::Deltas::DefaultDelta

Attributes

column[RW]

Public Class Methods

new(index, options) click to toggle source
# File lib/thinking_sphinx/deltas/default_delta.rb, line 6
def initialize(index, options)
  @index  = index
  @column = options.delete(:delta_column) || :delta
end

Public Instance Methods

clause(model, toggled) click to toggle source
# File lib/thinking_sphinx/deltas/default_delta.rb, line 36
def clause(model, toggled)
  "#{model.quoted_table_name}.#{model.connection.quote_column_name(@column.to_s)}" +
  " = #{adapter.boolean(toggled)}"
end
index(model, instance = nil) click to toggle source
# File lib/thinking_sphinx/deltas/default_delta.rb, line 11
def index(model, instance = nil)
  return true unless ThinkingSphinx.updates_enabled? &&
    ThinkingSphinx.deltas_enabled?
  return true if instance && !toggled(instance)
  
  update_delta_indexes model
  delete_from_core     model, instance if instance
  
  true
end
reset_query(model) click to toggle source
# File lib/thinking_sphinx/deltas/default_delta.rb, line 30
def reset_query(model)
  "UPDATE #{model.quoted_table_name} SET " +
  "#{model.connection.quote_column_name(@column.to_s)} = #{adapter.boolean(false)} " +
  "WHERE #{model.connection.quote_column_name(@column.to_s)} = #{adapter.boolean(true)}"
end
toggle(instance) click to toggle source
# File lib/thinking_sphinx/deltas/default_delta.rb, line 22
def toggle(instance)
  instance.send "#{@column}=", true
end
toggled(instance) click to toggle source
# File lib/thinking_sphinx/deltas/default_delta.rb, line 26
def toggled(instance)
  instance.send "#{@column}"
end

Private Instance Methods

adapter() click to toggle source
# File lib/thinking_sphinx/deltas/default_delta.rb, line 57
def adapter
  @adapter = @index.model.sphinx_database_adapter
end
delete_from_core(model, instance) click to toggle source
# File lib/thinking_sphinx/deltas/default_delta.rb, line 51
def delete_from_core(model, instance)
  model.core_index_names.each do |index_name|
    model.delete_in_index index_name, instance.sphinx_document_id
  end
end
update_delta_indexes(model) click to toggle source
# File lib/thinking_sphinx/deltas/default_delta.rb, line 43
def update_delta_indexes(model)
  config = ThinkingSphinx::Configuration.instance
  rotate = ThinkingSphinx.sphinx_running? ? "--rotate" : ""
  
  output = %x#{config.bin_path}#{config.indexer_binary_name} --config "#{config.config_file}" #{rotate} #{model.delta_index_names.join(' ')}`
  puts(output) unless ThinkingSphinx.suppress_delta_output?
end