Class: DataConduit::Adapters::TrinoRepository

Inherits:
Object
  • Object
show all
Includes:
DataWarehouseRepository
Defined in:
lib/data_conduit/adapters/trino_repository.rb

Constant Summary

Constants included from DataWarehouseRepository

DataWarehouseRepository::DEFAULT_TRANSFORM_OPTIONS

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from DataWarehouseRepository

included

Constructor Details

#initialize(table_name, conditions = nil, config = {}) ⇒ TrinoRepository

Returns a new instance of TrinoRepository.



15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/data_conduit/adapters/trino_repository.rb', line 15

def initialize(table_name, conditions = nil, config = {})
  @table_name = table_name
  @conditions = conditions
  @config = default_config.merge(config)
  @server = @config[:server]
  @user = @config[:user]
  @password = @config[:password]
  @catalog = @config[:catalog]
  @schema = @config[:schema]

  validate_config!
end

Instance Attribute Details

#catalogObject (readonly)

Returns the value of attribute catalog.



13
14
15
# File 'lib/data_conduit/adapters/trino_repository.rb', line 13

def catalog
  @catalog
end

#conditionsObject (readonly)

Returns the value of attribute conditions.



13
14
15
# File 'lib/data_conduit/adapters/trino_repository.rb', line 13

def conditions
  @conditions
end

#configObject (readonly)

Returns the value of attribute config.



13
14
15
# File 'lib/data_conduit/adapters/trino_repository.rb', line 13

def config
  @config
end

#passwordObject (readonly)

Returns the value of attribute password.



13
14
15
# File 'lib/data_conduit/adapters/trino_repository.rb', line 13

def password
  @password
end

#schemaObject (readonly)

Returns the value of attribute schema.



13
14
15
# File 'lib/data_conduit/adapters/trino_repository.rb', line 13

def schema
  @schema
end

#serverObject (readonly)

Returns the value of attribute server.



13
14
15
# File 'lib/data_conduit/adapters/trino_repository.rb', line 13

def server
  @server
end

#table_nameObject (readonly)

Returns the value of attribute table_name.



13
14
15
# File 'lib/data_conduit/adapters/trino_repository.rb', line 13

def table_name
  @table_name
end

#userObject (readonly)

Returns the value of attribute user.



13
14
15
# File 'lib/data_conduit/adapters/trino_repository.rb', line 13

def user
  @user
end

Class Method Details

.tables(config) ⇒ Object



28
29
30
31
32
# File 'lib/data_conduit/adapters/trino_repository.rb', line 28

def self.tables(config)
  repo = new(nil, nil, config)
  response_data = repo.send(:response_to, "SHOW tables")
  response_data[:result_data]&.flatten&.sort
end

Instance Method Details

#execute(sql_query) ⇒ Object



39
40
41
42
# File 'lib/data_conduit/adapters/trino_repository.rb', line 39

def execute(sql_query)
  response_data = response_to(sql_query)
  transform_response(response_data[:result_data], response_data[:result_columns])
end

#last_updatedObject



44
45
46
47
48
49
# File 'lib/data_conduit/adapters/trino_repository.rb', line 44

def last_updated
  response_data = response_to("SELECT made_current_at FROM \"#{table_name}$history\" " \
                              "ORDER BY made_current_at DESC LIMIT 1")
  datetime_string = response_data[:result_data]&.flatten&.first
  datetime_string.nil? ? nil : DateTime.parse(datetime_string)
end

#query(sql_query = nil) ⇒ Object



34
35
36
37
# File 'lib/data_conduit/adapters/trino_repository.rb', line 34

def query(sql_query = nil)
  sql_query ||= build_query
  execute(sql_query)
end