Commit c4b02642d2ca74f463e64dd591796aabe5c54af9

Authored by Dmitriy Zaporozhets
1 parent f8ea52c3

Replace milestone observer with services

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
app/controllers/projects/milestones_controller.rb
@@ -37,7 +37,7 @@ class Projects::MilestonesController &lt; Projects::ApplicationController @@ -37,7 +37,7 @@ class Projects::MilestonesController &lt; Projects::ApplicationController
37 end 37 end
38 38
39 def create 39 def create
40 - @milestone = @project.milestones.new(params[:milestone]) 40 + @milestone = Milestones::CreateService.new(project, current_user, params[:milestone]).execute
41 41
42 if @milestone.save 42 if @milestone.save
43 redirect_to project_milestone_path(@project, @milestone) 43 redirect_to project_milestone_path(@project, @milestone)
@@ -47,7 +47,7 @@ class Projects::MilestonesController &lt; Projects::ApplicationController @@ -47,7 +47,7 @@ class Projects::MilestonesController &lt; Projects::ApplicationController
47 end 47 end
48 48
49 def update 49 def update
50 - @milestone.update_attributes(params[:milestone]) 50 + @milestone = Milestones::UpdateService.new(project, current_user, params[:milestone]).execute(milestone)
51 51
52 respond_to do |format| 52 respond_to do |format|
53 format.js 53 format.js
app/observers/milestone_observer.rb
@@ -1,13 +0,0 @@ @@ -1,13 +0,0 @@
1 -class MilestoneObserver < BaseObserver  
2 - def after_create(milestone)  
3 - event_service.open_milestone(milestone, current_user)  
4 - end  
5 -  
6 - def after_close(milestone, transition)  
7 - event_service.close_milestone(milestone, current_user)  
8 - end  
9 -  
10 - def after_reopen(milestone, transition)  
11 - event_service.reopen_milestone(milestone, current_user)  
12 - end  
13 -end  
app/services/milestones/base_service.rb 0 → 100644
@@ -0,0 +1,4 @@ @@ -0,0 +1,4 @@
  1 +module Milestones
  2 + class BaseService < ::BaseService
  3 + end
  4 +end
app/services/milestones/close_service.rb 0 → 100644
@@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
  1 +module Milestones
  2 + class CloseService < Milestones::BaseService
  3 + def execute(milestone)
  4 + if milestone.close
  5 + event_service.close_milestone(milestone, current_user)
  6 + end
  7 +
  8 + milestone
  9 + end
  10 + end
  11 +end
app/services/milestones/create_service.rb 0 → 100644
@@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
  1 +module Milestones
  2 + class CreateService < Milestones::BaseService
  3 + def execute
  4 + milestone = project.milestones.new(params)
  5 +
  6 + if milestone.save
  7 + event_service.open_milestone(milestone, current_user)
  8 + end
  9 +
  10 + milestone
  11 + end
  12 + end
  13 +end
app/services/milestones/reopen_service.rb 0 → 100644
@@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
  1 +module Milestones
  2 + class ReopenService < Milestones::BaseService
  3 + def execute(milestone)
  4 + if milestone.reopen
  5 + event_service.reopen_milestone(milestone, current_user)
  6 + end
  7 +
  8 + milestone
  9 + end
  10 + end
  11 +end
app/services/milestones/update_service.rb 0 → 100644
@@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
  1 +module Milestones
  2 + class UpdateService < Milestones::BaseService
  3 + def execute(milestone)
  4 + state = params.delete('state_event')
  5 +
  6 + case state
  7 + when 'reopen'
  8 + Milestones::ReopenService.new(project, current_user, {}).execute(milestone)
  9 + when 'close'
  10 + Milestones::CloseService.new(project, current_user, {}).execute(milestone)
  11 + end
  12 +
  13 + if params.present?
  14 + milestone.update_attributes(params)
  15 + end
  16 +
  17 + milestone
  18 + end
  19 + end
  20 +end
config/application.rb
@@ -19,8 +19,7 @@ module Gitlab @@ -19,8 +19,7 @@ module Gitlab
19 # config.plugins = [ :exception_notification, :ssl_requirement, :all ] 19 # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
20 20
21 # Activate observers that should always be running. 21 # Activate observers that should always be running.
22 - config.active_record.observers = :milestone_observer,  
23 - :project_activity_cache_observer, 22 + config.active_record.observers = :project_activity_cache_observer,
24 :note_observer, 23 :note_observer,
25 :project_observer, 24 :project_observer,
26 :system_hook_observer, 25 :system_hook_observer,
lib/api/milestones.rb
@@ -40,17 +40,15 @@ module API @@ -40,17 +40,15 @@ module API
40 # Example Request: 40 # Example Request:
41 # POST /projects/:id/milestones 41 # POST /projects/:id/milestones
42 post ":id/milestones" do 42 post ":id/milestones" do
43 - set_current_user_for_thread do  
44 - authorize! :admin_milestone, user_project  
45 - required_attributes! [:title] 43 + authorize! :admin_milestone, user_project
  44 + required_attributes! [:title]
  45 + attrs = attributes_for_keys [:title, :description, :due_date]
  46 + milestone = ::Milestones::CreateService.new(user_project, current_user, attrs).execute
46 47
47 - attrs = attributes_for_keys [:title, :description, :due_date]  
48 - @milestone = user_project.milestones.new attrs  
49 - if @milestone.save  
50 - present @milestone, with: Entities::Milestone  
51 - else  
52 - not_found!  
53 - end 48 + if milestone.valid?
  49 + present milestone, with: Entities::Milestone
  50 + else
  51 + not_found!
54 end 52 end
55 end 53 end
56 54
@@ -66,16 +64,15 @@ module API @@ -66,16 +64,15 @@ module API
66 # Example Request: 64 # Example Request:
67 # PUT /projects/:id/milestones/:milestone_id 65 # PUT /projects/:id/milestones/:milestone_id
68 put ":id/milestones/:milestone_id" do 66 put ":id/milestones/:milestone_id" do
69 - set_current_user_for_thread do  
70 - authorize! :admin_milestone, user_project 67 + authorize! :admin_milestone, user_project
  68 + attrs = attributes_for_keys [:title, :description, :due_date, :state_event]
  69 + milestone = user_project.milestones.find(params[:milestone_id])
  70 + milestone = ::Milestones::UpdateService.new(user_project, current_user, attrs).execute(milestone)
71 71
72 - @milestone = user_project.milestones.find(params[:milestone_id])  
73 - attrs = attributes_for_keys [:title, :description, :due_date, :state_event]  
74 - if @milestone.update_attributes attrs  
75 - present @milestone, with: Entities::Milestone  
76 - else  
77 - not_found!  
78 - end 72 + if milestone.valid?
  73 + present milestone, with: Entities::Milestone
  74 + else
  75 + not_found!
79 end 76 end
80 end 77 end
81 end 78 end