| Module | Sequel::Plugins::StaticCache::ClassMethods |
| In: |
lib/sequel/plugins/static_cache.rb
|
| cache | [R] | A frozen ruby hash holding all of the model‘s frozen instances, keyed by frozen primary key. |
Return the frozen object with the given pk, or nil if no such object exists in the cache, without issuing a database query.
# File lib/sequel/plugins/static_cache.rb, line 49
49: def cache_get_pk(pk)
50: cache[pk]
51: end
Get the number of records in the cache, without issuing a database query.
# File lib/sequel/plugins/static_cache.rb, line 39
39: def count(*a, &block)
40: if a.empty? && !block
41: @all.size
42: else
43: super
44: end
45: end
Use the cache instead of a query to get the results.
# File lib/sequel/plugins/static_cache.rb, line 60
60: def map(column=nil, &block)
61: if column
62: raise(Error, "Cannot provide both column and block to map") if block
63: if column.is_a?(Array)
64: @all.map{|r| r.values.values_at(*column)}
65: else
66: @all.map{|r| r[column]}
67: end
68: else
69: @all.map(&(Proc.new if block_given?))
70: end
71: end
Use the cache instead of a query to get the results.
# File lib/sequel/plugins/static_cache.rb, line 76
76: def to_hash(key_column = nil, value_column = nil)
77: return cache.dup if key_column.nil? && value_column.nil?
78:
79: h = {}
80: if value_column
81: if value_column.is_a?(Array)
82: if key_column.is_a?(Array)
83: each{|r| h[r.values.values_at(*key_column)] = r.values.values_at(*value_column)}
84: else
85: each{|r| h[r[key_column]] = r.values.values_at(*value_column)}
86: end
87: else
88: if key_column.is_a?(Array)
89: each{|r| h[r.values.values_at(*key_column)] = r[value_column]}
90: else
91: each{|r| h[r[key_column]] = r[value_column]}
92: end
93: end
94: elsif key_column.is_a?(Array)
95: each{|r| h[r.values.values_at(*key_column)] = r}
96: else
97: each{|r| h[r[key_column]] = r}
98: end
99: h
100: end
Use the cache instead of a query to get the results
# File lib/sequel/plugins/static_cache.rb, line 103
103: def to_hash_groups(key_column, value_column = nil)
104: h = {}
105: if value_column
106: if value_column.is_a?(Array)
107: if key_column.is_a?(Array)
108: each{|r| (h[r.values.values_at(*key_column)] ||= []) << r.values.values_at(*value_column)}
109: else
110: each{|r| (h[r[key_column]] ||= []) << r.values.values_at(*value_column)}
111: end
112: else
113: if key_column.is_a?(Array)
114: each{|r| (h[r.values.values_at(*key_column)] ||= []) << r[value_column]}
115: else
116: each{|r| (h[r[key_column]] ||= []) << r[value_column]}
117: end
118: end
119: elsif key_column.is_a?(Array)
120: each{|r| (h[r.values.values_at(*key_column)] ||= []) << r}
121: else
122: each{|r| (h[r[key_column]] ||= []) << r}
123: end
124: h
125: end