Class: CacheStore

Inherits:
Object
  • Object
show all
Defined in:
lib/mongoid_cache_store.rb

Instance Method Summary collapse

Constructor Details

#initializeCacheStore

Returns a new instance of CacheStore.



8
9
10
11
12
# File 'lib/mongoid_cache_store.rb', line 8

def initialize
  @doc_ids_hash = {}
  @related_docs_hash = {}
  @documents = {}
end

Instance Method Details

#cache_docs(doc_ids, doc_class, related_infos = []) ⇒ Object

‘image_id’, klass: Users::ProfileImage


15
16
17
18
19
20
21
22
23
# File 'lib/mongoid_cache_store.rb', line 15

def cache_docs(doc_ids, doc_class, related_infos = [])
  doc_type = doc_class.to_s.underscore
  @doc_ids_hash[doc_type] ||= {}
  [doc_ids].flatten.compact.uniq.each{|doc_id| @doc_ids_hash[doc_type][doc_id.to_s] = nil}
  @related_docs_hash[doc_type] ||= []
  @related_docs_hash[doc_type] += related_infos

  self
end

#document(doc_id, doc_class) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/mongoid_cache_store.rb', line 25

def document(doc_id, doc_class)
  return nil if doc_id.blank?
  doc_type = doc_class.to_s.underscore
  ensure_query(doc_class, doc_id)

  @documents[doc_type][doc_id.to_s]
end

#sorted_documents(doc_class, doc_ids = nil) ⇒ Object



40
41
42
43
44
45
46
47
48
# File 'lib/mongoid_cache_store.rb', line 40

def sorted_documents(doc_class, doc_ids = nil)
  doc_type = doc_class.to_s.underscore
  ensure_query(doc_class, doc_ids)
  return [] if @documents[doc_type].blank?

  doc_ids == nil ?
    @documents[doc_type].values.compact :
    doc_ids.map{|doc_id| @documents[doc_type][doc_id.to_s]}.compact
end

#valid_doc_ids(doc_class, doc_ids = nil) ⇒ Object



33
34
35
36
37
38
# File 'lib/mongoid_cache_store.rb', line 33

def valid_doc_ids(doc_class, doc_ids = nil)
  doc_type = doc_class.to_s.underscore
  ensure_query(doc_class, doc_ids)

  doc_ids.blank? ? cached_ids(doc_type) : doc_ids.select{|doc_id| @documents[doc_type][doc_id.to_s].present?}
end