Class: Dataset::Database::Postgresql

Inherits:
Base
  • Object
show all
Defined in:
lib/dataset/database/postgresql.rb

Overview

The interface to a PostgreSQL database, this will capture by creating a dump file and restore by loading one of the same.

Instance Method Summary collapse

Methods inherited from Base

#clear, #record_heirarchy, #record_meta

Constructor Details

#initialize(database_spec, storage_path) ⇒ Postgresql

Returns a new instance of Postgresql.



8
9
10
11
12
13
14
# File 'lib/dataset/database/postgresql.rb', line 8

def initialize(database_spec, storage_path)
  @database = database_spec[:database]
  @username = database_spec[:username]
  @password = database_spec[:password]
  @storage_path = storage_path
  FileUtils.mkdir_p(@storage_path)
end

Instance Method Details

#capture(datasets) ⇒ Object



16
17
18
19
# File 'lib/dataset/database/postgresql.rb', line 16

def capture(datasets)
  return if datasets.nil? || datasets.empty?
  `pg_dump -c #{@database} > #{storage_path(datasets)}`
end

#restore(datasets) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/dataset/database/postgresql.rb', line 21

def restore(datasets)
  store = storage_path(datasets)
  if File.file?(store)
    `psql -U #{@username} -p #{@password} -e #{@database} < #{store}`
    true
  end
end

#storage_path(datasets) ⇒ Object



29
30
31
# File 'lib/dataset/database/postgresql.rb', line 29

def storage_path(datasets)
  "#{@storage_path}/#{datasets.collect {|c| c.__id__}.join('_')}.sql"
end