Sha256: 0bb71c9c81d0352e85cb02177e58037d0e1cc3e3c52fb405d3016b2bc7d7c63e

Contents?: true

Size: 1015 Bytes

Versions: 3

Compression:

Stored size: 1015 Bytes

Contents

class ThinkingSphinx::RealTime::Transcriber
  def initialize(index)
    @index = index
  end

  def copy(instance)
    return unless instance.persisted? && copy?(instance)

    columns, values = ['id'], [index.document_id_for_key(instance.id)]
    (index.fields + index.attributes).each do |property|
      columns << property.name
      values  << property.translate(instance)
    end

    insert = Riddle::Query::Insert.new index.name, columns, values
    sphinxql = insert.replace!.to_sql
    
    ThinkingSphinx::Logger.log :query, sphinxql do
      ThinkingSphinx::Connection.take do |connection|
        connection.execute sphinxql
      end 
    end
  end

  private

  attr_reader :index

  def copy?(instance)
    index.conditions.empty? || index.conditions.all? { |condition|
      case condition
      when Symbol
        instance.send(condition)
      when Proc
        condition.call instance
      else
        "Unexpected condition: #{condition}. Expecting Symbol or Proc."
      end
    }
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
thinking-sphinx-3.1.4 lib/thinking_sphinx/real_time/transcriber.rb
thinking-sphinx-3.1.3 lib/thinking_sphinx/real_time/transcriber.rb
thinking-sphinx-3.1.2 lib/thinking_sphinx/real_time/transcriber.rb