Class: Factbase::Logged
- Inherits:
-
Object
- Object
- Factbase::Logged
- Defined in:
- lib/factbase/logged.rb
Overview
A decorator of a Factbase, that logs all operations.
- Author
-
Yegor Bugayenko (yegor256@gmail.com)
- Copyright
-
Copyright © 2024-2025 Yegor Bugayenko
- License
-
MIT
Defined Under Namespace
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(fb, log = nil, time_tolerate: 1, tube: nil) ⇒ Logged
constructor
Ctor.
- #insert ⇒ Object
- #query(term, maps = nil) ⇒ Object
- #txn ⇒ Object
Constructor Details
#initialize(fb, log = nil, time_tolerate: 1, tube: nil) ⇒ Logged
Ctor.
23 24 25 26 27 28 29 30 31 32 |
# File 'lib/factbase/logged.rb', line 23 def initialize(fb, log = nil, time_tolerate: 1, tube: nil) raise 'The "fb" is nil' if fb.nil? @origin = fb if log.nil? raise 'Either "log" or "tube" must be non-NIL' if tube.nil? @tube = tube else @tube = Tube.new(log, time_tolerate:) end end |
Class Method Details
.elapsed ⇒ Object
204 205 206 207 208 |
# File 'lib/factbase/logged.rb', line 204 def self.elapsed start = Time.now yield "in #{start.ago}" end |
Instance Method Details
#insert ⇒ Object
36 37 38 39 40 41 |
# File 'lib/factbase/logged.rb', line 36 def insert start = Time.now f = @origin.insert @tube.say(start, "Inserted new fact ##{@origin.size} in #{start.ago}") Fact.new(f, tube: @tube) end |
#query(term, maps = nil) ⇒ Object
43 44 45 46 |
# File 'lib/factbase/logged.rb', line 43 def query(term, maps = nil) term = to_term(term) if term.is_a?(String) Query.new(term, maps, @tube, @origin) end |
#txn ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/factbase/logged.rb', line 48 def txn start = Time.now id = nil rollback = false r = @origin.txn do |fbt| id = fbt.object_id yield Factbase::Logged.new(fbt, tube: @tube) rescue Factbase::Rollback => e rollback = true raise e end if rollback @tube.say(start, "Txn ##{id} rolled back in #{start.ago}") else @tube.say(start, "Txn ##{id} touched #{r} in #{start.ago}") end r end |