Commit f308e16c by Tran Hoang Viet

Merge remote-tracking branch 'origin/develop' into vietth_feat_order_management

parents 1236556d 1cca49df
......@@ -5,7 +5,7 @@ module Solr extend ActiveSupport::Concern
# callbacks
def push_data_to_solr
self.class.rsolr.add(self.slice(*self.class.solr_fields))
self.class.rsolr.add(self.slice(*self.class.solr_options_data[:fields]))
self.class.rsolr.commit
end
......@@ -16,26 +16,41 @@ module Solr extend ActiveSupport::Concern
end
module ClassMethods
attr_accessor :solr_per_page, :solr_page, :solr_total_count, :solr_fields
attr_reader :solr_options_data
def solr_options(fields = {})
@solr_per_page = fields[:per_page] || 5
@solr_fields = fields[:fields] || []
@solr_options_data = {
escape: true,
page: 1,
per_page: 5
}.merge(fields)
end
def search(query, options = {})
return unless query.is_a?(Hash)
@solr_page = options[:page] || 1
query = query.inject('') { |str, item| str << "#{item.first}:(#{item.last})" << ' ' }
@solr_options_data = solr_options_data.merge(options)
query = query.inject('') do |str, item|
if item.last.is_a?(Hash)
value = item.last[:value]
escape = item.last[:escape].nil? || item.last[:escape].present?
else
value = item.last
escape = solr_options_data[:escape].present?
end
value = %Q("#{value}") if escape.present?
str << "#{item.first}:#{value}" << ' '
end
results = rsolr.paginate(
solr_page,
solr_per_page,
solr_options_data[:page],
solr_options_data[:per_page],
'select',
params: {q: query, fl: self.primary_key}
)
@solr_total_count = results['response']['numFound'].to_i
@solr_options_data[:total_count] = results['response']['numFound'].to_i
parse(results['response'])
end
......@@ -49,7 +64,9 @@ module Solr extend ActiveSupport::Concern
end
def kaminari_paginate
Kaminari.paginate_array([], total_count: solr_total_count).page(solr_page).per(solr_per_page)
Kaminari.paginate_array([], total_count: @solr_options_data[:total_count])
.page(solr_options_data[:page])
.per(solr_options_data[:per_page])
end
def clear_solr_index
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment