diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fc5b65cbec45d03000e06ed7ff3fc3ba1d7e05d6..d9f64845efa5edc4960a1a935779904d62794cda 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: ruby:2.3.1 +image: ruby:2.3.8 services: - postgres:9.5 diff --git a/app/controllers/v1/search_controller.rb b/app/controllers/v1/search_controller.rb index 3626334eb54386a5d7bd6132290deadfff39f929..b72e3b49b3a171335968309937be8efc42fcc447 100644 --- a/app/controllers/v1/search_controller.rb +++ b/app/controllers/v1/search_controller.rb @@ -66,7 +66,7 @@ class V1::SearchController < ApplicationController def search_params original_params = params params = ActionController::Parameters.new({"search"=>original_params.except(:controller, :action).to_unsafe_h()}) - params.require(:search).permit(:page, :results_per_page, :order, :query, :search_class, tags: [], subjects: [], educational_stages: [], object_types: [], languages: []) + params.require(:search).permit(:page, :results_per_page, :order, :query, :search_class, tags: [], subjects: [], educational_stages: [], object_types: [], languages: [], and_fields: []) end def tag_search_params diff --git a/app/models/search.rb b/app/models/search.rb index 727db240a61e45caf39f4e3fb9e2db0d576e9e2a..36fe471cc9049fa47ca90d5a588f0fec3cfa3f9e 100644 --- a/app/models/search.rb +++ b/app/models/search.rb @@ -18,7 +18,7 @@ # along with portalmec. If not, see <http://www.gnu.org/licenses/>. class Search < ApplicationRecord - attr_accessor :page, :results_per_page, :order, :tags + attr_accessor :page, :results_per_page, :order, :tags, :and_fields belongs_to :user has_and_belongs_to_many :tags @@ -57,7 +57,8 @@ class Search < ApplicationRecord query: '*', order: 'score', page: 0, - results_per_page: 10 + results_per_page: 10, + and_fields: [] }.select { |key, _value| !params.key?(key) } end end diff --git a/app/services/search_service/learning_object.rb b/app/services/search_service/learning_object.rb index 57171773fa067f85ae30b3b8f4803c5e27196fac..019b99c47cbed892322678811484d8fef48a06ee 100644 --- a/app/services/search_service/learning_object.rb +++ b/app/services/search_service/learning_object.rb @@ -46,7 +46,13 @@ module SearchService filter << { terms: { subjects: @search.subjects } } unless @search.subjects.blank? filter << { terms: { educational_stages: @search.educational_stages } } unless @search.educational_stages.blank? filter << { terms: { object_type: @search.object_types.map(&:to_i) } } unless @search.object_types.blank? - filter << { terms: { languages: @search.languages } } unless @search.languages.blank? + if (@search.and_fields).include? 'languages' + (@search.languages).each do |language| + filter << { terms: { languages: Array(language) } } + end + else + filter << { terms: { languages: @search.languages } } unless @search.languages.blank? + end filter << { terms: { state: validate_object } } filter end