Class: Dataflow::Adapters::PsqlAdapter

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

Overview

Interface between a data node and mongodb. We use mongodb to perform all the store/retrieve operations.

Constant Summary

Constants inherited from SqlAdapter

SqlAdapter::SYSTEM_ID

Instance Attribute Summary

Attributes inherited from SqlAdapter

#client, #settings

Instance Method Summary collapse

Methods inherited from SqlAdapter

add_extensions, #all, #all_paginated, client, #count, #create_indexes, #delete, disconnect_clients, #drop_dataset, #find, #initialize, #ordered_system_id_queries, #recreate_dataset, #save, #transform_to_query, try_create_db, #update_settings, #usage

Constructor Details

This class inherits a constructor from Dataflow::Adapters::SqlAdapter

Instance Method Details

#dump(base_folder:) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
# File 'lib/dataflow/adapters/psql_adapter.rb', line 28

def dump(base_folder:)
  archive_path = "#{base_folder}/#{@settings.db_name}.#{@settings.dataset_name}.dump"
  options = "--table=public.#{@settings.read_dataset_name}"
  options += "--host=#{@settings.db_host}" if @settings.db_host.present?
  options += "--port=#{@settings.db_port}" if @settings.db_port.present?
  options += "--username=#{@settings.db_user}" if @settings.db_user.present?
  password = "PGPASSWORD=#{@settings.db_password} " if @settings.db_password.present?
  `mkdir -p #{base_folder}`
  `#{password}pg_dump #{options} -Fc #{@settings.db_name} > #{archive_path}`
  archive_path
end

#fetch_table_usage(dataset:) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/dataflow/adapters/psql_adapter.rb', line 7

def fetch_table_usage(dataset:)
  size = client["SELECT pg_relation_size('#{dataset}') as size"].first[:size]
  {
    memory: size,
    storage: size
  }
rescue Sequel::DatabaseError
  {
    memory: 0,
    storage: 0
  }
end

#regex_case_insensitive_opObject



24
25
26
# File 'lib/dataflow/adapters/psql_adapter.rb', line 24

def regex_case_insensitive_op
  '~*'
end

#regex_case_senstive_opObject



20
21
22
# File 'lib/dataflow/adapters/psql_adapter.rb', line 20

def regex_case_senstive_op
  '~'
end

#restore(filepath:) ⇒ Object



40
41
42
43
44
45
46
47
48
# File 'lib/dataflow/adapters/psql_adapter.rb', line 40

def restore(filepath:)
  options = "--table=#{@settings.read_dataset_name}"
  options += "--host=#{@settings.db_host}" if @settings.db_host.present?
  options += "--port=#{@settings.db_port}" if @settings.db_port.present?
  options += "--username=#{@settings.db_user}" if @settings.db_user.present?
  password = "PGPASSWORD=#{@settings.db_password} " if @settings.db_password.present?
  p "#{password}pg_restore #{options} -Fc --dbname=#{@settings.db_name} #{filepath}"
  `#{password}pg_restore #{options} -Fc --dbname=#{@settings.db_name} #{filepath}`
end