Module: JunglePath::DBAccess::IO

Defined in:
lib/jungle_path/db_access/io.rb,
lib/jungle_path/db_access/io/db.rb,
lib/jungle_path/db_access/io/copy.rb,
lib/jungle_path/db_access/io/config.rb,
lib/jungle_path/db_access/io/delete.rb,
lib/jungle_path/db_access/io/insert.rb,
lib/jungle_path/db_access/io/schema.rb,
lib/jungle_path/db_access/io/select.rb,
lib/jungle_path/db_access/io/update.rb,
lib/jungle_path/db_access/io/init_db.rb,
lib/jungle_path/db_access/io/chunked_file_reader.rb

Defined Under Namespace

Modules: InitDB Classes: ChunkedFileReader, Config, Copy, DB, Delete, Insert, Schema, Select, Update

Class Method Summary collapse

Class Method Details

.clone_config(config) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/jungle_path/db_access/io.rb', line 66

def self.clone_config(config)
  JunglePath::DBAccess::IO::Config.new(
    name: config.name,
    type: config.type,
    user_name: config.user_name,
    password: config.password,
    host: config.host,
    extensions: config.extensions,
    port: config.port,
    options: config.options
  )
end

.connection(database_type:, user_name:, database_name:, host: "localhost", extensions: [], password: nil, port: nil, options: nil) ⇒ Object



79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/jungle_path/db_access/io.rb', line 79

def self.connection(database_type:, user_name:, database_name:, host: "localhost", extensions: [], password: nil, port: nil, options: nil)
  Sequel.default_timezone = :utc
  colon_port = ":#{port}" if port
  options = {} unless options
  if password
    puts "Using db connection with explicit password!"
    connection_string = "#{database_type}://#{user_name}:#{password}@#{host}#{colon_port}/#{database_name}"
    puts "connection_string: #{connection_string}."
    db = Sequel.connect(connection_string, options)
    puts "connected."
  else
    puts "no explicit pw."
    connection_string = "#{database_type}://#{user_name}@#{host}#{colon_port}/#{database_name}"
    puts "connection_string: #{connection_string}."
    db = Sequel.connect(connection_string, options)
    puts "connected."
  end
  extensions.each do |extension|
    puts "Adding Sequel extension: #{extension}."
    db.extension extension
  end
  db
end

.connection_from_config(config) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/jungle_path/db_access/io.rb', line 17

def self.connection_from_config(config)
  connection(
    database_type: config.type,
    user_name: config.user_name,
    database_name: config.name,
    host: config.host,
    extensions: config.extensions,
    password: config.password,
    port: config.port,
    options: config.options
  )
end

.connection_from_config_unknown_database(config) ⇒ Object



30
31
32
33
34
35
36
37
38
# File 'lib/jungle_path/db_access/io.rb', line 30

def self.connection_from_config_unknown_database(config)
  if config.type == 'postgres'
    connection_from_config_use_postgres_db(config)
  elsif config.type == 'tinytds'
    connection_from_config_use_ms_sql_server_db(config)
  else
    throw "Unknown database type: #{config.type}."
  end
end

.connection_from_config_use_ms_sql_server_db(config) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/jungle_path/db_access/io.rb', line 40

def self.connection_from_config_use_ms_sql_server_db(config)
  db = connection(
    database_type: config.type,
    user_name: config.user_name,
    database_name: 'master',
    host: config.host,
    extensions: config.extensions,
    password: config.password,
    port: config.port,
    options: config.options
  )
end

.connection_from_config_use_postgres_db(config) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/jungle_path/db_access/io.rb', line 53

def self.connection_from_config_use_postgres_db(config)
  db = connection(
    database_type: config.type,
    user_name: config.user_name,
    database_name: 'postgres',
    host: config.host,
    extensions: config.extensions,
    password: config.password,
    port: config.port,
    options: config.options
  )
end