Sha256: 131b08018d28f5fc8107a93c7b6f32f9ac2866f3411e4e7009ffd2886fe6d965

Contents?: true

Size: 1.01 KB

Versions: 1

Compression:

Stored size: 1.01 KB

Contents

require 'trailblazer/finder/adapters/sequel/paging'
require 'trailblazer/finder/adapters/sequel/sorting'
require 'trailblazer/finder/adapters/sequel/predicates'

module Trailblazer
  class Finder
    module Adapters
      # Sequel Adapter
      module Sequel
        def self.included(base)
          base.extend ClassMethods
          base.instance_eval do
            include Sequel::Predicates if defined?(Features::Predicate::ClassMethods)
          end
        end

        module ClassMethods
          def normalize_find_handler(handler, key)
            case handler
            when Symbol then ->(entity_type, value) { method(handler).call entity_type, value }
            when Proc then handler
            else ->(entity_type, value) { entity_type.where(key.to_sym => value) unless Utils::String.blank?(value) }
            end
          end
        end

        include Paging if defined?(Features::Paging::ClassMethods)
        include Sorting if defined?(Features::Sorting::ClassMethods)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
trailblazer-finder-0.1.4 lib/trailblazer/finder/adapters/sequel.rb