Sha256: 2cf91673db8d1bba29dded2a83a13a9bb5de1eebe208fd91a6f1c5f9a77dd0cc

Contents?: true

Size: 1.17 KB

Versions: 2

Compression:

Stored size: 1.17 KB

Contents

module Georgia
  module Indexer
    module Tire
      module Georgia
        module Message
          def self.extended(base)
            base.class_eval do
              include ::Tire::Model::Search
              include ::Tire::Model::Callbacks

              def to_indexed_json
                {
                  name: name,
                  email: email,
                  message: message,
                  subject: subject,
                  phone: phone,
                  spam: spam,
                  updated_at: updated_at.strftime('%F')
                }.to_json
              end

              def self.search model, params
                model.tire.search(page: (params[:page] || 1), per_page: (params[:per] || 25)) do
                  if params[:query].present?
                    query do
                      boolean do
                        must { string params[:query], default_operator: "AND" }
                      end
                    end
                    sort { by (params[:o] || :updated_at), (params[:dir] || :desc) }
                  end
                end.results
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
georgia-0.7.3 lib/georgia/indexer/tire/georgia/message.rb
georgia-0.7.2 lib/georgia/indexer/tire/georgia/message.rb