Module: Card::Fetch::Retrieve
- Included in:
- Card::Fetch
- Defined in:
- lib/card/fetch/retrieve.rb
Overview
retrieval and instantiation methods for Card::Fetch
Instance Method Summary collapse
- #id_from_mark ⇒ Object
-
#mark_type ⇒ Object
In both the cache and the db, ids and keys are used to retrieve card data.
- #mark_value ⇒ Object
- #retrieval_from_db_query ⇒ Object
- #retrieval_from_db_query_base ⇒ Object
-
#retrieve_existing ⇒ Object
look for card in cache.
- #retrieve_from_cache ⇒ Object
- #retrieve_from_db ⇒ Object
Instance Method Details
#id_from_mark ⇒ Object
41 42 43 |
# File 'lib/card/fetch/retrieve.rb', line 41 def id_from_mark mark_type == :id ? mark_value : Lexicon.id(mark_value) end |
#mark_type ⇒ Object
In both the cache and the db, ids and keys are used to retrieve card data. These methods identify the kind of mark to use and its value
47 48 49 |
# File 'lib/card/fetch/retrieve.rb', line 47 def mark_type @mark_type ||= mark.is_a?(Integer) ? :id : :key end |
#mark_value ⇒ Object
51 52 53 |
# File 'lib/card/fetch/retrieve.rb', line 51 def mark_value @mark_value ||= mark.is_a?(Integer) ? mark : mark.key end |
#retrieval_from_db_query ⇒ Object
27 28 29 30 31 |
# File 'lib/card/fetch/retrieve.rb', line 27 def retrieval_from_db_query return unless (query = retrieval_from_db_query_base) query[:trash] = false unless look_in_trash? query end |
#retrieval_from_db_query_base ⇒ Object
33 34 35 36 37 38 39 |
# File 'lib/card/fetch/retrieve.rb', line 33 def retrieval_from_db_query_base if mark_type == :key && mark.simple? { key: mark_value } elsif (id = id_from_mark) { id: id } end end |
#retrieve_existing ⇒ Object
look for card in cache. if that doesn’t work, look in database
6 7 8 9 |
# File 'lib/card/fetch/retrieve.rb', line 6 def retrieve_existing return unless mark.present? retrieve_from_cache || retrieve_from_db end |
#retrieve_from_cache ⇒ Object
11 12 13 14 15 16 17 18 |
# File 'lib/card/fetch/retrieve.rb', line 11 def retrieve_from_cache @card = Card.send "retrieve_from_cache_by_#{mark_type}", mark_value, @opts[:local_only] @card = nil if card&.new? && look_in_trash? # don't return cached cards if looking in trash - # we want the db version card end |
#retrieve_from_db ⇒ Object
20 21 22 23 24 25 |
# File 'lib/card/fetch/retrieve.rb', line 20 def retrieve_from_db query = retrieval_from_db_query @card = query ? Card.where(query).take : nil @cache_ready = true if card.present? && !card.trash card end |