Class: Factbase::CachedFactbase
- Inherits:
-
Object
- Object
- Factbase::CachedFactbase
- Defined in:
- lib/factbase/cached/cached_factbase.rb
Overview
A factbase with a cache.
- Author
-
Yegor Bugayenko ([email protected])
- Copyright
-
Copyright © 2024-2025 Yegor Bugayenko
- License
-
MIT
Instance Method Summary collapse
-
#initialize(origin, cache = {}) ⇒ CachedFactbase
constructor
Constructor.
-
#insert ⇒ Factbase::Fact
Insert a new fact and return it.
-
#query(term, maps = nil) ⇒ Object
Create a query capable of iterating.
-
#to_term(query) ⇒ Factbase::Term
Convert a query to a term.
-
#txn ⇒ Factbase::Churn
Run an ACID transaction.
Constructor Details
#initialize(origin, cache = {}) ⇒ CachedFactbase
Constructor.
24 25 26 27 28 29 |
# File 'lib/factbase/cached/cached_factbase.rb', line 24 def initialize(origin, cache = {}) raise 'Wrong type of original' unless origin.respond_to?(:query) @origin = origin raise 'Wrong type of cache' unless cache.is_a?(Hash) @cache = cache end |
Instance Method Details
#insert ⇒ Factbase::Fact
Insert a new fact and return it.
33 34 35 36 |
# File 'lib/factbase/cached/cached_factbase.rb', line 33 def insert @cache.clear Factbase::CachedFact.new(@origin.insert, @cache) end |
#query(term, maps = nil) ⇒ Object
Create a query capable of iterating.
50 51 52 53 54 55 |
# File 'lib/factbase/cached/cached_factbase.rb', line 50 def query(term, maps = nil) term = to_term(term) if term.is_a?(String) q = @origin.query(term, maps) q = Factbase::CachedQuery.new(q, @cache, self) unless term.abstract? q end |
#to_term(query) ⇒ Factbase::Term
Convert a query to a term.
41 42 43 44 45 |
# File 'lib/factbase/cached/cached_factbase.rb', line 41 def to_term(query) t = @origin.to_term(query) t.redress!(Factbase::CachedTerm, cache: @cache) t end |
#txn ⇒ Factbase::Churn
Run an ACID transaction.
59 60 61 62 63 |
# File 'lib/factbase/cached/cached_factbase.rb', line 59 def txn @origin.txn do |fbt| yield Factbase::CachedFactbase.new(fbt, @cache) end end |