diff options
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 | 
