Class: Achievements::UpdateUserAchievementPrioritiesService
- Inherits:
-
Object
- Object
- Achievements::UpdateUserAchievementPrioritiesService
- Defined in:
- app/services/achievements/update_user_achievement_priorities_service.rb
Instance Attribute Summary collapse
-
#current_user ⇒ Object
readonly
Returns the value of attribute current_user.
-
#user_achievements ⇒ Object
readonly
Returns the value of attribute user_achievements.
Instance Method Summary collapse
- #execute ⇒ Object
-
#initialize(current_user, user_achievements) ⇒ UpdateUserAchievementPrioritiesService
constructor
A new instance of UpdateUserAchievementPrioritiesService.
Constructor Details
#initialize(current_user, user_achievements) ⇒ UpdateUserAchievementPrioritiesService
Returns a new instance of UpdateUserAchievementPrioritiesService.
7 8 9 10 |
# File 'app/services/achievements/update_user_achievement_priorities_service.rb', line 7 def initialize(current_user, user_achievements) @current_user = current_user @user_achievements = user_achievements end |
Instance Attribute Details
#current_user ⇒ Object (readonly)
Returns the value of attribute current_user.
5 6 7 |
# File 'app/services/achievements/update_user_achievement_priorities_service.rb', line 5 def current_user @current_user end |
#user_achievements ⇒ Object (readonly)
Returns the value of attribute user_achievements.
5 6 7 |
# File 'app/services/achievements/update_user_achievement_priorities_service.rb', line 5 def user_achievements @user_achievements end |
Instance Method Details
#execute ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'app/services/achievements/update_user_achievement_priorities_service.rb', line 12 def execute return unless allowed? prioritized_user_achievements_map = Hash[user_achievements.map.with_index { |ua, idx| [ua.id, idx] }] user_achievements_priorities_mapping = current_user.user_achievements.each_with_object({}) do |ua, result| next if ua.priority.nil? && !prioritized_user_achievements_map.key?(ua.id) result[ua] = { priority: prioritized_user_achievements_map.fetch(ua.id, nil) } end return ServiceResponse.success(payload: []) if user_achievements_priorities_mapping.empty? ::Gitlab::Database::BulkUpdate.execute(%i[priority], user_achievements_priorities_mapping) ServiceResponse.success(payload: user_achievements_priorities_mapping.keys.map(&:reload)) end |