Class: Prick::Database

Inherits:
Object
  • Object
show all
Includes:
Ensure
Defined in:
lib/prick/database.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Ensure

#ensure_state, #ensure_state_value, #revoke_state

Constructor Details

#initialize(name, user) ⇒ Database

Returns a new instance of Database.



9
10
11
12
13
# File 'lib/prick/database.rb', line 9

def initialize(name, user)
  @name = name
  @user = user
  @version = nil
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



6
7
8
# File 'lib/prick/database.rb', line 6

def name
  @name
end

#userObject (readonly)

Returns the value of attribute user.



7
8
9
# File 'lib/prick/database.rb', line 7

def user
  @user
end

Instance Method Details

#createObject



41
# File 'lib/prick/database.rb', line 41

def create() Rdbms.create_database(name, owner: user) end

#dropObject



43
# File 'lib/prick/database.rb', line 43

def drop() Rdbms.drop_database(name, fail: false); @version = nil end

#exist?Boolean

Returns:

  • (Boolean)


40
# File 'lib/prick/database.rb', line 40

def exist?() Rdbms.exist_database?(name) end

#load(file) ⇒ Object



46
# File 'lib/prick/database.rb', line 46

def load(file) Rdbms.load(name, file, user: user); @version = nil end

#loaded?Boolean

Returns:

  • (Boolean)


45
# File 'lib/prick/database.rb', line 45

def loaded?() exist? && !version.nil? end

#recreateObject



42
# File 'lib/prick/database.rb', line 42

def recreate() drop if exist?; create; @version = nil end

#save(file) ⇒ Object



48
# File 'lib/prick/database.rb', line 48

def save(file) Rdbms.save(name, file); @version = nil end

#versionObject



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/prick/database.rb', line 15

def version
  @version ||= begin
      version = 
          if exist? && Rdbms.exist_table?(name, "prick", "versions")
            Rdbms.select(name, "select version from prick.versions")&.first&.first
          else
            nil
          end
      version && Version.new(version)
  end
end

#version=(version) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/prick/database.rb', line 27

def version=(version)
  @version = version && Version.new(version)
  Rdbms.exec_sql(name, %(
    update prick.versions
    set major = '#{@version.major}',
        minor = '#{@version.minor}',
        patch = '#{@version.patch}',
        pre = '#{@version.pre}',
        version = '#{@version.to_s}'
  )) if @version
  @version
end