Skip to content
Snippets Groups Projects
Commit c6532ee3 authored by James Lopez's avatar James Lopez
Browse files

refactored light url builder

parent fb424b3d
No related branches found
No related tags found
No related merge requests found
Loading
@@ -16,7 +16,8 @@ module Gitlab
Loading
@@ -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],
Loading
@@ -30,7 +31,8 @@ module Gitlab
Loading
@@ -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')]
Loading
@@ -38,7 +40,8 @@ module Gitlab
Loading
@@ -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],
Loading
@@ -53,7 +56,8 @@ module Gitlab
Loading
@@ -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]
Loading
@@ -61,7 +65,8 @@ module Gitlab
Loading
@@ -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],
Loading
@@ -75,7 +80,8 @@ module Gitlab
Loading
@@ -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]
Loading
@@ -83,7 +89,8 @@ module Gitlab
Loading
@@ -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],
Loading
Loading
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
Loading
@@ -16,28 +18,11 @@ module Gitlab
Loading
@@ -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({
Loading
@@ -59,7 +44,7 @@ module Gitlab
Loading
@@ -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,
Loading
@@ -70,5 +55,13 @@ module Gitlab
Loading
@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment