summaryrefslogtreecommitdiff
path: root/lib/api/entities
diff options
context:
space:
mode:
Diffstat (limited to 'lib/api/entities')
-rw-r--r--lib/api/entities/container_expiration_policy.rb1
-rw-r--r--lib/api/entities/merge_request.rb10
-rw-r--r--lib/api/entities/merge_request_basic.rb2
-rw-r--r--lib/api/entities/project_import_failed_relation.rb11
-rw-r--r--lib/api/entities/project_import_status.rb4
-rw-r--r--lib/api/entities/user.rb4
6 files changed, 31 insertions, 1 deletions
diff --git a/lib/api/entities/container_expiration_policy.rb b/lib/api/entities/container_expiration_policy.rb
index 853bbb9b76b..b2240704b99 100644
--- a/lib/api/entities/container_expiration_policy.rb
+++ b/lib/api/entities/container_expiration_policy.rb
@@ -8,6 +8,7 @@ module API
expose :keep_n
expose :older_than
expose :name_regex
+ expose :name_regex_keep
expose :next_run_at
end
end
diff --git a/lib/api/entities/merge_request.rb b/lib/api/entities/merge_request.rb
index 9ff8e20ced1..7fc76a4071e 100644
--- a/lib/api/entities/merge_request.rb
+++ b/lib/api/entities/merge_request.rb
@@ -39,6 +39,16 @@ module API
expose :diverged_commits_count, as: :diverged_commits_count, if: -> (_, options) { options[:include_diverged_commits_count] }
+ # We put this into an option because list of TODOs API will attach their
+ # targets with Entities::MergeRequest instead of
+ # Entities::MergeRequestBasic, but this attribute cannot be eagerly
+ # loaded in batch for now. The list of merge requests API will
+ # use Entities::MergeRequestBasic which does not support this, and
+ # we always enable this for the single merge request API. This way
+ # we avoid N+1 queries in the TODOs API and can still enable it for
+ # the single merge request API.
+ expose :first_contribution?, as: :first_contribution, if: -> (_, options) { options[:include_first_contribution] }
+
def build_available?(options)
options[:project]&.feature_available?(:builds, options[:current_user])
end
diff --git a/lib/api/entities/merge_request_basic.rb b/lib/api/entities/merge_request_basic.rb
index 8cec2c1a97e..4610220e4f6 100644
--- a/lib/api/entities/merge_request_basic.rb
+++ b/lib/api/entities/merge_request_basic.rb
@@ -52,7 +52,7 @@ module API
# information.
expose :merge_status do |merge_request|
merge_request.check_mergeability(async: true)
- merge_request.merge_status
+ merge_request.public_merge_status
end
expose :diff_head_sha, as: :sha
expose :merge_commit_sha
diff --git a/lib/api/entities/project_import_failed_relation.rb b/lib/api/entities/project_import_failed_relation.rb
new file mode 100644
index 00000000000..16b26ad0efa
--- /dev/null
+++ b/lib/api/entities/project_import_failed_relation.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ class ProjectImportFailedRelation < Grape::Entity
+ expose :id, :created_at, :exception_class, :exception_message, :source
+
+ expose :relation_key, as: :relation_name
+ end
+ end
+end
diff --git a/lib/api/entities/project_import_status.rb b/lib/api/entities/project_import_status.rb
index de7b4b998be..5ef5600259f 100644
--- a/lib/api/entities/project_import_status.rb
+++ b/lib/api/entities/project_import_status.rb
@@ -8,6 +8,10 @@ module API
project.import_state&.correlation_id
end
+ expose :failed_relations, using: Entities::ProjectImportFailedRelation do |project, _options|
+ project.import_state.relation_hard_failures(limit: 100)
+ end
+
# TODO: Use `expose_nil` once we upgrade the grape-entity gem
expose :import_error, if: lambda { |project, _ops| project.import_state&.last_error } do |project|
project.import_state.last_error
diff --git a/lib/api/entities/user.rb b/lib/api/entities/user.rb
index 4a1f570c3f0..adf954ab02d 100644
--- a/lib/api/entities/user.rb
+++ b/lib/api/entities/user.rb
@@ -3,8 +3,12 @@
module API
module Entities
class User < UserBasic
+ include UsersHelper
expose :created_at, if: ->(user, opts) { Ability.allowed?(opts[:current_user], :read_user_profile, user) }
expose :bio, :location, :public_email, :skype, :linkedin, :twitter, :website_url, :organization, :job_title
+ expose :work_information do |user|
+ work_information(user)
+ end
end
end
end