Class: IndexStorage
- Inherits:
-
Object
- Object
- IndexStorage
- Defined in:
- lib/ObjectModel/Indexes/IndexStorage.rb
Instance Attribute Summary collapse
-
#db ⇒ Object
readonly
Returns the value of attribute db.
-
#index_manager ⇒ Object
writeonly
Sets the attribute index_manager.
Instance Method Summary collapse
- #[](type) ⇒ Object
- #close ⇒ Object
- #generate(generator_name) ⇒ Object
-
#initialize(name, dir) ⇒ IndexStorage
constructor
A new instance of IndexStorage.
- #print(name = nil) ⇒ Object
- #transaction(&b) ⇒ Object
Constructor Details
#initialize(name, dir) ⇒ IndexStorage
Returns a new instance of IndexStorage.
7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/ObjectModel/Indexes/IndexStorage.rb', line 7 def initialize name, dir folder = File. "#{dir}/#{name}" Dir.mkdir folder unless File.exist? folder @db = Sequel.connect("sqlite://#{folder}/#{name}_indexes.db") @db.logger = log initialize_db unless @db.table_exists? :metadata @metadata ||= @db[:metadata] @tables = {} end |
Instance Attribute Details
#db ⇒ Object (readonly)
Returns the value of attribute db.
4 5 6 |
# File 'lib/ObjectModel/Indexes/IndexStorage.rb', line 4 def db @db end |
#index_manager=(value) ⇒ Object (writeonly)
Sets the attribute index_manager
5 6 7 |
# File 'lib/ObjectModel/Indexes/IndexStorage.rb', line 5 def index_manager=(value) @index_manager = value end |
Instance Method Details
#[](type) ⇒ Object
19 20 21 |
# File 'lib/ObjectModel/Indexes/IndexStorage.rb', line 19 def [] type @tables[type] ||= @db[type] end |
#close ⇒ Object
36 37 38 39 |
# File 'lib/ObjectModel/Indexes/IndexStorage.rb', line 36 def close @tables.clear @db.disconnect end |
#generate(generator_name) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/ObjectModel/Indexes/IndexStorage.rb', line 23 def generate generator_name generator_name = generator_name.to_s @db.transaction do unless row = @metadata[:key => generator_name] @metadata << {:key => generator_name, :value => "0"} row = @metadata[:key => generator_name] end id = @metadata[:key => generator_name.to_s][:value].to_i @metadata.filter(:key => generator_name).update(:value => (id + 1).to_s) return id.to_s end end |
#print(name = nil) ⇒ Object
45 46 47 |
# File 'lib/ObjectModel/Indexes/IndexStorage.rb', line 45 def print name = nil @index_manager.indexes.values.each{|index| index.print_storage name} end |
#transaction(&b) ⇒ Object
41 42 43 |
# File 'lib/ObjectModel/Indexes/IndexStorage.rb', line 41 def transaction &b @db.transaction &b end |