Sha256: 7f26659b6162273f69d383e1eb022babb51bc5e7410772c28e915bf6c538370d

Contents?: true

Size: 1.9 KB

Versions: 2

Compression:

Stored size: 1.9 KB

Contents

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

              def to_indexed_json
                title   = revisions.map{|r| r.contents.map(&:title)}.flatten.uniq.join(', ')
                text    = revisions.map{|r| r.contents.map(&:text)}.flatten.uniq.join(', ')
                excerpt = revisions.map{|r| r.contents.map(&:excerpt)}.flatten.uniq.join(', ')
                keywords = revisions.map{|r| r.contents.map(&:keyword_list)}.flatten.uniq.join(', ')
                template = revisions.map(&:template).uniq.join(', ')
                tags = tag_list.join(', ')
                class_name = self.class.name

                {
                  title: title,
                  text: text,
                  excerpt: excerpt,
                  keywords: keywords,
                  url: url,
                  template: template,
                  tags: tags,
                  tag_list: tag_list,
                  publish_state: publish_state,
                  class_name: class_name,
                  updated_at: updated_at.strftime('%F'),
                  revision_id: revision_id
                }.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/page.rb
georgia-0.7.2 lib/georgia/indexer/tire/georgia/page.rb