Sha256: b9026f5b2879e3f6c4cb27960c3f9f7b6601858abd8f524e5822ac75327f3389

Contents?: true

Size: 1.09 KB

Versions: 1

Compression:

Stored size: 1.09 KB

Contents

# frozen_string_literal: true

require "sidekiq"

module ActiveWebhook
  module Queueing
    class SidekiqAdapter < BaseAdapter
      class SubscriptionWorker
        include Sidekiq::Worker

        def perform(subscription, hook, context)
          subscription = ActiveWebhook.subscription_model.find_by(id: subscription)
          hook = Hook.from_h(hook.symbolize_keys) unless hook.nil?

          ActiveWebhook.queueing_adapter.fulfill_subscription(
            subscription: subscription,
            hook: hook,
            job_id: jid,
            **context.symbolize_keys
          )
        end
      end

      class TopicWorker
        include Sidekiq::Worker

        def perform(key, version, context)
          ActiveWebhook.queueing_adapter.new(key: key, version: version, **context.symbolize_keys).fulfill_topic
        end
      end

      protected

      def promise_subscription(subscription:, hook:)
        SubscriptionWorker.perform_async subscription.id, hook&.to_h, context
      end

      def promise_topic
        TopicWorker.perform_async key, version, context
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
active_webhook-1.0.0 lib/active_webhook/queueing/sidekiq_adapter.rb