Sha256: a4926eda7502a191bbc8f191cde33ba39948188dc6abf9107262e931973639a5

Contents?: true

Size: 1.87 KB

Versions: 8

Compression:

Stored size: 1.87 KB

Contents

class ThinkingSphinx::Deltas::ResqueDelta < ThinkingSphinx::Deltas::DefaultDelta
  module FlagAsDeletedSet
    extend self

    def set_name(core_name)
      "#{ThinkingSphinx::Deltas::ResqueDelta.job_prefix}:flag.deleted:#{core_name}:set"
    end

    def temp_name(core_name)
      "#{ThinkingSphinx::Deltas::ResqueDelta.job_prefix}:flag.deleted:#{core_name}:temp"
    end

    def processing_name(core_name)
      "#{ThinkingSphinx::Deltas::ResqueDelta.job_prefix}:flag.deleted:#{core_name}:processing"
    end

    def add(core_name, document_id)
      Resque.redis.sadd(set_name(core_name), document_id)
    end

    def clear!(core_name)
      Resque.redis.del(set_name(core_name))

      #Clear processing set as well
      delta_name = ThinkingSphinx::Deltas::ResqueDelta::IndexUtils.core_to_delta(core_name)
      ThinkingSphinx::Deltas::ResqueDelta::DeltaJob.around_perform_lock(delta_name) do
        Resque.redis.del(processing_name(core_name))
      end
    end

    def clear_all!
      ThinkingSphinx::Deltas::ResqueDelta::IndexUtils.core_indices.each do |core_index|
        clear!(core_index)
      end
    end

    def get_subset_for_processing(core_name)
      # Copy set to temp
      Resque.redis.sunionstore temp_name(core_name), set_name(core_name)
      # Store (set - temp) into set.  This removes all items we copied into temp from set.
      Resque.redis.sdiffstore set_name(core_name), set_name(core_name), temp_name(core_name)
      # Merge processing and temp together and store into processing.
      Resque.redis.sunionstore processing_name(core_name), processing_name(core_name), temp_name(core_name)

      Resque.redis.del temp_name(core_name)
    end

    def processing_members(core_name)
      Resque.redis.smembers(processing_name(core_name)).collect(&:to_i)
    end

    def clear_processing(core_name)
      Resque.redis.del(processing_name(core_name))
    end
  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
ts-resque-delta-1.2.2 lib/thinking_sphinx/deltas/resque_delta/flag_as_deleted_set.rb
ts-resque-delta-1.2.1 lib/thinking_sphinx/deltas/resque_delta/flag_as_deleted_set.rb
ts-resque-delta-1.2.0 lib/thinking_sphinx/deltas/resque_delta/flag_as_deleted_set.rb
ryansch-ts-resque-delta-1.1.5.4 lib/thinking_sphinx/deltas/resque_delta/flag_as_deleted_set.rb
ryansch-ts-resque-delta-1.1.5.4.dev lib/thinking_sphinx/deltas/resque_delta/flag_as_deleted_set.rb
ryansch-ts-resque-delta-1.1.5.3 lib/thinking_sphinx/deltas/resque_delta/flag_as_deleted_set.rb
ryansch-ts-resque-delta-1.1.5.2 lib/thinking_sphinx/deltas/resque_delta/flag_as_deleted_set.rb
ryansch-ts-resque-delta-1.1.5.1 lib/thinking_sphinx/deltas/resque_delta/flag_as_deleted_set.rb