Sha256: 2d892c98d047c5395d9f26a62735ab50978631dcf3b4a970690915ac3ef9c351

Contents?: true

Size: 1.37 KB

Versions: 24

Compression:

Stored size: 1.37 KB

Contents

# frozen_string_literal: true

module SidekiqUniqueJobs
  module OnConflict
    # Abstract conflict strategy class
    #
    # @abstract
    # @author Mikael Henriksson <mikael@zoolutions.se>
    class Strategy
      include SidekiqUniqueJobs::JSON
      include SidekiqUniqueJobs::Logging
      include SidekiqUniqueJobs::Script::Caller
      include SidekiqUniqueJobs::Timing

      # @!attribute [r] item
      #   @return [Hash] sidekiq job hash
      attr_reader :item
      # @!attribute [r] redis_pool
      #   @return [Sidekiq::RedisConnection, ConnectionPool, NilClass] the redis connection
      attr_reader :redis_pool

      #
      # Initialize a new Strategy
      #
      # @param [Hash] item sidekiq job hash
      # @param [ConnectionPool] redis_pool the connection pool instance
      #
      def initialize(item, redis_pool = nil)
        @item       = item
        @redis_pool = redis_pool
      end

      # Use strategy on conflict
      # @raise [NotImplementedError] needs to be implemented in child class
      def call
        raise NotImplementedError, "needs to be implemented in child class"
      end

      #
      # Check if the strategy is kind of {Replace}
      #
      #
      # @return [true] when the strategy is a {Replace}
      # @return [false] when the strategy is not a {Replace}
      #
      def replace?
        is_a?(Replace)
      end
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
sidekiq-unique-jobs-7.0.0.beta25 lib/sidekiq_unique_jobs/on_conflict/strategy.rb
sidekiq-unique-jobs-7.0.0.beta24 lib/sidekiq_unique_jobs/on_conflict/strategy.rb
sidekiq-unique-jobs-7.0.0.beta23 lib/sidekiq_unique_jobs/on_conflict/strategy.rb
sidekiq-unique-jobs-7.0.0.beta22 lib/sidekiq_unique_jobs/on_conflict/strategy.rb
sidekiq-unique-jobs-7.0.0.beta21 lib/sidekiq_unique_jobs/on_conflict/strategy.rb
sidekiq-unique-jobs-7.0.0.beta20 lib/sidekiq_unique_jobs/on_conflict/strategy.rb
sidekiq-unique-jobs-7.0.0.beta19 lib/sidekiq_unique_jobs/on_conflict/strategy.rb
sidekiq-unique-jobs-7.0.0.beta18 lib/sidekiq_unique_jobs/on_conflict/strategy.rb
sidekiq-unique-jobs-7.0.0.beta17 lib/sidekiq_unique_jobs/on_conflict/strategy.rb
sidekiq-unique-jobs-7.0.0.beta16 lib/sidekiq_unique_jobs/on_conflict/strategy.rb
sidekiq-unique-jobs-7.0.0.beta15 lib/sidekiq_unique_jobs/on_conflict/strategy.rb
sidekiq-unique-jobs-7.0.0.beta14 lib/sidekiq_unique_jobs/on_conflict/strategy.rb
sidekiq-unique-jobs-7.0.0.beta13 lib/sidekiq_unique_jobs/on_conflict/strategy.rb
sidekiq-unique-jobs-7.0.0.beta12 lib/sidekiq_unique_jobs/on_conflict/strategy.rb
sidekiq-unique-jobs-7.0.0.beta11 lib/sidekiq_unique_jobs/on_conflict/strategy.rb
sidekiq-unique-jobs-7.0.0.beta10 lib/sidekiq_unique_jobs/on_conflict/strategy.rb
sidekiq-unique-jobs-7.0.0.beta9 lib/sidekiq_unique_jobs/on_conflict/strategy.rb
sidekiq-unique-jobs-7.0.0.beta8 lib/sidekiq_unique_jobs/on_conflict/strategy.rb
sidekiq-unique-jobs-7.0.0.beta7 lib/sidekiq_unique_jobs/on_conflict/strategy.rb
sidekiq-unique-jobs-7.0.0.beta6 lib/sidekiq_unique_jobs/on_conflict/strategy.rb