diff options
author | Alexandru Croitor <acroitor@gitlab.com> | 2019-04-19 10:55:36 +0300 |
---|---|---|
committer | Alexandru Croitor <acroitor@gitlab.com> | 2019-05-15 10:15:17 +0300 |
commit | a4fbf39eca4518598e893f6f1b81b8b69927c6f9 (patch) | |
tree | c3316c3813ec60b4a14bb05a3eb047d64719f083 /lib/api/entities.rb | |
parent | 5ec28dc387fb4adc3c5b65ac47819a8663186954 (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.rb | 27 |
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)) |