/
db.rb
50 lines (39 loc) · 1.31 KB
/
db.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
require 'sequel'
require 'pact_broker/db/validate_encoding'
require 'pact_broker/db/migrate'
require 'pact_broker/db/migrate_data'
require 'pact_broker/db/version'
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.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