diff options
| author | teddywing | 2017-12-18 11:46:19 +0100 |
|---|---|---|
| committer | GitHub | 2017-12-18 11:46:19 +0100 |
| commit | 6f6e60e920c6f16dc3ae580eb97d1abcdb54d2e5 (patch) | |
| tree | b2d5bcd698986ad4fc5d53c6589b4d7ffe0204d5 /app | |
| parent | 6e056466a625881c168f5c17c50a41b9952fe6de (diff) | |
| parent | 9700ceb1bbbcb1b209213947be7772cd947e70c6 (diff) | |
| download | chouette-core-6f6e60e920c6f16dc3ae580eb97d1abcdb54d2e5.tar.bz2 | |
Merge pull request #146 from af83/5283-refactor-referential-cloning-worker
#5283 - Simplifier ReferentialCloningWorker
Diffstat (limited to 'app')
| -rw-r--r-- | app/models/referential_cloning.rb | 21 | ||||
| -rw-r--r-- | app/workers/referential_cloning_worker.rb | 27 |
2 files changed, 18 insertions, 30 deletions
diff --git a/app/models/referential_cloning.rb b/app/models/referential_cloning.rb index 5bf283814..24117e6c8 100644 --- a/app/models/referential_cloning.rb +++ b/app/models/referential_cloning.rb @@ -2,14 +2,27 @@ class ReferentialCloning < ActiveRecord::Base include AASM belongs_to :source_referential, class_name: 'Referential' belongs_to :target_referential, class_name: 'Referential' - after_commit :perform_clone, :on => :create + after_commit :clone, on: :create - private - def perform_clone + def clone ReferentialCloningWorker.perform_async(id) - # ReferentialCloningWorker.new.perform(id) end + def clone! + run! + + AF83::SchemaCloner + .new(source_referential.slug, target_referential.slug) + .clone_schema + + successful! + rescue Exception => e + Rails.logger.error "Clone failed : #{e}" + failed! + end + + private + aasm column: :status do state :new, :initial => true state :pending diff --git a/app/workers/referential_cloning_worker.rb b/app/workers/referential_cloning_worker.rb index 6592160ec..e20148055 100644 --- a/app/workers/referential_cloning_worker.rb +++ b/app/workers/referential_cloning_worker.rb @@ -1,32 +1,7 @@ class ReferentialCloningWorker include Sidekiq::Worker - # Replace default apartment created schema with clone schema from source referential def perform(id) - ref_cloning = ReferentialCloning.find id - - source_schema = ref_cloning.source_referential.slug - target_schema = ref_cloning.target_referential.slug - - clone_schema ref_cloning, source_schema, target_schema - end - - private - - def clone_schema ref_cloning, source_schema, target_schema - ref_cloning.run! - - AF83::SchemaCloner - .new(source_schema, target_schema) - .clone_schema - - ref_cloning.successful! - rescue Exception => e - Rails.logger.error "ReferentialCloningWorker : #{e}" - ref_cloning.failed! - end - - def execute_sql sql - ActiveRecord::Base.connection.execute sql + ReferentialCloning.find(id).clone! end end |
