Sha256: fe17df5d0fe792c58c91a7be2affc1ea336c2781ebc965e95c8a8dbe8fa58d13

Contents?: true

Size: 1.24 KB

Versions: 1

Compression:

Stored size: 1.24 KB

Contents

module Karafka
  module Setup
    # Schema with validation rules for all configuration
    ConfigSchema = Dry::Validation.Schema do
      required(:name).filled(:str?)
      required(:topic_mapper).filled
      optional(:inline_mode).filled(:bool?)

      required(:redis).maybe do
        schema do
          required(:url).filled(:str?)
        end
      end

      # If inline_mode is true, redis should be filled
      rule(redis_presence: [:redis, :inline_mode]) do |redis, inline_mode|
        inline_mode.false?.then(redis.filled?)
      end

      optional(:batch_mode).filled(:bool?)
      optional(:start_from_beginning).filled(:bool?)

      optional(:connection_pool).schema do
        required(:size).filled
        optional(:timeout).filled(:int?)
      end

      required(:kafka).schema do
        required(:hosts).filled(:array?)

        required(:session_timeout).filled(:int?)
        required(:offset_commit_interval).filled(:int?)
        required(:offset_commit_threshold).filled(:int?)
        required(:heartbeat_interval).filled(:int?)

        optional(:ssl).schema do
          required(:ca_cert).maybe(:str?)
          required(:client_cert).maybe(:str?)
          required(:client_cert_key).maybe(:str?)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
karafka-0.5.0.3 lib/karafka/setup/config_schema.rb