Class: Dataflow::Adapters::Settings

Inherits:
Object
  • Object
show all
Defined in:
lib/dataflow/adapters/settings.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data_node: nil, connection_uri: nil, db_name: nil, db_host: nil, db_port: nil, db_user: nil, db_password: nil, dataset_name: nil, indexes: nil, adapter_type: nil, schema: nil) ⇒ Settings

Returns a new instance of Settings.



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
# File 'lib/dataflow/adapters/settings.rb', line 10

def initialize(data_node: nil, connection_uri: nil, db_name: nil,
               db_host: nil, db_port: nil, db_user: nil, db_password: nil,
               dataset_name: nil, indexes: nil, adapter_type: nil, schema: nil)
  @connection_uri = connection_uri

  # first try to set the options based on the data node settings
  if data_node.present?
    @db_name            = data_node.db_name
    @db_host            = data_node.db_host
    @db_port            = data_node.db_port
    @db_user            = data_node.db_user
    @db_password        = data_node.db_password
    @dataset_name       = data_node.name
    @read_dataset_name  = data_node.read_dataset_name
    @write_dataset_name = data_node.write_dataset_name
    @indexes            = data_node.indexes
    @schema             = data_node.schema
  end

  # override if needed
  @db_name            ||= db_name
  @db_host            ||= db_host
  @db_port            ||= db_port
  @db_user            ||= db_user
  @db_password        ||= db_password
  @dataset_name       ||= dataset_name
  @read_dataset_name  ||= dataset_name
  @write_dataset_name ||= dataset_name
  @indexes            ||= indexes
  @adapter_type       ||= adapter_type
  @schema             ||= schema
end

Instance Attribute Details

#adapter_typeObject

Returns the value of attribute adapter_type.



5
6
7
# File 'lib/dataflow/adapters/settings.rb', line 5

def adapter_type
  @adapter_type
end

#connection_uriObject

Returns the value of attribute connection_uri.



5
6
7
# File 'lib/dataflow/adapters/settings.rb', line 5

def connection_uri
  @connection_uri
end

#dataset_nameObject

Returns the value of attribute dataset_name.



5
6
7
# File 'lib/dataflow/adapters/settings.rb', line 5

def dataset_name
  @dataset_name
end

#db_hostObject

Returns the value of attribute db_host.



5
6
7
# File 'lib/dataflow/adapters/settings.rb', line 5

def db_host
  @db_host
end

#db_nameObject

Returns the value of attribute db_name.



5
6
7
# File 'lib/dataflow/adapters/settings.rb', line 5

def db_name
  @db_name
end

#db_passwordObject

Returns the value of attribute db_password.



5
6
7
# File 'lib/dataflow/adapters/settings.rb', line 5

def db_password
  @db_password
end

#db_portObject

Returns the value of attribute db_port.



5
6
7
# File 'lib/dataflow/adapters/settings.rb', line 5

def db_port
  @db_port
end

#db_userObject

Returns the value of attribute db_user.



5
6
7
# File 'lib/dataflow/adapters/settings.rb', line 5

def db_user
  @db_user
end

#indexesObject

Returns the value of attribute indexes.



5
6
7
# File 'lib/dataflow/adapters/settings.rb', line 5

def indexes
  @indexes
end

#read_dataset_nameObject

Returns the value of attribute read_dataset_name.



5
6
7
# File 'lib/dataflow/adapters/settings.rb', line 5

def read_dataset_name
  @read_dataset_name
end

#schemaObject

Returns the value of attribute schema.



5
6
7
# File 'lib/dataflow/adapters/settings.rb', line 5

def schema
  @schema
end

#write_dataset_nameObject

Returns the value of attribute write_dataset_name.



5
6
7
# File 'lib/dataflow/adapters/settings.rb', line 5

def write_dataset_name
  @write_dataset_name
end

Instance Method Details

#connection_uri_or_defaultObject



64
65
66
67
68
# File 'lib/dataflow/adapters/settings.rb', line 64

def connection_uri_or_default
  return @connection_uri if @connection_uri.present?

  send("#{@adapter_type}_default_connection_uri")
end

#mongodb_default_connection_uriObject



70
71
72
73
74
75
76
77
78
79
80
# File 'lib/dataflow/adapters/settings.rb', line 70

def mongodb_default_connection_uri
  set_mongodb_defaults_if_needed!

  # if user/password are empty, the user_password will be empty as well
  user_password = @db_user
  user_password += ":#{@db_password}" if @db_password.present?
  user_password += '@' if user_password.present?

  # [username:password@]host1[:port1]
  "#{user_password}#{@db_host}:#{@db_port}"
end

#mysql_default_connection_uriObject



82
83
84
85
# File 'lib/dataflow/adapters/settings.rb', line 82

def mysql_default_connection_uri
  set_mysql_defaults_if_needed!
  sql_default_connection_uri('mysql2')
end

#postgresql_default_connection_uriObject



87
88
89
90
# File 'lib/dataflow/adapters/settings.rb', line 87

def postgresql_default_connection_uri
  set_postgresql_defaults_if_needed!
  sql_default_connection_uri('postgresql')
end

#set_mongodb_defaults_if_needed!Object



43
44
45
46
47
48
# File 'lib/dataflow/adapters/settings.rb', line 43

def set_mongodb_defaults_if_needed!
  @db_host ||= ENV['MOJACO_MONGO_ADDRESS'] || '127.0.0.1'
  @db_port ||= ENV['MOJACO_MONGO_PORT'] || '27017'
  @db_user ||= ENV['MOJACO_MONGO_USER']
  @db_password ||= ENV['MOJACO_MONGO_USER']
end

#set_mysql_defaults_if_needed!Object



57
58
59
60
61
62
# File 'lib/dataflow/adapters/settings.rb', line 57

def set_mysql_defaults_if_needed!
  @db_host ||= ENV['MOJACO_MYSQL_ADDRESS'] || '127.0.0.1'
  @db_port ||= ENV['MOJACO_MYSQL_PORT'] || '3306'
  @db_user ||= ENV['MOJACO_MYSQL_USER']
  @db_password ||= ENV['MOJACO_MYSQL_PASSWORD']
end

#set_postgresql_defaults_if_needed!Object



50
51
52
53
54
55
# File 'lib/dataflow/adapters/settings.rb', line 50

def set_postgresql_defaults_if_needed!
  @db_host ||= ENV['MOJACO_POSTGRESQL_ADDRESS'] || '127.0.0.1'
  @db_port ||= ENV['MOJACO_POSTGRESQL_PORT'] || '5432'
  @db_user ||= ENV['MOJACO_POSTGRESQL_USER']
  @db_password ||= ENV['MOJACO_POSTGRESQL_PASSWORD']
end

#sql_default_connection_uri(scheme) ⇒ Object



92
93
94
95
96
97
# File 'lib/dataflow/adapters/settings.rb', line 92

def sql_default_connection_uri(scheme)
  user_password = @db_user
  user_password += ":#{@db_password}" if @db_password.present?

  "#{scheme}://#{user_password}@#{@db_host}:#{@db_port}"
end