Commit c6532ee3 authored by James Lopez's avatar James Lopez

refactored light url builder

parent fb424b3d
......@@ -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],
......
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
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