Class: Arrow::Session::DbStore

Inherits:
Store show all
Defined in:
lib/arrow/session/dbstore.rb

Overview

The Arrow::Session::DbStore class, a derivative of Arrow::Session::Store. Instances of this class store a session object in a database.

Authors

  • Michael Granger

:include: LICENSE

Please see the file LICENSE in the BASE directory for licensing details.

Constant Summary

Constants inherited from Store

DelegatedMethods, RecommendedLocker

Instance Attribute Summary

Instance Method Summary

Methods inherited from Store

#[]=, #clear, create, #create_recommended_lock, derivativeDirs, #merge!, #modified?, #new?, #reject!, #replace, #save, #serialized_data, #serialized_data=

Methods inherited from Arrow::Object

deprecate_class_method, deprecate_method, inherited

Methods included from Arrow::Loggable

#log

Constructor Details

- (DbStore) initialize(uri, idobj)

Create a new Arrow::Session::DbStore object.



29
30
31
32
33
34
35
# File 'lib/arrow/session/dbstore.rb', line 29

def initialize( uri, idobj )
  
  db = Sequel.connect( uri )
  dataset = db[]
  @id = idobj
  super
end

Instance Attribute Details

- (Object) db (readonly)

The database handle



43
44
45
# File 'lib/arrow/session/dbstore.rb', line 43

def db
  @db
end

- (Object) id (readonly)

The session ID this store was created for



46
47
48
# File 'lib/arrow/session/dbstore.rb', line 46

def id
  @id
end

Instance Method Details

- (Object) insert

Insert the specified data hash into whatever permanent storage the Store object is acting as an interface to.



51
52
53
54
55
56
# File 'lib/arrow/session/dbstore.rb', line 51

def insert
  super {|data|
    self.log.debug "Inserting data into session table for session %s" % [ self.id ]
    self.
  }
end

- (Object) remove

Permanently remove the data hash associated with the id used in the receiver’s creation from permanent storage.



85
86
87
88
89
90
91
92
93
94
95
# File 'lib/arrow/session/dbstore.rb', line 85

def remove
  super
  self.close
  file = self.session_file
  if File.exists?( file )
    File.delete( file )
  else
    raise Arrow::SessionError,
      "Session file #{file} does not exist in the data store"
  end
end

- (Object) retrieve

Retrieve the data hash stored in permanent storage associated with the id the object was created with.



73
74
75
76
77
78
79
80
# File 'lib/arrow/session/dbstore.rb', line 73

def retrieve
  super {
    self.log.debug "Reading data in session file"
    ofh = self.open( File::RDWR )
    ofh.seek( 0, File::SEEK_SET )
    ofh.read
  }
end

- (Object) update

Update the current data hash stored in permanent storage with the values contained in data.



61
62
63
64
65
66
67
68
# File 'lib/arrow/session/dbstore.rb', line 61

def update
  super {|data|
    self.log.debug "Updating data in session file"
    ofh = self.open
    ofh.seek( 0, File::SEEK_SET )
    ofh.print( data )
  }
end