class PactBroker::DB::DataMigrations::MigratePactVersionProviderTagSuccessfulVerifications

Public Class Methods

call(connection) click to toggle source
# File lib/pact_broker/db/data_migrations/migrate_pact_version_provider_tag_successful_verifications.rb, line 9
def self.call(connection)
  successful_verifications_join = {
    Sequel[:sv][:pact_version_id] => Sequel[:verifications][:pact_version_id],
    Sequel[:sv][:provider_version_tag_name] => Sequel[:tags][:name],
    Sequel[:sv][:wip] => Sequel[:verifications][:wip]
  }

  missing_verifications = connection
                            .select(
                              Sequel[:verifications][:pact_version_id],
                              Sequel[:tags][:name],
                              Sequel[:verifications][:wip],
                              Sequel[:verifications][:id],
                              Sequel[:verifications][:execution_date]
                            )
                            .order(Sequel[:verifications][:execution_date], Sequel[:verifications][:id])
                            .from(:verifications)
                            .join(:tags, { Sequel[:verifications][:provider_version_id] => Sequel[:tags][:version_id] })
                            .left_outer_join(:pact_version_provider_tag_successful_verifications, successful_verifications_join, { table_alias: :sv })
                            .where(Sequel[:sv][:pact_version_id] => nil)
                            .where(Sequel[:verifications][:success] => true)

  connection[:pact_version_provider_tag_successful_verifications]
    .insert_ignore
    .insert([:pact_version_id, :provider_version_tag_name, :wip, :verification_id, :execution_date], missing_verifications)
end