diff options
author | Josh Frye <joshfng@gmail.com> | 2016-01-27 18:59:16 +0300 |
---|---|---|
committer | Josh Frye <joshfng@gmail.com> | 2016-01-28 21:04:42 +0300 |
commit | f9218898ece79275c585da3aeb932b7ede409776 (patch) | |
tree | 4c0256556ac7711adf86012ce1ea2db769a94b79 /app/services | |
parent | 88e16c3d19cbdf4452af713ecc07989dbd3c35f0 (diff) |
[WIP] Background process note logic for #3948
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/notes/create_service.rb | 19 | ||||
-rw-r--r-- | app/services/notes/post_process_service.rb | 30 |
2 files changed, 32 insertions, 17 deletions
diff --git a/app/services/notes/create_service.rb b/app/services/notes/create_service.rb index a8486e6a5a1..8d9661167b5 100644 --- a/app/services/notes/create_service.rb +++ b/app/services/notes/create_service.rb @@ -6,27 +6,12 @@ module Notes note.system = false if note.save - notification_service.new_note(note) - - # Skip system notes, like status changes and cross-references and awards - unless note.system || note.is_award - event_service.leave_note(note, note.author) - note.create_cross_references! - execute_hooks(note) - end + # Finish the harder work in the background + NewNoteWorker.perform_in(2.seconds, note.id, params) end note end - def hook_data(note) - Gitlab::NoteDataBuilder.build(note, current_user) - end - - def execute_hooks(note) - note_data = hook_data(note) - note.project.execute_hooks(note_data, :note_hooks) - note.project.execute_services(note_data, :note_hooks) - end end end diff --git a/app/services/notes/post_process_service.rb b/app/services/notes/post_process_service.rb new file mode 100644 index 00000000000..f37d3c50cdd --- /dev/null +++ b/app/services/notes/post_process_service.rb @@ -0,0 +1,30 @@ +module Notes + class PostProcessService + + attr_accessor :note + + def initialize(note) + @note = note + end + + def execute + # Skip system notes, like status changes and cross-references and awards + unless @note.system || @note.is_award + EventCreateService.new.leave_note(@note, @note.author) + @note.create_cross_references! + execute_note_hooks + end + end + + def hook_data + Gitlab::NoteDataBuilder.build(@note, @note.author) + end + + def execute_note_hooks + note_data = hook_data + @note.project.execute_hooks(note_data, :note_hooks) + @note.project.execute_services(note_data, :note_hooks) + end + + end +end |