Class: Milkode::PackageTable
- Inherits:
-
Object
- Object
- Milkode::PackageTable
- Includes:
- Enumerable
- Defined in:
- lib/milkode/database/package_table.rb
Class Method Summary collapse
Instance Method Summary collapse
- #[](name) ⇒ Object
- #add(name, directory, options) ⇒ Object
- #dump ⇒ Object
- #each ⇒ Object
- #fav?(name) ⇒ Boolean
- #favs ⇒ Object
-
#initialize(table) ⇒ PackageTable
constructor
A new instance of PackageTable.
- #remove(name) ⇒ Object
- #remove_all ⇒ Object
- #size ⇒ Object
- #sort(kind, order = "descending") ⇒ Object
- #touch(name, kind, time = Time.now) ⇒ Object
- #touch_if(name, kind, time = Time.now) ⇒ Object
Constructor Details
#initialize(table) ⇒ PackageTable
Returns a new instance of PackageTable.
27 28 29 |
# File 'lib/milkode/database/package_table.rb', line 27 def initialize(table) @table = table end |
Class Method Details
.define_schema ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/milkode/database/package_table.rb', line 14 def self.define_schema Groonga::Schema.define do |schema| schema.create_table("packages", :type => :hash) do |table| table.string("name") table.string("directory") table.time("addtime") table.time("updatetime") table.time("viewtime") table.time("favtime") end end end |
Instance Method Details
#[](name) ⇒ Object
56 57 58 |
# File 'lib/milkode/database/package_table.rb', line 56 def [](name) @table[name] end |
#add(name, directory, options) ⇒ Object
35 36 37 38 39 40 41 42 43 44 |
# File 'lib/milkode/database/package_table.rb', line 35 def add(name, directory, ) now = Time.now @table.add(name, :name => name, :directory => directory, :addtime => now, :updatetime => [:same_add] ? now : Time.at(0), :viewtime => [:same_add] ? now : Time.at(0), :favtime => [:fav] ? now : Time.at(0)) end |
#dump ⇒ Object
70 71 72 73 74 |
# File 'lib/milkode/database/package_table.rb', line 70 def dump self.each do |r| p [r.name, r.addtime, r.updatetime, r.viewtime, r.favtime] end end |
#each ⇒ Object
60 61 62 63 64 |
# File 'lib/milkode/database/package_table.rb', line 60 def each @table.select.each do |r| yield r end end |
#fav?(name) ⇒ Boolean
101 102 103 |
# File 'lib/milkode/database/package_table.rb', line 101 def fav?(name) @table[name].favtime != Time.at(0) end |
#favs ⇒ Object
90 91 92 93 94 95 96 97 98 99 |
# File 'lib/milkode/database/package_table.rb', line 90 def favs sorted = sort('favtime') zero_time = Time.at(0) index = sorted.find_index {|v| v.favtime == zero_time} unless index.nil? sorted[0...index] else sorted end end |
#remove(name) ⇒ Object
46 47 48 |
# File 'lib/milkode/database/package_table.rb', line 46 def remove(name) @table[name].delete end |
#remove_all ⇒ Object
50 51 52 53 54 |
# File 'lib/milkode/database/package_table.rb', line 50 def remove_all self.each do |r| remove(r.name) end end |
#size ⇒ Object
31 32 33 |
# File 'lib/milkode/database/package_table.rb', line 31 def size @table.size end |
#sort(kind, order = "descending") ⇒ Object
66 67 68 |
# File 'lib/milkode/database/package_table.rb', line 66 def sort(kind, order = "descending") Util.groonga_table_sort(@table, [{:key => kind, :order => order}]) end |
#touch(name, kind, time = Time.now) ⇒ Object
76 77 78 |
# File 'lib/milkode/database/package_table.rb', line 76 def touch(name, kind, time = Time.now) @table[name][kind] = time end |
#touch_if(name, kind, time = Time.now) ⇒ Object
80 81 82 83 84 85 86 87 88 |
# File 'lib/milkode/database/package_table.rb', line 80 def touch_if(name, kind, time = Time.now) record = @table[name] if record record[kind] = time else nil end end |