Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandru Croitor <acroitor@gitlab.com>2019-04-19 10:55:36 +0300
committerAlexandru Croitor <acroitor@gitlab.com>2019-05-15 10:15:17 +0300
commita4fbf39eca4518598e893f6f1b81b8b69927c6f9 (patch)
treec3316c3813ec60b4a14bb05a3eb047d64719f083 /lib/api/entities.rb
parent5ec28dc387fb4adc3c5b65ac47819a8663186954 (diff)
Move issue details to from IssueBasic to Issue entity
Cleanup IssueBasic entity to keep it basic and move extra attributes to Issue entity which contains more details
Diffstat (limited to 'lib/api/entities.rb')
-rw-r--r--lib/api/entities.rb27
1 files changed, 19 insertions, 8 deletions
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index a57c7e9f851..1f10dc6c0fc 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -542,13 +542,9 @@ module API
class IssueBasic < ProjectEntity
expose :closed_at
expose :closed_by, using: Entities::UserBasic
- expose :labels do |issue, options|
+ expose :labels do |issue|
# Avoids an N+1 query since labels are preloaded
- if options[:with_labels_data]
- ::API::Entities::LabelBasic.represent(issue.labels.sort_by(&:title))
- else
- issue.labels.map(&:title).sort
- end
+ issue.labels.map(&:title).sort
end
expose :milestone, using: Entities::Milestone
expose :assignees, :author, using: Entities::UserBasic
@@ -564,8 +560,6 @@ module API
expose :due_date
expose :confidential
expose :discussion_locked
- expose(:has_tasks) {|issue, _| !issue.task_list_items.empty? }
- expose :task_status, if: -> (issue, _) { !issue.task_list_items.empty? }
expose :web_url do |issue|
Gitlab::UrlBuilder.build(issue)
@@ -579,6 +573,23 @@ module API
class Issue < IssueBasic
include ::API::Helpers::RelatedResourcesHelpers
+ expose :labels do |issue, options|
+ # Avoids an N+1 query since labels are preloaded
+ if options[:with_labels_data]
+ ::API::Entities::LabelBasic.represent(issue.labels.sort_by(&:title))
+ else
+ issue.labels.map(&:title).sort
+ end
+ end
+
+ expose(:has_tasks) do |issue, _|
+ !issue.task_list_items.empty?
+ end
+
+ expose :task_status, if: -> (issue, _) do
+ !issue.task_list_items.empty?
+ end
+
expose :_links do
expose :self do |issue|
expose_url(api_v4_project_issue_path(id: issue.project_id, issue_iid: issue.iid))