summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Lopez <james@jameslopez.es>2016-11-07 16:54:40 +0100
committerJames Lopez <james@jameslopez.es>2016-11-17 08:22:58 +0100
commitc6532ee3706340bcbe1d8ee25a593b22f9aee811 (patch)
tree7a3208eb90701f087ccbee324f0d3892363117b2
parentfb424b3d514ac096a78b2c5fabc2ddcb10117c73 (diff)
downloadgitlab-ce-c6532ee3706340bcbe1d8ee25a593b22f9aee811.tar.gz
refactored light url builder
-rw-r--r--lib/gitlab/cycle_analytics/query_config.rb21
-rw-r--r--lib/gitlab/light_url_builder.rb37
2 files changed, 29 insertions, 29 deletions
diff --git a/lib/gitlab/cycle_analytics/query_config.rb b/lib/gitlab/cycle_analytics/query_config.rb
index 9c8d31c1a97..0393567378f 100644
--- a/lib/gitlab/cycle_analytics/query_config.rb
+++ b/lib/gitlab/cycle_analytics/query_config.rb
@@ -16,7 +16,8 @@ module Gitlab
end
def issue
- { start_time_attrs: issue_table[:created_at],
+ {
+ start_time_attrs: issue_table[:created_at],
end_time_attrs: [issue_metrics_table[:first_associated_with_milestone_at],
issue_metrics_table[:first_added_to_board_at]],
projections: [issue_table[:title],
@@ -30,7 +31,8 @@ module Gitlab
end
def plan
- { start_time_attrs: issue_metrics_table[:first_associated_with_milestone_at],
+ {
+ start_time_attrs: issue_metrics_table[:first_associated_with_milestone_at],
end_time_attrs: [issue_metrics_table[:first_added_to_board_at],
issue_metrics_table[:first_mentioned_in_commit_at]],
projections: [mr_diff_table[:st_commits].as('commits')]
@@ -38,7 +40,8 @@ module Gitlab
end
def code
- { start_time_attrs: issue_metrics_table[:first_mentioned_in_commit_at],
+ {
+ start_time_attrs: issue_metrics_table[:first_mentioned_in_commit_at],
end_time_attrs: mr_table[:created_at],
projections: [mr_table[:title],
mr_table[:iid],
@@ -53,7 +56,8 @@ module Gitlab
end
def test
- { start_time_attrs: mr_metrics_table[:latest_build_started_at],
+ {
+ start_time_attrs: mr_metrics_table[:latest_build_started_at],
end_time_attrs: mr_metrics_table[:latest_build_finished_at],
projections: [build_table[:id]],
order: build_table[:created_at]
@@ -61,7 +65,8 @@ module Gitlab
end
def review
- { start_time_attrs: mr_table[:created_at],
+ {
+ start_time_attrs: mr_table[:created_at],
end_time_attrs: mr_metrics_table[:merged_at],
projections: [mr_table[:title],
mr_table[:iid],
@@ -75,7 +80,8 @@ module Gitlab
end
def staging
- { start_time_attrs: mr_metrics_table[:merged_at],
+ {
+ start_time_attrs: mr_metrics_table[:merged_at],
end_time_attrs: mr_metrics_table[:first_deployed_to_production_at],
projections: [build_table[:id]],
order: build_table[:created_at]
@@ -83,7 +89,8 @@ module Gitlab
end
def production
- { start_time_attrs: issue_table[:created_at],
+ {
+ start_time_attrs: issue_table[:created_at],
end_time_attrs: mr_metrics_table[:first_deployed_to_production_at],
projections: [issue_table[:title],
issue_table[:iid],
diff --git a/lib/gitlab/light_url_builder.rb b/lib/gitlab/light_url_builder.rb
index 7875491a1d8..ceb8715ad2b 100644
--- a/lib/gitlab/light_url_builder.rb
+++ b/lib/gitlab/light_url_builder.rb
@@ -1,4 +1,6 @@
module Gitlab
+ # Similar to UrlBuilder, but using IDs to avoid querying the DB for objects
+ # Useful for using in conjunction with Arel queries.
class LightUrlBuilder
include Gitlab::Routing.url_helpers
include GitlabRoutingHelper
@@ -16,28 +18,11 @@ module Gitlab
end
def url
- # TODO refactor this
- case @entity
- when :issue
- issue_url
- when :user
- user_url(@id)
- when :user_avatar
- user_avatar_url
- when :commit
- commit_url
- when :merge_request
- mr_url
- when :build
- namespace_project_build_url(@project.namespace, @project, @id)
- when :branch
- branch_url
- else
- raise NotImplementedError.new("No URL builder defined for #{object.class}")
- end
- end
+ url_method = "#{@entity}_url"
+ raise NotImplementedError.new("No Light URL builder defined for #{@entity.to_s}") unless respond_to?(url_method)
- private
+ public_send(url_method)
+ end
def issue_url
namespace_project_issue_url({
@@ -59,7 +44,7 @@ module Gitlab
}.merge!(@opts))
end
- def mr_url
+ def merge_request_url
namespace_project_merge_request_url({
namespace_id: @project.namespace,
project_id: @project,
@@ -70,5 +55,13 @@ module Gitlab
def branch_url
"#{project_url(@project)}/commits/#{@id}"
end
+
+ def user_url
+ Gitlab::Routing.url_helpers.user_url(@id)
+ end
+
+ def build_url
+ namespace_project_build_url(@project.namespace, @project, @id)
+ end
end
end