Commit c6532ee3 authored by James Lopez's avatar James Lopez

refactored light url builder

parent fb424b3d
...@@ -16,7 +16,8 @@ module Gitlab ...@@ -16,7 +16,8 @@ module Gitlab
end end
def issue 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], end_time_attrs: [issue_metrics_table[:first_associated_with_milestone_at],
issue_metrics_table[:first_added_to_board_at]], issue_metrics_table[:first_added_to_board_at]],
projections: [issue_table[:title], projections: [issue_table[:title],
...@@ -30,7 +31,8 @@ module Gitlab ...@@ -30,7 +31,8 @@ module Gitlab
end end
def plan 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], end_time_attrs: [issue_metrics_table[:first_added_to_board_at],
issue_metrics_table[:first_mentioned_in_commit_at]], issue_metrics_table[:first_mentioned_in_commit_at]],
projections: [mr_diff_table[:st_commits].as('commits')] projections: [mr_diff_table[:st_commits].as('commits')]
...@@ -38,7 +40,8 @@ module Gitlab ...@@ -38,7 +40,8 @@ module Gitlab
end end
def code 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], end_time_attrs: mr_table[:created_at],
projections: [mr_table[:title], projections: [mr_table[:title],
mr_table[:iid], mr_table[:iid],
...@@ -53,7 +56,8 @@ module Gitlab ...@@ -53,7 +56,8 @@ module Gitlab
end end
def test 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], end_time_attrs: mr_metrics_table[:latest_build_finished_at],
projections: [build_table[:id]], projections: [build_table[:id]],
order: build_table[:created_at] order: build_table[:created_at]
...@@ -61,7 +65,8 @@ module Gitlab ...@@ -61,7 +65,8 @@ module Gitlab
end end
def review def review
{ start_time_attrs: mr_table[:created_at], {
start_time_attrs: mr_table[:created_at],
end_time_attrs: mr_metrics_table[:merged_at], end_time_attrs: mr_metrics_table[:merged_at],
projections: [mr_table[:title], projections: [mr_table[:title],
mr_table[:iid], mr_table[:iid],
...@@ -75,7 +80,8 @@ module Gitlab ...@@ -75,7 +80,8 @@ module Gitlab
end end
def staging 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], end_time_attrs: mr_metrics_table[:first_deployed_to_production_at],
projections: [build_table[:id]], projections: [build_table[:id]],
order: build_table[:created_at] order: build_table[:created_at]
...@@ -83,7 +89,8 @@ module Gitlab ...@@ -83,7 +89,8 @@ module Gitlab
end end
def production 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], end_time_attrs: mr_metrics_table[:first_deployed_to_production_at],
projections: [issue_table[:title], projections: [issue_table[:title],
issue_table[:iid], issue_table[:iid],
......
module Gitlab 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 class LightUrlBuilder
include Gitlab::Routing.url_helpers include Gitlab::Routing.url_helpers
include GitlabRoutingHelper include GitlabRoutingHelper
...@@ -16,28 +18,11 @@ module Gitlab ...@@ -16,28 +18,11 @@ module Gitlab
end end
def url def url
# TODO refactor this url_method = "#{@entity}_url"
case @entity raise NotImplementedError.new("No Light URL builder defined for #{@entity.to_s}") unless respond_to?(url_method)
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
private public_send(url_method)
end
def issue_url def issue_url
namespace_project_issue_url({ namespace_project_issue_url({
...@@ -59,7 +44,7 @@ module Gitlab ...@@ -59,7 +44,7 @@ module Gitlab
}.merge!(@opts)) }.merge!(@opts))
end end
def mr_url def merge_request_url
namespace_project_merge_request_url({ namespace_project_merge_request_url({
namespace_id: @project.namespace, namespace_id: @project.namespace,
project_id: @project, project_id: @project,
...@@ -70,5 +55,13 @@ module Gitlab ...@@ -70,5 +55,13 @@ module Gitlab
def branch_url def branch_url
"#{project_url(@project)}/commits/#{@id}" "#{project_url(@project)}/commits/#{@id}"
end 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
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment