aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorAlban Peignier2017-12-12 21:24:24 +0100
committerAlban Peignier2017-12-12 21:26:57 +0100
commitddf3e6c70b5523227c5fbabdf981e301fbf14e5d (patch)
treec246b1afb015267adac51ecf44ffae19075294e7 /app
parent4b341d795100a8a5417e4d822ae2afb3ed70da8a (diff)
downloadchouette-core-ddf3e6c70b5523227c5fbabdf981e301fbf14e5d.tar.bz2
Move logic to ReferentialCloning. Improve specs. Refs #5283
Diffstat (limited to 'app')
-rw-r--r--app/models/referential_cloning.rb21
-rw-r--r--app/workers/referential_cloning_worker.rb29
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