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, #retrieve_dataset_indexes, #save, #transform_to_query, try_create_db, #update_settings

Constructor Details

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

Instance Method Details

#dump(base_folder:, read_dataset_idx:) ⇒ Object



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

def dump(base_folder:, read_dataset_idx:)
  archive_path = "#{base_folder}/#{@settings.db_name}/#{@settings.dataset_name}.#{read_dataset_idx}.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}/#{@settings.db_name}`
  `#{password}pg_dump #{options} -Fc #{@settings.db_name} > #{archive_path}`
  archive_path
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:, dataset_name:) ⇒ Object



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

def restore(filepath:, dataset_name:)
  options = "-v --clean --if-exists --no-owner  "
  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} --role=#{@settings.db_user} " if @settings.db_user.present?
  password = "PGPASSWORD=#{@settings.db_password} " if @settings.db_password.present?

  `#{password}pg_restore #{options} -Fc --dbname=#{@settings.db_name} #{filepath}`
end

#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 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