Sha256: 6b3f9adb5aea59cc2433840a4f4bdc3586d7d4cb2d291142a2f4cc520de29ef5

Contents?: true

Size: 1.12 KB

Versions: 48

Compression:

Stored size: 1.12 KB

Contents

require "pact_broker/db/data_migrations/helpers"

module PactBroker
  module DB
    module DataMigrations
      class SetLatestVersionSequenceValue
        def self.call connection
          if columns_exist?(connection)
            max_order = connection[:versions].max(:order) || 0
            sequence_row = connection[:version_sequence_number].first
            if sequence_row.nil? || sequence_row[:value] <= max_order
              new_value = max_order + 100
              connection[:version_sequence_number].insert(value: new_value)
              # Make sure there is only ever one row in case there is a race condition
              connection[:version_sequence_number].exclude(value: new_value).delete
            end
          end
        end

        def self.columns_exist?(connection)
          column_exists?(connection, :versions, :order) &&
            column_exists?(connection, :version_sequence_number, :value)
        end

        def self.column_exists?(connection, table, column)
          connection.table_exists?(table) && connection.schema(table).find{|col| col.first == column }
        end
      end
    end
  end
end

Version data entries

48 entries across 48 versions & 1 rubygems

Version Path
pact_broker-2.114.0 lib/pact_broker/db/data_migrations/set_latest_version_sequence_value.rb
pact_broker-2.113.2 lib/pact_broker/db/data_migrations/set_latest_version_sequence_value.rb
pact_broker-2.113.1 lib/pact_broker/db/data_migrations/set_latest_version_sequence_value.rb
pact_broker-2.113.0 lib/pact_broker/db/data_migrations/set_latest_version_sequence_value.rb
pact_broker-2.112.0 lib/pact_broker/db/data_migrations/set_latest_version_sequence_value.rb
pact_broker-2.111.0 lib/pact_broker/db/data_migrations/set_latest_version_sequence_value.rb
pact_broker-2.109.1 lib/pact_broker/db/data_migrations/set_latest_version_sequence_value.rb
pact_broker-2.109.0 lib/pact_broker/db/data_migrations/set_latest_version_sequence_value.rb
pact_broker-2.108.0 lib/pact_broker/db/data_migrations/set_latest_version_sequence_value.rb
pact_broker-2.107.1 lib/pact_broker/db/data_migrations/set_latest_version_sequence_value.rb
pact_broker-2.107.0 lib/pact_broker/db/data_migrations/set_latest_version_sequence_value.rb
pact_broker-2.107.0.beta.1 lib/pact_broker/db/data_migrations/set_latest_version_sequence_value.rb
pact_broker-2.106.0 lib/pact_broker/db/data_migrations/set_latest_version_sequence_value.rb
pact_broker-2.105.0 lib/pact_broker/db/data_migrations/set_latest_version_sequence_value.rb
pact_broker-2.104.0 lib/pact_broker/db/data_migrations/set_latest_version_sequence_value.rb
pact_broker-2.103.0 lib/pact_broker/db/data_migrations/set_latest_version_sequence_value.rb
pact_broker-2.102.2 lib/pact_broker/db/data_migrations/set_latest_version_sequence_value.rb
pact_broker-2.102.1 lib/pact_broker/db/data_migrations/set_latest_version_sequence_value.rb
pact_broker-2.102.0 lib/pact_broker/db/data_migrations/set_latest_version_sequence_value.rb
pact_broker-2.101.0 lib/pact_broker/db/data_migrations/set_latest_version_sequence_value.rb