diff options
| author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-02-24 09:09:47 +0000 |
|---|---|---|
| committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-02-24 09:09:47 +0000 |
| commit | b0d6a7fbff3f97a4b2b56b672902a21e0fc29195 (patch) | |
| tree | 01ea5944b79765c1dd7dae3823e2072a8bc5482b /app/graphql/mutations | |
| parent | e3dc4fc8f5df44ccd33739908bd4df2494cc27cc (diff) | |
| download | gitlab-ce-b0d6a7fbff3f97a4b2b56b672902a21e0fc29195.tar.gz | |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/graphql/mutations')
| -rw-r--r-- | app/graphql/mutations/achievements/award.rb | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/app/graphql/mutations/achievements/award.rb b/app/graphql/mutations/achievements/award.rb new file mode 100644 index 00000000000..b486049594d --- /dev/null +++ b/app/graphql/mutations/achievements/award.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +module Mutations + module Achievements + class Award < BaseMutation + graphql_name 'AchievementsAward' + + include Gitlab::Graphql::Authorize::AuthorizeResource + + field :user_achievement, + ::Types::Achievements::UserAchievementType, + null: true, + description: 'Achievement award.' + + argument :achievement_id, ::Types::GlobalIDType[::Achievements::Achievement], + required: true, + description: 'Global ID of the achievement being awarded.' + + argument :user_id, ::Types::GlobalIDType[::User], + required: true, + description: 'Global ID of the user being awarded the achievement.' + + authorize :award_achievement + + def resolve(args) + achievement = authorized_find!(id: args[:achievement_id]) + + recipient_id = args[:user_id].model_id + result = ::Achievements::AwardService.new(current_user, achievement.id, recipient_id).execute + { user_achievement: result.payload, errors: result.errors } + end + + def find_object(id:) + GitlabSchema.object_from_id(id, expected_type: ::Achievements::Achievement) + end + end + end +end |
