Sha256: 940c6c2aa428c41298690684cad8002efbc690c7b179e81fd626e542dbe8dbf3

Contents?: true

Size: 1.45 KB

Versions: 2

Compression:

Stored size: 1.45 KB

Contents

module ThinkingSphinx
  module Deltas
    class DefaultDelta
      attr_accessor :column
      
      def initialize(index, options)
        @index  = index
        @column = options.delete(:column) || :delta
      end
      
      def index(model, instance = nil)
        return true unless ThinkingSphinx.updates_enabled? &&
          ThinkingSphinx.deltas_enabled?
        
        config = ThinkingSphinx::Configuration.instance
        client = Riddle::Client.new config.address, config.port
        
        client.update(
          core_index_name(model),
          ['sphinx_deleted'],
          {instance.sphinx_document_id => [1]}
        ) if instance && ThinkingSphinx.sphinx_running? && instance.in_core_index?
        
        output = `#{config.bin_path}indexer --config #{config.config_file} --rotate #{delta_index_name model}`
        puts output unless ThinkingSphinx.suppress_delta_output?
        
        true
      end
      
      def toggle(instance)
        instance.delta = true
      end
      
      def clause(model, toggled)
        "#{model.quoted_table_name}.#{@index.quote_column(@column.to_s)}" +
        " = #{@index.db_boolean(toggled)}"
      end
      
      protected
      
      def core_index_name(model)
        "#{model.source_of_sphinx_index.name.underscore.tr(':/\\', '_')}_core"
      end
      
      def delta_index_name(model)
        "#{model.source_of_sphinx_index.name.underscore.tr(':/\\', '_')}_delta"
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
freelancing-god-thinking-sphinx-1.1.0 lib/thinking_sphinx/deltas/default_delta.rb
freelancing-god-thinking-sphinx-1.1.1 lib/thinking_sphinx/deltas/default_delta.rb