app/models/katello/glue/elastic_search/package_group.rb in katello-1.5.0 vs app/models/katello/glue/elastic_search/package_group.rb in katello-2.2.2

- old
+ new

@@ -1,7 +1,7 @@ # -# Copyright 2013 Red Hat, Inc. +# Copyright 2014 Red Hat, Inc. # # This software is licensed to you under the GNU General Public # License as published by the Free Software Foundation; either version # 2 of the License (GPLv2) or (at your option) any later version. # There is NO WARRANTY for this software, express or implied, @@ -9,113 +9,128 @@ # NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should # have received a copy of GPLv2 along with this software; if not, see # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. module Katello -module Glue::ElasticSearch::PackageGroup + module Glue::ElasticSearch::PackageGroup + # TODO: break up into modules + # rubocop:disable MethodLength + def self.included(base) + base.class_eval do + include Glue::ElasticSearch::BackendIndexedModel + def index_options + { + "_type" => Katello::PackageGroup.search_type, + "name_autocomplete" => name + } + end - # TODO: break up into modules - # rubocop:disable MethodLength - def self.included(base) - base.class_eval do + def self.search_type + :package_group + end - def index_options - { - "_type" => :package_group, - "name_autocomplete" => name - } - end - - def self.index_settings - { + def self.index_settings + { "index" => { - "analysis" => { - "filter" => Util::Search.custom_filters, - "analyzer" => Util::Search.custom_analyzers - } + "analysis" => { + "filter" => Util::Search.custom_filters, + "analyzer" => Util::Search.custom_analyzers + } } - } - end + } + end - def self.index_mapping - { - :package_group => { - :properties => { - :id => {:type => 'string', :index => :not_analyzed}, - :package_group_id => {:type => 'string', :index => :not_analyzed}, - :name => { :type => 'string', :analyzer => :kt_name_analyzer}, - :name_sort => { :type => 'string', :index => :not_analyzed }, - :repo_id => { :type => 'string', :index => :not_analyzed}, + def self.index_mapping + { + :package_group => { + :properties => { + :id => {:type => 'string', :index => :not_analyzed}, + :package_group_id => {:type => 'string', :index => :not_analyzed}, + :name => { :type => 'string', :analyzer => :kt_name_analyzer}, + :name_sort => { :type => 'string', :index => :not_analyzed }, + :repo_id => { :type => 'string', :index => :not_analyzed} + } } } - } - end + end - def self.index - "#{Katello.config.elastic_index}_package_group" - end + def self.index + "#{Katello.config.elastic_index}_package_group" + end - def self.id_search(ids) - return Util::Support.array_with_total unless Tire.index(self.index).exists? - search = Tire.search self.index do - fields [:id, :name, :repo_id] - query do - all - end - size ids.size - filter :terms, :id => ids + def self.mapping + Tire.index(self.index).mapping end - search.results - end - def self.search(query, start, page_size, repoid = nil, sort = [:name_sort, "ASC"], - default_field = 'name') - return Util::Support.array_with_total if !Tire.index(self.index).exists? + def self.search(_options = {}, &block) + Tire.search(self.index, &block).results + end - all_rows = query.blank? #if blank, get all rows - - search = Tire.search self.index do - query do - if all_rows + def self.id_search(ids) + return Util::Support.array_with_total unless Tire.index(self.index).exists? + search = Tire.search self.index do + fields [:id, :name, :repo_id] + query do all - else - string query, {:default_field => default_field} end + size ids.size + filter :terms, :id => ids end + search.results + end - if page_size > 0 - size page_size - from start - end - - if repoid - filter :term, :repo_id => repoid - end - sort { by sort[0], sort[1] } unless !all_rows + def self.new_from_search(params) + group_name = params.delete('package_group_id') + id = params.delete('id') + params['id'] = group_name + params['_id'] = id + self.new(params) end - return search.results - rescue Tire::Search::SearchRequestFailed - Util::Support.array_with_total - end + def self.legacy_search(query, start, page_size, repoid = nil, sort = [:name_sort, "asc"], + default_field = 'name') + return Util::Support.array_with_total unless Tire.index(self.index).exists? - def self.index_package_groups(pkg_grp_ids) - pkg_grps = pkg_grp_ids.collect do |pkg_grp_id| - pkg_grp = self.find(pkg_grp_id) - pkg_grp.as_json.merge(pkg_grp.index_options) + all_rows = query.blank? #if blank, get all rows + + search = Tire.search self.index do + query do + if all_rows + all + else + string query, :default_field => default_field + end + end + + if page_size > 0 + size page_size + from start + end + + if repoid + filter :term, :repo_id => repoid + end + sort { by sort[0], sort[1] } if all_rows + end + + return search.results + rescue Tire::Search::SearchRequestFailed + Util::Support.array_with_total end - unless pkg_grps.empty? - Tire.index PackageGroup.index do - create :settings => PackageGroup.index_settings, :mappings => PackageGroup.index_mapping - end unless Tire.index(PackageGroup.index).exists? + def self.index_package_groups(pkg_grp_ids) + pkg_grps = pkg_grp_ids.collect do |pkg_grp_id| + pkg_grp = self.find(pkg_grp_id) + pkg_grp.as_json.merge(pkg_grp.index_options) + end - Tire.index PackageGroup.index do - import pkg_grps + unless pkg_grps.empty? + create_index + Tire.index PackageGroup.index do + import pkg_grps + end end end end - end end -end end