Sha256: ab70968a072f1464a142bb3f91d76e231f76559cfa23408c0f782d45a17e6c32

Contents?: true

Size: 1.19 KB

Versions: 5

Compression:

Stored size: 1.19 KB

Contents

# frozen_string_literal: true

require 'forwardable'
require 'luna_park/extensions/injector'
require 'cyclone_lariat/core'
require 'cyclone_lariat/repo/sequel/messages'
require 'cyclone_lariat/repo/active_record/messages'

module CycloneLariat
  module Repo
    class Messages
      include LunaPark::Extensions::Injector

      attr_reader :config

      dependency(:sequel_messages_class) { Repo::Sequel::Messages }
      dependency(:active_record_messages_class) { Repo::ActiveRecord::Messages }

      extend Forwardable

      def_delegators :driver, :create, :exists?, :processed!, :find, :each_unprocessed, :each_with_client_errors,
                     :enabled?, :disabled?

      def initialize(**options)
        @config = CycloneLariat::Options.wrap(options).merge!(CycloneLariat.config)
      end

      def driver
        @driver ||= select(driver: config.driver)
      end

      private

      def select(driver:)
        case driver
        when :sequel then sequel_messages_class.new(config.messages_dataset)
        when :active_record then active_record_messages_class.new(config.messages_dataset)
        else raise ArgumentError, "Undefined driver `#{driver}`"
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
cyclone_lariat-1.0.0.rc5 lib/cyclone_lariat/repo/messages.rb
cyclone_lariat-1.0.0.rc4 lib/cyclone_lariat/repo/messages.rb
cyclone_lariat-1.0.0.rc3 lib/cyclone_lariat/repo/messages.rb
cyclone_lariat-1.0.0.rc2 lib/cyclone_lariat/repo/messages.rb
cyclone_lariat-1.0.0.rc1 lib/cyclone_lariat/repo/messages.rb