class PgBundle::Definition

The Definition class collects all objects defined in a PgFile

Attributes

database[RW]
errors[RW]
extensions[RW]

Public Class Methods

new() click to toggle source
# File lib/pgbundle/definition.rb, line 6
def initialize
  @extensions = {}
  @errors = []
end

Public Instance Methods

available_extensions() click to toggle source

returns an Array of already available Extensions

# File lib/pgbundle/definition.rb, line 18
def available_extensions
  link_dependencies
  extensions.select { |_, dep| dep.available?(database) }.values
end
check() click to toggle source

returns an array of hashes with dependency information

{name: 'foo', installed: true, created: false }
# File lib/pgbundle/definition.rb, line 62
def check
  link_dependencies
  extensions.map do |_,ext|
    {
      name: ext.name,
      installed: ext.installed?(database),
      created: ext.created?(database)
    }
  end
end
create() click to toggle source

create all required extensions

# File lib/pgbundle/definition.rb, line 44
def create
  extensions.map do |_, dep|
    dep.create_with_dependencies(database)
    dep
  end
end
init() click to toggle source
# File lib/pgbundle/definition.rb, line 51
def init
  ["database '#{database.name}', host: '#{database.host}', user: '#{database.user}', system_user: '#{database.system_user}', use_sudo: #{database.use_sudo}"] +
  database.current_definition.map do |r|
    name, version = r['name'], r['version']
    requires = r['requires'] ? ", requires: " + r['requires'].gsub(/[{},]/,{'{' => '%w(', '}' =>')', ','=> ' '}) : ''
    "pgx '#{name}', '#{version}'#{requires}"
  end
end
install() click to toggle source

installs missing extensions returns all successfully installed Extensions

# File lib/pgbundle/definition.rb, line 24
def install
  installed = missing_extensions.map do |dep|
    dep.install(database)
    dep
  end

  installed.select { |dep| dep.available?(database) }
end
install!() click to toggle source

installs all required extensions

# File lib/pgbundle/definition.rb, line 34
def install!
  installed = extensions.map do |_, dep|
    dep.install(database, true)
    dep
  end

  installed.select { |dep| dep.available?(database) }
end
missing_extensions() click to toggle source

returns an Array of missing Extensions

# File lib/pgbundle/definition.rb, line 12
def missing_extensions
  link_dependencies
  extensions.select { |_, dep| !dep.available?(database) }.values
end