Sha256: 70871da3c5abc2af5ebb59dbb9bba0a73c49a9fb6db33d23515a64d267c9bd34

Contents?: true

Size: 1.09 KB

Versions: 3

Compression:

Stored size: 1.09 KB

Contents

# frozen_string_literal: true

require "dry/core"

module Hanami
  module Providers
    class DB < Hanami::Provider::Source
      # @api public
      # @since 2.2.0
      class Config < Dry::Configurable::Config
        include Dry::Core::Constants

        # @api public
        # @since 2.2.0
        def gateway(key)
          gateway = (gateways[key] ||= Gateway.new)
          yield gateway if block_given?
          gateway
        end

        # @api public
        # @since 2.2.0
        def adapter(name)
          adapter = adapters.adapter(name)
          yield adapter if block_given?
          adapter
        end

        # @api private
        def each_plugin
          return to_enum(__method__) unless block_given?

          gateways.values.group_by(&:adapter_name).each do |adapter_name, adapter_gateways|
            per_adapter_plugins = adapter_gateways.map { _1.adapter.plugins }.flatten(1).uniq

            per_adapter_plugins.each do |plugin_spec, config_block|
              yield adapter_name, plugin_spec, config_block
            end
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
hanami-2.2.1 lib/hanami/providers/db/config.rb
hanami-2.2.0 lib/hanami/providers/db/config.rb
hanami-2.2.0.rc1 lib/hanami/providers/db/config.rb