Class: Gisele::VM::ProgList::Sqldb

Inherits:
Storage show all
Defined in:
lib/gisele/vm/prog_list/sqldb.rb

Instance Attribute Summary collapse

Attributes inherited from Storage

#options

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Storage

#save

Methods inherited from Component

#connected!, #connected?, #registered, #registered!, #registered?, #unregistered, #vm

Constructor Details

#initialize(options = {}) ⇒ Sqldb

Returns a new instance of Sqldb.



9
10
11
# File 'lib/gisele/vm/prog_list/sqldb.rb', line 9

def initialize(options = {})
  super(default_options.merge(options))
end

Instance Attribute Details

#sequel_dbObject (readonly)

Returns the value of attribute sequel_db.



7
8
9
# File 'lib/gisele/vm/prog_list/sqldb.rb', line 7

def sequel_db
  @sequel_db
end

Class Method Details

.sqlite_protocolObject



17
18
19
# File 'lib/gisele/vm/prog_list/sqldb.rb', line 17

def self.sqlite_protocol
  defined?(JRUBY_VERSION) ? "jdbc:sqlite" : "sqlite"
end

Instance Method Details

#clearObject



46
47
48
# File 'lib/gisele/vm/prog_list/sqldb.rb', line 46

def clear
  sequel_db[table_name].delete
end

#connectObject



21
22
23
24
25
26
27
# File 'lib/gisele/vm/prog_list/sqldb.rb', line 21

def connect
  super
  @sequel_db = Sequel.connect(connection_info)
  @sequel_db.test_connection
  ensure_schema(@sequel_db)
  self
end

#default_optionsObject



13
14
15
# File 'lib/gisele/vm/prog_list/sqldb.rb', line 13

def default_options
  { :table_name => :gvm_proglist }
end

#disconnectObject



29
30
31
32
# File 'lib/gisele/vm/prog_list/sqldb.rb', line 29

def disconnect
  super
  @sequel_db.disconnect if @sequel_db
end

#fetch(puid) ⇒ Object

Raises:



34
35
36
37
38
# File 'lib/gisele/vm/prog_list/sqldb.rb', line 34

def fetch(puid)
  got = sequel_db[table_name].where(:puid => puid).first
  raise InvalidPUIDError, "Invalid puid: `#{puid.inspect}`" unless got
  decode(got)
end

#pick(restriction) ⇒ Object



40
41
42
43
44
# File 'lib/gisele/vm/prog_list/sqldb.rb', line 40

def pick(restriction)
  c = sequel_db[table_name].
    where(encode(restriction)).limit(1).first
  c && decode(c)
end

#to_relation(restriction = nil) ⇒ Object



50
51
52
53
54
55
# File 'lib/gisele/vm/prog_list/sqldb.rb', line 50

def to_relation(restriction = nil)
  tuples = sequel_db[table_name]
  tuples = tuples.where(encode(restriction)) if restriction
  tuples = tuples.map{|t| decode(t, false)}
  Alf::Relation(tuples)
end