diff --git a/app/models/collection.rb b/app/models/collection.rb index 54212efb4ecf76278f3e6d93dd9c8bb1e090392b..f3b7f2745949ffd7685e585600c73272172b3165 100644 --- a/app/models/collection.rb +++ b/app/models/collection.rb @@ -65,7 +65,8 @@ class Collection < ApplicationRecord created_at: created_at, likes: likes_count, downloads: downloads_count, - review_average: review_ratings_average + review_average: review_ratings_average, + empty: collection_items.empty? } end diff --git a/app/services/search_service/collection.rb b/app/services/search_service/collection.rb index c6f805616be02c01391a98b623f62e0aba342bfc..5bd29469709d51634c3d8489b27f653afed1edd1 100644 --- a/app/services/search_service/collection.rb +++ b/app/services/search_service/collection.rb @@ -26,6 +26,7 @@ module SearchService filter << { in: { tags: @search.tags } } unless @search.tags.blank? filter << { in: { subjects: @search.subjects } } unless @search.subjects.blank? filter << { in: { educational_stages: @search.educational_stages } } unless @search.educational_stages.blank? + filter << { terms: { empty: show_empty } } filter end @@ -40,5 +41,11 @@ module SearchService when 'review_average' then { review_average: { order: :desc } } end end + + def show_empty + return [true,false] if !@user.nil? && @user.is_admin? + [false] + end + end end diff --git a/app/services/search_service/learning_object.rb b/app/services/search_service/learning_object.rb index ebd525e6335b141e4f75c47c9513937f5c575da3..bff63f89f5d272e4c242eab493cea34bac8e619f 100644 --- a/app/services/search_service/learning_object.rb +++ b/app/services/search_service/learning_object.rb @@ -27,7 +27,7 @@ module SearchService filter << { in: { subjects: @search.subjects } } unless @search.subjects.blank? filter << { in: { educational_stages: @search.educational_stages } } unless @search.educational_stages.blank? filter << { in: { object_type: @search.object_types.map(&:to_i) } } unless @search.object_types.blank? - filter << { term: { state: validate_object } } + filter << { terms: { state: validate_object } } filter end @@ -44,7 +44,7 @@ module SearchService end def validate_object - return ::LearningObject.states[:published] unless !@user.nil? && @user.is_admin? + return [::LearningObject.states[:published]] unless !@user.nil? && @user.is_admin? ::LearningObject.states.values end end diff --git a/app/services/search_service/model.rb b/app/services/search_service/model.rb index 632825a4fb309a5f1fc45aaafc861284777ecbe1..eda8a5d6e734389b82930cd87790fab5ba1354f8 100644 --- a/app/services/search_service/model.rb +++ b/app/services/search_service/model.rb @@ -37,8 +37,13 @@ module SearchService end def mount_query - # TODO: match_all don't work with filter, fix when possible - return { "match_all": {} } if @search.query == "*" + match_all_query = { + filtered:{ + query: { match_all: {} }, + filter: mount_filter + } + } + return match_all_query if @search.query == "*" { function_score: {