Sha256: 9a21c30eeb9e7f0bb9cb07b2ad69b165d1d31f2ac7cd4e8b688f849e1e36fe36

Contents?: true

Size: 1.08 KB

Versions: 35

Compression:

Stored size: 1.08 KB

Contents

require 'pact_broker/project_root'
require 'sequel'
require 'db'

Sequel.extension :migration

module PactBroker
  module Database

    extend self

    def migrate target = nil
      opts = target ? {target: target} : {}
      Sequel::Migrator.run(database, migrations_dir, opts)
    end

    def version
      if database.tables.include?(:schema_info)
        database[:schema_info].first[:version]
      else
        0
      end
    end

    def delete_database_file
      ensure_not_production
      FileUtils.rm_rf database_file_path
    end

    def ensure_database_dir_exists
      ensure_not_production
      FileUtils.mkdir_p File.dirname(database_file_path)
    end

    private

    def ensure_not_production
      raise "Cannot delete production database using this task" if env == 'production'
    end

    def database
      ::DB.connection_for_env env
    end

    def migrations_dir
      PactBroker.project_root.join('db','migrations')
    end

    def database_file_path
      ::DB.configuration_for_env(env)['database']
    end

    def env
      ENV.fetch('RACK_ENV')
    end
  end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
pact_broker-1.18.0 tasks/database.rb
pact_broker-1.18.0.beta.1 tasks/database.rb
pact_broker-1.17.2 tasks/database.rb
pact_broker-1.17.1 tasks/database.rb
pact_broker-2.0.0.beta.1 tasks/database.rb
pact_broker-1.17.0 tasks/database.rb
pact_broker-1.16.0 tasks/database.rb
pact_broker-1.15.0 tasks/database.rb
pact_broker-1.14.0 tasks/database.rb
pact_broker-1.13.0 tasks/database.rb
pact_broker-1.12.0 tasks/database.rb
pact_broker-1.11.2 tasks/database.rb
pact_broker-1.11.1 tasks/database.rb
pact_broker-1.11.0 tasks/database.rb
pact_broker-1.10.0 tasks/database.rb
pact_broker-1.9.3 tasks/database.rb
pact_broker-1.9.2 tasks/database.rb
pact_broker-1.9.1 tasks/database.rb
pact_broker-1.9.0 tasks/database.rb
pact_broker-1.9.0.rc1 tasks/database.rb