factbase 0.19.1 → 0.19.2
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/lib/factbase/cached/cached_factbase.rb +1 -0
- data/lib/factbase/cached/cached_query.rb +12 -0
- data/lib/factbase/version.rb +1 -1
- 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: 515345c86598dcc29f0795b9bb64fe31fc770469f596185103bc3ae62b95bec9
|
|
4
|
+
data.tar.gz: adcf851edc23a66a4297bf4888ae54987431cc853f3157d751bbb57f5a89ef01
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 37488e2dd8a395abb1ddfb4700fa794592d3ce910981f4c468c2f6b0ebdfa703400873f5caea6cdee42a62971ae88009956fb6cb38b3bc5d8eebca698bdf4367
|
|
7
|
+
data.tar.gz: 7798feb2f2e05fb795e6cfffe3a3311d6e2867fd4b21d1ffb5f1e03aa818bacae442faf47a507a99a402081d5048146be883685adcef62a9ace4ef85ac4ee90e
|
|
@@ -35,6 +35,7 @@ class Factbase::CachedQuery
|
|
|
35
35
|
# @return [Integer] Total number of facts yielded
|
|
36
36
|
def each(fb = @fb, params = {})
|
|
37
37
|
return to_enum(__method__, fb, params) unless block_given?
|
|
38
|
+
invalidate_if_dirty!
|
|
38
39
|
key = "each #{@origin}" # params are ignored!
|
|
39
40
|
before = @cache[key]
|
|
40
41
|
@cache[key] = @origin.each(fb, params).to_a if before.nil?
|
|
@@ -51,6 +52,7 @@ class Factbase::CachedQuery
|
|
|
51
52
|
# @param [Hash] params Optional params accessible in the query via the "$" symbol (unused)
|
|
52
53
|
# @return The value evaluated
|
|
53
54
|
def one(fb = @fb, params = {})
|
|
55
|
+
invalidate_if_dirty!
|
|
54
56
|
key = "one: #{@origin} #{params}"
|
|
55
57
|
before = @cache[key]
|
|
56
58
|
@cache[key] = @origin.one(fb, params) if before.nil?
|
|
@@ -63,4 +65,14 @@ class Factbase::CachedQuery
|
|
|
63
65
|
@cache.clear
|
|
64
66
|
@origin.delete!(fb)
|
|
65
67
|
end
|
|
68
|
+
|
|
69
|
+
private
|
|
70
|
+
|
|
71
|
+
# Clear cache if it was marked dirty by a fresh fact insertion.
|
|
72
|
+
# This implements lazy invalidation: we don't clear on every insert,
|
|
73
|
+
# only when a query actually runs after inserts happened.
|
|
74
|
+
def invalidate_if_dirty!
|
|
75
|
+
return unless @cache.delete(:__dirty__)
|
|
76
|
+
@cache.clear
|
|
77
|
+
end
|
|
66
78
|
end
|
data/lib/factbase/version.rb
CHANGED