summaryrefslogtreecommitdiff
path: root/app/graphql/resolvers/notes/synthetic_note_resolver.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/graphql/resolvers/notes/synthetic_note_resolver.rb')
-rw-r--r--app/graphql/resolvers/notes/synthetic_note_resolver.rb35
1 files changed, 35 insertions, 0 deletions
diff --git a/app/graphql/resolvers/notes/synthetic_note_resolver.rb b/app/graphql/resolvers/notes/synthetic_note_resolver.rb
new file mode 100644
index 00000000000..d4eafcd2c49
--- /dev/null
+++ b/app/graphql/resolvers/notes/synthetic_note_resolver.rb
@@ -0,0 +1,35 @@
+# frozen_string_literal: true
+
+module Resolvers
+ module Notes
+ class SyntheticNoteResolver < BaseResolver
+ include Gitlab::Graphql::Authorize::AuthorizeResource
+
+ authorize :read_note
+
+ type Types::Notes::NoteType, null: true
+
+ argument :sha, GraphQL::Types::String,
+ required: true,
+ description: 'Global ID of the note.'
+
+ argument :noteable_id, ::Types::GlobalIDType[::Noteable],
+ required: true,
+ description: 'Global ID of the resource to search synthetic note on.'
+
+ def resolve(noteable_id:, sha:)
+ noteable = authorized_find!(id: noteable_id)
+
+ synthetic_notes = ResourceEvents::MergeIntoNotesService.new(
+ noteable, current_user, paginated_notes: nil
+ ).execute
+
+ synthetic_notes.find { |note| note.discussion_id == sha }
+ end
+
+ def find_object(id:)
+ GitlabSchema.find_by_gid(id)
+ end
+ end
+ end
+end