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