Sha256: 244738ad045e681f4c83a4aa667588cdf540e16f3b8777ad7b12f50af7aa2392

Contents?: true

Size: 680 Bytes

Versions: 2

Compression:

Stored size: 680 Bytes

Contents

module Administrate
  class Search
    def initialize(resolver, term)
      @resolver = resolver
      @term = term
    end

    def run
      if @term.blank?
        resource_class.all
      else
        resource_class.where(query, *search_terms)
      end
    end

    private

    delegate :resource_class, to: :resolver

    def query
      search_attributes.map { |attr| "#{attr} ILIKE ?" }.join(" OR ")
    end

    def search_terms
      ["%#{term}%"] * search_attributes.count
    end

    def search_attributes
      resolver.dashboard_class::ATTRIBUTE_TYPES.select do |_, type|
        type.searchable?
      end.keys
    end

    attr_reader :resolver, :term
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
administrate-0.1.0 lib/administrate/search.rb
administrate-0.0.12 lib/administrate/search.rb