Class: Milkode::PackageTable

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/milkode/database/package_table.rb

Class Method Summary collapse

Instance Method Summary collapse

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_schemaObject



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, 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

#dumpObject



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

#eachObject



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

Returns:

  • (Boolean)


101
102
103
# File 'lib/milkode/database/package_table.rb', line 101

def fav?(name)
  @table[name].favtime != Time.at(0)
end

#favsObject



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_allObject



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

#sizeObject



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