Sha256: adea01a56897039e47b1617fa5df17d15a294bee840b2331fa81d2affd1d351c

Contents?: true

Size: 1023 Bytes

Versions: 1

Compression:

Stored size: 1023 Bytes

Contents

module Gummi
  module Search
    module Searching
      extend ActiveSupport::Concern

      included do
        include Virtus.model

        attribute :type,          String
        attribute :index,         String,                         default: lambda {|search, attr| Gummi::DefaultIndex.name}
        attribute :page,          Gummi::Fields::PositiveInteger, default: 1
        attribute :per_page,      Gummi::Fields::PositiveInteger, default: 300
        attribute :options,       Hash,                           default: {}
      end

      def size
        per_page
      end

      def from
        per_page * (page - 1)
      end

      def execute
        Gummi::Search::Result.new client.search(to_client_args)
      end

      def to_client_args
        args = {}
        args[:index] = index
        args[:type]  = type if type
        args[:from]  = from
        args[:size]  = size
        args.merge options
      end

      private
      def client
        Gummi::API.client
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gummi-0.0.6 lib/gummi/search/searching.rb