diff options
| author | Alban Peignier | 2017-12-12 21:24:24 +0100 |
|---|---|---|
| committer | Alban Peignier | 2017-12-12 21:26:57 +0100 |
| commit | ddf3e6c70b5523227c5fbabdf981e301fbf14e5d (patch) | |
| tree | c246b1afb015267adac51ecf44ffae19075294e7 /app | |
| parent | 4b341d795100a8a5417e4d822ae2afb3ed70da8a (diff) | |
| download | chouette-core-ddf3e6c70b5523227c5fbabdf981e301fbf14e5d.tar.bz2 | |
Move logic to ReferentialCloning. Improve specs. Refs #5283
Diffstat (limited to 'app')
| -rw-r--r-- | app/models/referential_cloning.rb | 21 | ||||
| -rw-r--r-- | app/workers/referential_cloning_worker.rb | 29 |
2 files changed, 20 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..60dc1a4bc 100644 --- a/app/workers/referential_cloning_worker.rb +++ b/app/workers/referential_cloning_worker.rb @@ -1,32 +1,9 @@ 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 + if operation = ReferentialCloning.find(id) + operation.clone! + end end end |
