debian-mirror-gitlab/lib/api/entities/note.rb

44 lines
1.5 KiB
Ruby
Raw Normal View History

2020-03-13 15:44:24 +05:30
# frozen_string_literal: true
module API
module Entities
class Note < Grape::Entity
# Only Issue and MergeRequest have iid
NOTEABLE_TYPES_WITH_IID = %w(Issue MergeRequest).freeze
expose :id
expose :type
expose :note, as: :body
expose :attachment_identifier, as: :attachment
expose :author, using: Entities::UserBasic
expose :created_at, :updated_at
expose :system?, as: :system
expose :noteable_id, :noteable_type
2021-02-22 17:27:13 +05:30
expose :commit_id, if: ->(note, options) { note.noteable_type == "MergeRequest" && note.is_a?(DiffNote) }
2020-03-13 15:44:24 +05:30
expose :position, if: ->(note, options) { note.is_a?(DiffNote) } do |note|
note.position.to_h
end
expose :resolvable?, as: :resolvable
expose :resolved?, as: :resolved, if: ->(note, options) { note.resolvable? }
expose :resolved_by, using: Entities::UserBasic, if: ->(note, options) { note.resolvable? }
2021-03-08 18:12:59 +05:30
expose :resolved_at, if: ->(note, options) { note.resolvable? }
2020-03-13 15:44:24 +05:30
2020-04-22 19:07:51 +05:30
expose :confidential?, as: :confidential
2022-08-27 11:52:29 +05:30
expose :confidential?, as: :internal
2020-04-22 19:07:51 +05:30
2020-03-13 15:44:24 +05:30
# Avoid N+1 queries as much as possible
expose(:noteable_iid) { |note| note.noteable.iid if NOTEABLE_TYPES_WITH_IID.include?(note.noteable_type) }
2020-04-22 19:07:51 +05:30
expose(:commands_changes) { |note| note.commands_changes || {} }
end
# To be returned if the note was command-only
class NoteCommands < Grape::Entity
expose(:commands_changes) { |note| note.commands_changes || {} }
expose(:summary) { |note| note.errors[:commands_only] }
2020-03-13 15:44:24 +05:30
end
end
end