diff options
author | James Lopez <james@jameslopez.es> | 2016-11-07 16:54:40 +0100 |
---|---|---|
committer | James Lopez <james@jameslopez.es> | 2016-11-17 08:22:58 +0100 |
commit | c6532ee3706340bcbe1d8ee25a593b22f9aee811 (patch) | |
tree | 7a3208eb90701f087ccbee324f0d3892363117b2 | |
parent | fb424b3d514ac096a78b2c5fabc2ddcb10117c73 (diff) | |
download | gitlab-ce-c6532ee3706340bcbe1d8ee25a593b22f9aee811.tar.gz |
refactored light url builder
-rw-r--r-- | lib/gitlab/cycle_analytics/query_config.rb | 21 | ||||
-rw-r--r-- | lib/gitlab/light_url_builder.rb | 37 |
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 |