diff options
Diffstat (limited to 'app/graphql/mutations/notes')
-rw-r--r-- | app/graphql/mutations/notes/base.rb | 19 | ||||
-rw-r--r-- | app/graphql/mutations/notes/create/base.rb | 11 | ||||
-rw-r--r-- | app/graphql/mutations/notes/create/note.rb | 8 | ||||
-rw-r--r-- | app/graphql/mutations/notes/destroy.rb | 8 | ||||
-rw-r--r-- | app/graphql/mutations/notes/update/base.rb | 2 | ||||
-rw-r--r-- | app/graphql/mutations/notes/update/image_diff_note.rb | 4 | ||||
-rw-r--r-- | app/graphql/mutations/notes/update/note.rb | 4 |
7 files changed, 26 insertions, 30 deletions
diff --git a/app/graphql/mutations/notes/base.rb b/app/graphql/mutations/notes/base.rb index 31dabc0a660..f2678211335 100644 --- a/app/graphql/mutations/notes/base.rb +++ b/app/graphql/mutations/notes/base.rb @@ -11,21 +11,10 @@ module Mutations private def find_object(id:) - GitlabSchema.object_from_id(id) - end - - def check_object_is_noteable!(object) - unless object.is_a?(Noteable) - raise Gitlab::Graphql::Errors::ResourceNotAvailable, - 'Cannot add notes to this resource' - end - end - - def check_object_is_note!(object) - unless object.is_a?(Note) - raise Gitlab::Graphql::Errors::ResourceNotAvailable, - 'Resource is not a note' - end + # TODO: remove explicit coercion once compatibility layer has been removed + # See: https://gitlab.com/gitlab-org/gitlab/-/issues/257883 + id = ::Types::GlobalIDType[::Note].coerce_isolated_input(id) + GitlabSchema.find_by_gid(id) end end end diff --git a/app/graphql/mutations/notes/create/base.rb b/app/graphql/mutations/notes/create/base.rb index f081eac368e..3cfdaf84760 100644 --- a/app/graphql/mutations/notes/create/base.rb +++ b/app/graphql/mutations/notes/create/base.rb @@ -9,7 +9,7 @@ module Mutations authorize :create_note argument :noteable_id, - GraphQL::ID_TYPE, + ::Types::GlobalIDType[::Noteable], required: true, description: 'The global id of the resource to add a note to' @@ -26,8 +26,6 @@ module Mutations def resolve(args) noteable = authorized_find!(id: args[:noteable_id]) - check_object_is_noteable!(noteable) - note = ::Notes::CreateService.new( noteable.project, current_user, @@ -42,6 +40,13 @@ module Mutations private + def find_object(id:) + # TODO: remove explicit coercion once compatibility layer has been removed + # See: https://gitlab.com/gitlab-org/gitlab/-/issues/257883 + id = ::Types::GlobalIDType[::Noteable].coerce_isolated_input(id) + GitlabSchema.find_by_gid(id) + end + def create_note_params(noteable, args) { noteable: noteable, diff --git a/app/graphql/mutations/notes/create/note.rb b/app/graphql/mutations/notes/create/note.rb index 5236e48026e..e97037171f7 100644 --- a/app/graphql/mutations/notes/create/note.rb +++ b/app/graphql/mutations/notes/create/note.rb @@ -7,7 +7,7 @@ module Mutations graphql_name 'CreateNote' argument :discussion_id, - GraphQL::ID_TYPE, + ::Types::GlobalIDType[::Discussion], required: false, description: 'The global id of the discussion this note is in reply to' @@ -17,7 +17,11 @@ module Mutations discussion_id = nil if args[:discussion_id] - discussion = GitlabSchema.object_from_id(args[:discussion_id]) + # TODO: remove this line when the compatibility layer is removed + # See: https://gitlab.com/gitlab-org/gitlab/-/issues/257883 + discussion_gid = ::Types::GlobalIDType[::Discussion].coerce_isolated_input(args[:discussion_id]) + discussion = GitlabSchema.find_by_gid(discussion_gid) + authorize_discussion!(discussion) discussion_id = discussion.id diff --git a/app/graphql/mutations/notes/destroy.rb b/app/graphql/mutations/notes/destroy.rb index a81322bc9b7..63e5eeb5ecf 100644 --- a/app/graphql/mutations/notes/destroy.rb +++ b/app/graphql/mutations/notes/destroy.rb @@ -8,15 +8,13 @@ module Mutations authorize :admin_note argument :id, - GraphQL::ID_TYPE, - required: true, - description: 'The global id of the note to destroy' + ::Types::GlobalIDType[::Note], + required: true, + description: 'The global id of the note to destroy' def resolve(id:) note = authorized_find!(id: id) - check_object_is_note!(note) - ::Notes::DestroyService.new(note.project, current_user).execute(note) { diff --git a/app/graphql/mutations/notes/update/base.rb b/app/graphql/mutations/notes/update/base.rb index 8a2a78a29ec..1d5738ada77 100644 --- a/app/graphql/mutations/notes/update/base.rb +++ b/app/graphql/mutations/notes/update/base.rb @@ -9,7 +9,7 @@ module Mutations authorize :admin_note argument :id, - GraphQL::ID_TYPE, + ::Types::GlobalIDType[::Note], required: true, description: 'The global id of the note to update' diff --git a/app/graphql/mutations/notes/update/image_diff_note.rb b/app/graphql/mutations/notes/update/image_diff_note.rb index 7aad3af1e04..ef70a8d2bf4 100644 --- a/app/graphql/mutations/notes/update/image_diff_note.rb +++ b/app/graphql/mutations/notes/update/image_diff_note.rb @@ -28,12 +28,12 @@ module Mutations 'body or position arguments are required' end - super(args) + super(**args) end private - def pre_update_checks!(note, args) + def pre_update_checks!(note, _args) unless note.is_a?(DiffNote) && note.position.on_image? raise Gitlab::Graphql::Errors::ResourceNotAvailable, 'Resource is not an ImageDiffNote' diff --git a/app/graphql/mutations/notes/update/note.rb b/app/graphql/mutations/notes/update/note.rb index ca97dad6ded..73b9b9bc49a 100644 --- a/app/graphql/mutations/notes/update/note.rb +++ b/app/graphql/mutations/notes/update/note.rb @@ -18,8 +18,8 @@ module Mutations private - def pre_update_checks!(note, _args) - check_object_is_note!(note) + def pre_update_checks!(_note, _args) + # no-op end end end |