summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToon Claes <toon@gitlab.com>2017-05-30 23:24:17 +0200
committerToon Claes <toon@gitlab.com>2017-05-30 23:24:17 +0200
commit1e5506d01619780da68fc51ada58188a9070255b (patch)
treeb26383b07e7e4c279299e90d99d1b04804c49130
parentdb679788e46d55984a4af71034c6db11aed919e4 (diff)
downloadgitlab-ce-tc-improve-project-api-perf.tar.gz
Remove some deprecated methodstc-improve-project-api-perf
To avoid the use of slow queries, remove some deprecated methods and encourage the use of ProjectFinder to find projects.
-rw-r--r--app/controllers/dashboard_controller.rb2
-rw-r--r--app/models/project.rb4
-rw-r--r--app/models/user.rb6
-rw-r--r--lib/api/v3/helpers.rb2
-rw-r--r--lib/api/v3/projects.rb2
-rw-r--r--spec/models/user_spec.rb19
6 files changed, 3 insertions, 32 deletions
diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb
index 6195121b931..f9c31920302 100644
--- a/app/controllers/dashboard_controller.rb
+++ b/app/controllers/dashboard_controller.rb
@@ -24,7 +24,7 @@ class DashboardController < Dashboard::ApplicationController
def load_events
projects =
if params[:filter] == "starred"
- current_user.viewable_starred_projects
+ ProjectsFinder.new(current_user: current_user, params: { starred: true }).execute
else
current_user.authorized_projects
end
diff --git a/app/models/project.rb b/app/models/project.rb
index 963fd594d46..457399cb60e 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -351,10 +351,6 @@ class Project < ActiveRecord::Base
where("projects.id IN (#{union.to_sql})")
end
- def search_by_visibility(level) # DEPRECATED: remove with API V3
- where(visibility_level: Gitlab::VisibilityLevel.string_options[level])
- end
-
def search_by_title(query)
pattern = "%#{query}%"
table = Project.arel_table
diff --git a/app/models/user.rb b/app/models/user.rb
index 20894ce269a..9aad327b592 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -557,12 +557,6 @@ class User < ActiveRecord::Base
authorized_projects(Gitlab::Access::REPORTER).where(id: projects)
end
- def viewable_starred_projects # DEPRECATED: Use ProjectFinder instead. Remove together with API V3
- starred_projects.where("projects.visibility_level IN (?) OR projects.id IN (?)",
- [Project::PUBLIC, Project::INTERNAL],
- authorized_projects.select(:project_id))
- end
-
def owned_projects
@owned_projects ||=
Project.where('namespace_id IN (?) OR namespace_id = ?',
diff --git a/lib/api/v3/helpers.rb b/lib/api/v3/helpers.rb
index 06af286ef50..d9e76560d03 100644
--- a/lib/api/v3/helpers.rb
+++ b/lib/api/v3/helpers.rb
@@ -35,7 +35,7 @@ module API
end
if params[:visibility].present?
- projects = projects.search_by_visibility(params[:visibility])
+ projects = projects.where(visibility_level: Gitlab::VisibilityLevel.level_value(params[:visibility]))
end
projects = projects.where(archived: params[:archived])
diff --git a/lib/api/v3/projects.rb b/lib/api/v3/projects.rb
index 164612cb8dd..896c00b88e7 100644
--- a/lib/api/v3/projects.rb
+++ b/lib/api/v3/projects.rb
@@ -147,7 +147,7 @@ module API
get '/starred' do
authenticate!
- present_projects current_user.viewable_starred_projects
+ present_projects ProjectsFinder.new(current_user: current_user, params: { starred: true }).execute
end
desc 'Get all projects for admin user' do
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 9edf34b05ad..fe9df3360ff 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -1496,25 +1496,6 @@ describe User, models: true do
end
end
- describe '#viewable_starred_projects' do
- let(:user) { create(:user) }
- let(:public_project) { create(:empty_project, :public) }
- let(:private_project) { create(:empty_project, :private) }
- let(:private_viewable_project) { create(:empty_project, :private) }
-
- before do
- private_viewable_project.team << [user, Gitlab::Access::MASTER]
-
- [public_project, private_project, private_viewable_project].each do |project|
- user.toggle_star(project)
- end
- end
-
- it 'returns only starred projects the user can view' do
- expect(user.viewable_starred_projects).not_to include(private_project)
- end
- end
-
describe '#projects_with_reporter_access_limited_to' do
let(:project1) { create(:empty_project) }
let(:project2) { create(:empty_project) }