diff options
author | Valery Sizov <vsv2711@gmail.com> | 2016-01-07 10:54:29 +0200 |
---|---|---|
committer | Valery Sizov <vsv2711@gmail.com> | 2016-01-07 10:54:29 +0200 |
commit | 8c8b8978cff03344d0331d3bfae4dfa1bedf37af (patch) | |
tree | b30a7722aa687b00bd9b358e79efe1521b2dac37 /app/services | |
parent | aacc700c4aa6cfce1db1d09b9029f2e63c0f13b6 (diff) | |
download | gitlab-ce-elasticsearch.tar.gz |
elastic: almost all integrated exept view logicelasticsearch
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/search_service.rb | 46 |
1 files changed, 12 insertions, 34 deletions
diff --git a/app/services/search_service.rb b/app/services/search_service.rb index 22e15fdc78a..f31794a96e7 100644 --- a/app/services/search_service.rb +++ b/app/services/search_service.rb @@ -7,20 +7,19 @@ class SearchService < BaseService users: search_in_users(query), projects: search_in_projects(query), merge_requests: search_in_merge_requests(query), - issues: search_in_issues(query), - repositories: search_in_repository(query), + issues: search_in_issues(query) } end def project_search(project) query = params[:search] + { groups: {}, users: {}, projects: {}, merge_requests: search_in_merge_requests(query, project), - issues: search_in_issues(query, project), - repositories: search_in_repository(query, project), + issues: search_in_issues(query, project) } end @@ -36,12 +35,13 @@ class SearchService < BaseService } group = Group.find_by(id: params[:group_id]) if params[:group_id].present? + opt[:namespace_id] = group.id if group opt[:category] = params[:category] if params[:category].present? begin - response = Project.search(query, options: opt, page: page) + response = Project.elastic_search(query, options: opt, page: page) categories_list = if query.blank? Project.category_counts.map do |category| @@ -75,7 +75,7 @@ class SearchService < BaseService } begin - response = Group.search(query, options: opt, page: page) + response = Group.elastic_search(query, options: opt, page: page) { records: response.records, @@ -96,7 +96,7 @@ class SearchService < BaseService } begin - response = User.search(query, options: opt, page: page) + response = User.elastic_search(query, options: opt, page: page) { records: response.records, @@ -117,7 +117,7 @@ class SearchService < BaseService } begin - response = MergeRequest.search(query, options: opt, page: page) + response = MergeRequest.elastic_search(query, options: opt, page: page) { records: response.records, @@ -137,7 +137,7 @@ class SearchService < BaseService } begin - response = Issue.search(query, options: opt, page: page) + response = Issue.elastic_search(query, options: opt, page: page) { records: response.records, @@ -150,33 +150,11 @@ class SearchService < BaseService end end - def search_in_repository(query, project = nil) - opt = { - repository_id: project ? [project.id] : projects_ids, - highlight: true, - order: params[:order] - } - - if params[:language].present? && params[:language] != 'All' - opt.merge!({ language: params[:language] }) - end - - begin - res = Repository.search(query, options: opt, page: page) - - res[:blobs][:projects] = project_filter(res[:blobs][:repositories]) || [] - res[:commits][:projects] = project_filter(res[:commits][:repositories]) || [] - - res - rescue Exception => e - {} - end - end - def projects_ids @allowed_projects_ids ||= begin if params[:namespace].present? namespace = Namespace.find_by(path: params[:namespace]) + if namespace return namespace.projects.where(id: known_projects_ids).pluck(:id) end @@ -196,8 +174,8 @@ class SearchService < BaseService def known_projects_ids known_projects_ids = [] - known_projects_ids += current_user.known_projects.pluck(:id) if current_user - known_projects_ids + Project.public_or_internal_only(current_user).pluck(:id) + known_projects_ids += current_user.authorized_projects.pluck(:id) if current_user + known_projects_ids + Project.public_and_internal_only.pluck(:id) end def project_filter(es_results) |