Sha256: f2a347ca9cd1dbbcace0edf34a41a02bc93947c6d5ceccd847afe72c01720dec

Contents?: true

Size: 797 Bytes

Versions: 4

Compression:

Stored size: 797 Bytes

Contents

module SimpleAdmin
  class Search
    attr_reader :search_query, :resource_klass, :model_attributes

    def initialize(search_query, resource_klass)
      @search_query = search_query
      @resource_klass = resource_klass

      @model_attributes = SimpleAdmin::EntityField.joins(:entity)
                                                  .where(simple_admin_entities: { model_klass_name: resource_klass.to_s })
                                                  .search_indexable_columns
    end

    def process
      return [] if model_attributes.empty?

      query = model_attributes.map { |model_attribute| "#{model_attribute} LIKE ?" }.join(' OR ')
      query_arguments = model_attributes.map { "%#{search_query}%" }

      resource_klass.where(query, *query_arguments)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
simple-admin-0.2.0.pre.alpha lib/simple_admin/search.rb
simple-admin-0.1.2.pre.alpha lib/simple_admin/search.rb
simple-admin-0.1.1.pre.alpha lib/simple_admin/search.rb
simple-admin-0.1.0.pre.alpha lib/simple_admin/search.rb