Sha256: 27b117db560faed3a9c148ad92d11683f504bb6ec6afd6178fcb0c6c2ac6e370

Contents?: true

Size: 1003 Bytes

Versions: 4

Compression:

Stored size: 1003 Bytes

Contents

# frozen_string_literal: true

module Trailblazer
  class Finder
    module Activity
      module Prepare
        # Filters Activity
        module Filters
          extend Trailblazer::Activity::Railway()

          module_function

          def validate_filters(ctx, **)
            filters = ctx[:config][:filters]
            filters.each do |key, _value|
              return false if !filters[key][:with].nil? && !filters[key][:with].is_a?(Symbol)
            end
            true
          end

          def invalid_filters_error(ctx, **)
            (ctx[:errors] ||= []) << {filters: "One or more filters are missing a with method definition"}
          end

          def set_filters(ctx, **)
            ctx[:filters] = ctx[:config][:filters]
          end

          step method(:validate_filters), id: :validate_filters
          fail method(:invalid_filters_error), id: :invalid_filters_error
          step method(:set_filters), id: :set_filters
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
trailblazer-finder-0.3.0 lib/trailblazer/finder/activity/prepare/filters.rb
trailblazer-finder-0.2.7 lib/trailblazer/finder/activity/prepare/filters.rb
trailblazer-finder-0.2.6 lib/trailblazer/finder/activity/prepare/filters.rb
trailblazer-finder-0.2.5 lib/trailblazer/finder/activity/prepare/filters.rb