Sha256: fd0be9b2a287c82947a78d6898d9bca1de513ffca68b07024f49129edb09607b

Contents?: true

Size: 1.78 KB

Versions: 24

Compression:

Stored size: 1.78 KB

Contents

require 'sequel'
require 'pact_broker/db/validate_encoding'
require 'pact_broker/db/migrate'
require 'pact_broker/db/migrate_data'
require 'pact_broker/db/version'
require 'pact_broker/db/table_dependency_calculator'

Sequel.datetime_class = DateTime

module PactBroker
  module DB
    MIGRATIONS_DIR = File.expand_path("../../../db/migrations", __FILE__)

    def self.connection= connection
      @connection = connection
    end

    def self.connection
      @connection
    end

    def self.run_migrations database_connection, options = {}
      Sequel.extension :migration
      Sequel::TimestampMigrator.new(database_connection, PactBroker::DB::MIGRATIONS_DIR, options).run
    end

    def self.run_data_migrations database_connection
      PactBroker::DB::MigrateData.(database_connection)
    end

    def self.is_current? database_connection, options = {}
      Sequel::TimestampMigrator.is_current?(database_connection, PactBroker::DB::MIGRATIONS_DIR, options)
    end

    def self.truncate database_connection, options = {}
      exceptions = options[:except] || []
      TableDependencyCalculator.call(database_connection).each do | table_name |
        if !exceptions.include?(table_name)
          begin
            database_connection[table_name].truncate
          rescue StandardError => e
            puts "Could not truncate table #{table_name}"
          end
        end
      end
    end

    def self.version database_connection
      PactBroker::DB::Version.call(database_connection)
    end

    def self.validate_connection_config
      PactBroker::DB::ValidateEncoding.(connection)
    end

    def self.set_mysql_strict_mode_if_mysql
      connection.run("SET sql_mode='STRICT_TRANS_TABLES';") if mysql?
    end

    def self.mysql?
      connection.adapter_scheme =~ /mysql/
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
pact_broker-2.79.1 lib/pact_broker/db.rb
pact_broker-2.79.0 lib/pact_broker/db.rb
pact_broker-2.78.1 lib/pact_broker/db.rb
pact_broker-2.78.0 lib/pact_broker/db.rb
pact_broker-2.77.0 lib/pact_broker/db.rb
pact_broker-2.76.2 lib/pact_broker/db.rb
pact_broker-2.76.1 lib/pact_broker/db.rb
pact_broker-2.76.0 lib/pact_broker/db.rb
pact_broker-2.75.0 lib/pact_broker/db.rb
pact_broker-2.74.1 lib/pact_broker/db.rb
pact_broker-2.74.0 lib/pact_broker/db.rb
pact_broker-2.73.0 lib/pact_broker/db.rb
pact_broker-2.72.0 lib/pact_broker/db.rb
pact_broker-2.71.0 lib/pact_broker/db.rb
pact_broker-2.70.0 lib/pact_broker/db.rb
pact_broker-2.69.0 lib/pact_broker/db.rb
pact_broker-2.68.1 lib/pact_broker/db.rb
pact_broker-2.68.0 lib/pact_broker/db.rb
pact_broker-2.67.0 lib/pact_broker/db.rb
pact_broker-2.66.0 lib/pact_broker/db.rb