Class: Proxy::ContainerGateway::Database

Inherits:
Object
  • Object
show all
Defined in:
lib/smart_proxy_container_gateway/database.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Database

Returns a new instance of Database.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/smart_proxy_container_gateway/database.rb', line 7

def initialize(options = {})
  if options[:database_backend] == 'sqlite'
    @connection = Sequel.connect("sqlite://#{options[:sqlite_db_path]}", timeout: options[:sqlite_timeout])
    @connection.run("PRAGMA foreign_keys = ON;")
    @connection.run("PRAGMA journal_mode = wal;")
  else
    unless options[:postgresql_connection_string]
      raise ArgumentError, 'PostgreSQL connection string is required'
    end

    @connection = Sequel.connect(options[:postgresql_connection_string])
    if File.exist?(options[:sqlite_db_path]) &&
       (!@connection.table_exists?(:repositories) || @connection[:repositories].count.zero?)
      migrate_to_postgres(Sequel.sqlite(options[:sqlite_db_path]), @connection)
      File.delete(options[:sqlite_db_path])
    end
  end
  migrate
end

Instance Attribute Details

#connectionObject (readonly)

Returns the value of attribute connection.



5
6
7
# File 'lib/smart_proxy_container_gateway/database.rb', line 5

def connection
  @connection
end