class Milkode::PackageTable

Public Class Methods

define_schema() click to toggle source
# File lib/milkode/database/package_table.rb, line 13
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
new(table) click to toggle source
# File lib/milkode/database/package_table.rb, line 26
def initialize(table)
  @table = table
end

Public Instance Methods

[](name) click to toggle source
# File lib/milkode/database/package_table.rb, line 55
def [](name)
  @table[name]
end
add(name, directory, options) click to toggle source
# File lib/milkode/database/package_table.rb, line 34
def add(name, directory, options)
   now = Time.now
  @table.add(name,
             :name       => name,
             :directory  => directory,
             :addtime    => now,
             :updatetime => options[:same_add] ? now : Time.at(0),
             :viewtime   => options[:same_add] ? now : Time.at(0),
             :favtime    => options[:fav] ? now : Time.at(0))
end
dump() click to toggle source
# File lib/milkode/database/package_table.rb, line 69
def dump
  self.each do |r|
    p [r.name, r.addtime, r.updatetime, r.viewtime, r.favtime]
  end
end
each() { |r| ... } click to toggle source
# File lib/milkode/database/package_table.rb, line 59
def each
  @table.select.each do |r|
    yield r
  end
end
fav?(name) click to toggle source
# File lib/milkode/database/package_table.rb, line 100
def fav?(name)
  @table[name].favtime != Time.at(0)
end
favs() click to toggle source
# File lib/milkode/database/package_table.rb, line 89
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) click to toggle source
# File lib/milkode/database/package_table.rb, line 45
def remove(name)
  @table[name].delete
end
remove_all() click to toggle source
# File lib/milkode/database/package_table.rb, line 49
def remove_all
  self.each do |r|
    remove(r.name)
  end
end
size() click to toggle source
# File lib/milkode/database/package_table.rb, line 30
def size
  @table.size
end
sort(kind, order = "descending") click to toggle source
# File lib/milkode/database/package_table.rb, line 65
def sort(kind, order = "descending")
  Util.groonga_table_sort(@table, [{:key => kind, :order => order}])
end
touch(name, kind, time = Time.now) click to toggle source
# File lib/milkode/database/package_table.rb, line 75
def touch(name, kind, time = Time.now)
  @table[name][kind] = time
end
touch_if(name, kind, time = Time.now) click to toggle source
# File lib/milkode/database/package_table.rb, line 79
def touch_if(name, kind, time = Time.now)
  record = @table[name]

  if record
    record[kind] = time
  else
    nil
  end
end