factbase 0.9.6 → 0.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Rakefile +1 -1
- data/lib/factbase/cached/cached_query.rb +3 -0
- data/lib/factbase/indexed/indexed_query.rb +3 -1
- data/lib/factbase/logged.rb +4 -3
- data/lib/factbase/query.rb +1 -1
- data/lib/factbase.rb +1 -1
- data/test/factbase/test_logged.rb +13 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e7d1b649fb808d571609f3231f90dbd57ba57683993d52ee2eaddd674e2aeb65
|
4
|
+
data.tar.gz: 717ea095ae2e1092d71509b39f1581cfc4b65d47ca9f39cb704d694eabbd91d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f6955bdf61ad153a2cf956935310fbd1d59782a34e479ae94e48c70ab8a1002dfdf61f2384e968bbdedb0be58d19ea556841d7b7300aa110927f78f1fdabaf9
|
7
|
+
data.tar.gz: 2364a4421fcf35c42b6e316e33f11afaf4abc69b33502b475fa08fc28e2e45b8dbe138cf72d26b8938212d2807dfd8c3b50aa40b166e481e15f363d2cf5629c8
|
data/Rakefile
CHANGED
@@ -36,9 +36,12 @@ class Factbase::CachedQuery
|
|
36
36
|
key = "each #{@origin}" # params are ignored!
|
37
37
|
before = @cache[key]
|
38
38
|
@cache[key] = @origin.each(fb, params).to_a if before.nil?
|
39
|
+
c = 0
|
39
40
|
@cache[key].each do |f|
|
41
|
+
c += 1
|
40
42
|
yield Factbase::CachedFact.new(f, @cache)
|
41
43
|
end
|
44
|
+
c
|
42
45
|
end
|
43
46
|
|
44
47
|
# Read a single value.
|
@@ -33,9 +33,11 @@ class Factbase::IndexedQuery
|
|
33
33
|
# @return [Integer] Total number of facts yielded
|
34
34
|
def each(fb = @fb, params = {})
|
35
35
|
return to_enum(__method__, fb, params) unless block_given?
|
36
|
-
@origin.each(fb, params).to_a
|
36
|
+
a = @origin.each(fb, params).to_a
|
37
|
+
a.each do |f|
|
37
38
|
yield Factbase::IndexedFact.new(f, @idx)
|
38
39
|
end
|
40
|
+
a.size
|
39
41
|
end
|
40
42
|
|
41
43
|
# Read a single value.
|
data/lib/factbase/logged.rb
CHANGED
@@ -138,13 +138,14 @@ class Factbase::Logged
|
|
138
138
|
def each(fb = @fb, params = {}, &)
|
139
139
|
return to_enum(__method__, fb, params) unless block_given?
|
140
140
|
start = Time.now
|
141
|
-
q = Factbase::Syntax.new(@term).to_term.to_s
|
142
141
|
r = nil
|
142
|
+
qry = @fb.query(@term, @maps)
|
143
143
|
tail =
|
144
144
|
Factbase::Logged.elapsed do
|
145
|
-
r =
|
145
|
+
r = qry.each(fb, params, &)
|
146
146
|
end
|
147
|
-
raise ".each of #{
|
147
|
+
raise ".query(#{@term.to_s.inspect}).each() of #{qry.class} returned #{r.class}" unless r.is_a?(Integer)
|
148
|
+
q = Factbase::Syntax.new(@term).to_term.to_s
|
148
149
|
if r.zero?
|
149
150
|
@tube.say(start, "Zero/#{@fb.size} facts found by '#{q}' #{tail}")
|
150
151
|
else
|
data/lib/factbase/query.rb
CHANGED
@@ -39,7 +39,7 @@ class Factbase::Query
|
|
39
39
|
# @param [Factbase] fb The factbase
|
40
40
|
# @param [Hash] params Optional params accessible in the query via the "$" symbol
|
41
41
|
# @yield [Fact] Facts one-by-one
|
42
|
-
# @return [Integer] Total number of facts yielded
|
42
|
+
# @return [Integer] Total number of facts yielded (if block given), otherwise enumerator
|
43
43
|
def each(fb = @fb, params = {})
|
44
44
|
return to_enum(__method__, fb, params) unless block_given?
|
45
45
|
yielded = 0
|
data/lib/factbase.rb
CHANGED
@@ -82,7 +82,7 @@ require 'yaml'
|
|
82
82
|
# License:: MIT
|
83
83
|
class Factbase
|
84
84
|
# Current version of the gem (changed by .rultor.yml on every release)
|
85
|
-
VERSION = '0.9.
|
85
|
+
VERSION = '0.9.7' unless const_defined?(:VERSION)
|
86
86
|
|
87
87
|
# An exception that may be thrown in a transaction, to roll it back.
|
88
88
|
class Rollback < StandardError; end
|
@@ -7,6 +7,7 @@ require_relative '../test__helper'
|
|
7
7
|
require 'loog'
|
8
8
|
require_relative '../../lib/factbase'
|
9
9
|
require_relative '../../lib/factbase/logged'
|
10
|
+
require_relative '../../lib/factbase/cached/cached_factbase'
|
10
11
|
|
11
12
|
# Test.
|
12
13
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
@@ -36,6 +37,18 @@ class TestLogged < Factbase::Test
|
|
36
37
|
assert_equal([42], fb.query('(agg (exists bar) (first bar))').one)
|
37
38
|
end
|
38
39
|
|
40
|
+
def test_avoid_inner_logging
|
41
|
+
buf = Loog::Buffer.new
|
42
|
+
fb = Factbase.new
|
43
|
+
fb.insert
|
44
|
+
fb.insert.bar = 42
|
45
|
+
fb = Factbase::Logged.new(Factbase::CachedFactbase.new(fb), buf)
|
46
|
+
fb.query('(agg (exists bar) (count))').one
|
47
|
+
fb.query('(join "foo<=bar" (exists bar))').each.to_a
|
48
|
+
refute_includes(buf.to_s, '\'(count)\'')
|
49
|
+
refute_includes(buf.to_s, '\'(exists bar)\'')
|
50
|
+
end
|
51
|
+
|
39
52
|
def test_with_txn
|
40
53
|
log = Loog::Buffer.new
|
41
54
|
fb = Factbase::Logged.new(Factbase.new, log)
|