evt-entity_cache 0.13.0.0 → 0.14.0.0
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/entity_cache.rb +17 -15
- data/lib/entity_cache/controls.rb +12 -3
- data/lib/entity_cache/controls/entity.rb +27 -1
- data/lib/entity_cache/controls/persist_interval.rb +2 -22
- data/lib/entity_cache/controls/record.rb +33 -12
- data/lib/entity_cache/controls/storage/persistent.rb +8 -26
- data/lib/entity_cache/controls/storage/persistent/example.rb +41 -0
- data/lib/entity_cache/controls/storage/persistent/not_implemented.rb +19 -0
- data/lib/entity_cache/controls/storage/persistent/write.rb +25 -0
- data/lib/entity_cache/controls/storage/temporary.rb +14 -2
- data/lib/entity_cache/controls/subject.rb +2 -4
- data/lib/entity_cache/controls/time.rb +1 -12
- data/lib/entity_cache/controls/version.rb +5 -11
- data/lib/entity_cache/defaults.rb +2 -2
- data/lib/entity_cache/record.rb +36 -30
- data/lib/entity_cache/record/destructure.rb +29 -0
- data/lib/entity_cache/record/log_text.rb +9 -0
- data/lib/entity_cache/record/transformer.rb +26 -0
- data/lib/entity_cache/store/persistent/null.rb +15 -0
- data/lib/entity_cache/store/persistent/substitute.rb +64 -0
- data/lib/entity_cache/store/persistent/telemetry.rb +16 -0
- data/lib/entity_cache/store/temporary.rb +47 -0
- data/lib/entity_cache/store/temporary/build.rb +48 -0
- data/lib/entity_cache/store/temporary/build/defaults.rb +28 -0
- data/lib/entity_cache/{storage → store}/temporary/scope/exclusive.rb +1 -1
- data/lib/entity_cache/store/temporary/scope/global.rb +34 -0
- data/lib/entity_cache/store/temporary/scope/thread.rb +35 -0
- data/lib/entity_cache/store/temporary/substitute.rb +36 -0
- data/lib/entity_cache/substitute.rb +33 -17
- metadata +20 -58
- data/lib/entity_cache/entity_cache.rb +0 -83
- data/lib/entity_cache/error.rb +0 -3
- data/lib/entity_cache/storage/persistent.rb +0 -81
- data/lib/entity_cache/storage/persistent/none.rb +0 -15
- data/lib/entity_cache/storage/persistent/substitute.rb +0 -51
- data/lib/entity_cache/storage/persistent/telemetry.rb +0 -38
- data/lib/entity_cache/storage/temporary.rb +0 -56
- data/lib/entity_cache/storage/temporary/build.rb +0 -42
- data/lib/entity_cache/storage/temporary/scope/defaults.rb +0 -32
- data/lib/entity_cache/storage/temporary/scope/error.rb +0 -9
- data/lib/entity_cache/storage/temporary/scope/shared.rb +0 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60ce778606243f14d742f85711593dbf6fe226ec
|
4
|
+
data.tar.gz: eadfeebaaac7e8477278e938eaa90e8328d1d307
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d77d5302fac329c64b7642d2553a0dbdc0e470aa1744b1922fd6f06102dd33bd64a67c911a0ddcf49360e6eaa2072f02ccfd307353ed55d22751c56840bc124
|
7
|
+
data.tar.gz: 0af5181fd7d7998c0d46972163ed1f3859b3c9f25ff5d64b35a72dbe1724374f4cd34584473521ef397ba4d9350a2a36aca03d73ae33b1dad0193fbc3a09af35
|
data/lib/entity_cache.rb
CHANGED
@@ -1,27 +1,29 @@
|
|
1
1
|
require 'configure'; Configure.activate
|
2
|
-
require '
|
2
|
+
require 'message_store'
|
3
|
+
require 'settings'
|
3
4
|
require 'telemetry'
|
4
|
-
require 'log'
|
5
|
-
require 'virtual'; Virtual.activate
|
6
5
|
|
7
6
|
require 'entity_cache/log'
|
8
7
|
|
9
|
-
require 'entity_cache/
|
8
|
+
require 'entity_cache/defaults'
|
10
9
|
|
11
10
|
require 'entity_cache/record'
|
11
|
+
require 'entity_cache/record/destructure'
|
12
|
+
require 'entity_cache/record/log_text'
|
13
|
+
require 'entity_cache/record/transformer'
|
12
14
|
|
13
|
-
require 'entity_cache/
|
14
|
-
require 'entity_cache/
|
15
|
-
require 'entity_cache/
|
16
|
-
require 'entity_cache/
|
15
|
+
require 'entity_cache/store/persistent'
|
16
|
+
require 'entity_cache/store/persistent/null'
|
17
|
+
require 'entity_cache/store/persistent/substitute'
|
18
|
+
require 'entity_cache/store/persistent/telemetry'
|
17
19
|
|
18
|
-
require 'entity_cache/
|
19
|
-
require 'entity_cache/
|
20
|
-
require 'entity_cache/
|
21
|
-
require 'entity_cache/
|
22
|
-
require 'entity_cache/
|
23
|
-
require 'entity_cache/
|
20
|
+
require 'entity_cache/store/temporary'
|
21
|
+
require 'entity_cache/store/temporary/build'
|
22
|
+
require 'entity_cache/store/temporary/build/defaults'
|
23
|
+
require 'entity_cache/store/temporary/scope/exclusive'
|
24
|
+
require 'entity_cache/store/temporary/scope/global'
|
25
|
+
require 'entity_cache/store/temporary/scope/thread'
|
26
|
+
require 'entity_cache/store/temporary/substitute'
|
24
27
|
|
25
|
-
require 'entity_cache/defaults'
|
26
28
|
require 'entity_cache/entity_cache'
|
27
29
|
require 'entity_cache/substitute'
|
@@ -1,12 +1,21 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'tmpdir'
|
3
|
+
|
1
4
|
require 'clock/controls'
|
2
5
|
require 'identifier/uuid/controls'
|
3
6
|
|
4
|
-
require 'entity_cache/controls/id'
|
5
7
|
require 'entity_cache/controls/entity'
|
8
|
+
require 'entity_cache/controls/id'
|
6
9
|
require 'entity_cache/controls/record'
|
7
|
-
require 'entity_cache/controls/storage/persistent'
|
8
|
-
require 'entity_cache/controls/storage/temporary'
|
9
10
|
require 'entity_cache/controls/subject'
|
10
11
|
require 'entity_cache/controls/time'
|
11
12
|
require 'entity_cache/controls/version'
|
13
|
+
|
12
14
|
require 'entity_cache/controls/persist_interval'
|
15
|
+
|
16
|
+
require 'entity_cache/controls/storage/persistent'
|
17
|
+
require 'entity_cache/controls/storage/persistent/example'
|
18
|
+
require 'entity_cache/controls/storage/persistent/not_implemented'
|
19
|
+
require 'entity_cache/controls/storage/persistent/write'
|
20
|
+
|
21
|
+
require 'entity_cache/controls/storage/temporary'
|
@@ -2,7 +2,33 @@ class EntityCache
|
|
2
2
|
module Controls
|
3
3
|
module Entity
|
4
4
|
def self.example
|
5
|
-
|
5
|
+
Example.new(id, some_attr, other_attr)
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.id
|
9
|
+
ID.example
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.some_attr
|
13
|
+
'some-value'
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.other_attr
|
17
|
+
'other-value'
|
18
|
+
end
|
19
|
+
|
20
|
+
Example = Struct.new(:id, :some_attr, :other_attr)
|
21
|
+
|
22
|
+
class Example
|
23
|
+
module Transformer
|
24
|
+
def self.raw_data(instance)
|
25
|
+
instance.to_a
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.instance(raw_data)
|
29
|
+
Example.new(*raw_data)
|
30
|
+
end
|
31
|
+
end
|
6
32
|
end
|
7
33
|
end
|
8
34
|
end
|
@@ -1,28 +1,8 @@
|
|
1
1
|
class EntityCache
|
2
2
|
module Controls
|
3
3
|
module PersistInterval
|
4
|
-
|
5
|
-
|
6
|
-
Version.example - Version::Persistent.example
|
7
|
-
end
|
8
|
-
|
9
|
-
module NoStream
|
10
|
-
def self.example
|
11
|
-
Version.example
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
module Within
|
17
|
-
def self.example
|
18
|
-
Exceeds.example + 1
|
19
|
-
end
|
20
|
-
|
21
|
-
module NoStream
|
22
|
-
def self.example
|
23
|
-
Exceeds::NoStream.example + 1
|
24
|
-
end
|
25
|
-
end
|
4
|
+
def self.example
|
5
|
+
11
|
26
6
|
end
|
27
7
|
end
|
28
8
|
end
|
@@ -1,14 +1,19 @@
|
|
1
1
|
class EntityCache
|
2
2
|
module Controls
|
3
3
|
module Record
|
4
|
-
def self.example(
|
5
|
-
|
6
|
-
|
7
|
-
version ||=
|
8
|
-
|
4
|
+
def self.example(entity=nil, id: nil, version: nil, time: nil, persisted: nil, persisted_version: nil, persisted_time: nil)
|
5
|
+
entity ||= self.entity
|
6
|
+
id ||= self.id
|
7
|
+
version ||= self.version
|
8
|
+
time ||= self.time
|
9
9
|
|
10
|
-
|
11
|
-
|
10
|
+
unless persisted == false
|
11
|
+
persisted_version ||= self.persisted_version
|
12
|
+
end
|
13
|
+
|
14
|
+
unless persisted == false
|
15
|
+
persisted_time ||= self.persisted_time
|
16
|
+
end
|
12
17
|
|
13
18
|
EntityCache::Record.new(
|
14
19
|
id,
|
@@ -20,12 +25,28 @@ class EntityCache
|
|
20
25
|
)
|
21
26
|
end
|
22
27
|
|
23
|
-
|
24
|
-
|
25
|
-
|
28
|
+
def self.id
|
29
|
+
Entity.id
|
30
|
+
end
|
26
31
|
|
27
|
-
|
28
|
-
|
32
|
+
def self.entity
|
33
|
+
Entity.example
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.time
|
37
|
+
Time::Offset::Raw.example(11)
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.version
|
41
|
+
Version::Current.example
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.persisted_time
|
45
|
+
Time::Offset::Raw.example(1)
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.persisted_version
|
49
|
+
Version::Previous.example
|
29
50
|
end
|
30
51
|
end
|
31
52
|
end
|
@@ -2,38 +2,20 @@ class EntityCache
|
|
2
2
|
module Controls
|
3
3
|
module Storage
|
4
4
|
module Persistent
|
5
|
-
|
6
|
-
|
5
|
+
def self.example(subject=nil)
|
6
|
+
subject ||= Subject.example
|
7
7
|
|
8
|
-
|
9
|
-
entity, version, time = records[id]
|
10
|
-
|
11
|
-
return entity, version, time
|
12
|
-
end
|
13
|
-
|
14
|
-
def put(id, entity, version, time)
|
15
|
-
records[id] = [entity, version, time]
|
16
|
-
end
|
17
|
-
|
18
|
-
def records
|
19
|
-
@records ||= {}
|
20
|
-
end
|
21
|
-
|
22
|
-
module Assertions
|
23
|
-
def stored?(id, entity, version, time)
|
24
|
-
records[id] == [entity, version, time]
|
25
|
-
end
|
26
|
-
end
|
8
|
+
Example.build(subject)
|
27
9
|
end
|
28
10
|
|
29
|
-
def self.
|
30
|
-
|
11
|
+
def self.path(subject, id=nil)
|
12
|
+
id ||= ID.example
|
31
13
|
|
32
|
-
|
14
|
+
File.join(tmpdir, "#{subject}-#{id}.yaml")
|
33
15
|
end
|
34
16
|
|
35
|
-
def self.
|
36
|
-
|
17
|
+
def self.tmpdir
|
18
|
+
@tmpdir ||= Dir.tmpdir
|
37
19
|
end
|
38
20
|
end
|
39
21
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
class EntityCache
|
2
|
+
module Controls
|
3
|
+
module Storage
|
4
|
+
module Persistent
|
5
|
+
class Example
|
6
|
+
include EntityCache::Store::Persistent
|
7
|
+
|
8
|
+
attr_accessor :session
|
9
|
+
|
10
|
+
def configure(session: nil)
|
11
|
+
self.session = session
|
12
|
+
end
|
13
|
+
|
14
|
+
def get(id)
|
15
|
+
path = path(id)
|
16
|
+
|
17
|
+
return unless File.size?(path)
|
18
|
+
|
19
|
+
text = File.read(path)
|
20
|
+
|
21
|
+
entity, version, time = YAML.load(text)
|
22
|
+
|
23
|
+
return entity, version, time
|
24
|
+
end
|
25
|
+
|
26
|
+
def put(id, entity, version, time)
|
27
|
+
path = path(id)
|
28
|
+
|
29
|
+
text = YAML.dump([entity, version, time])
|
30
|
+
|
31
|
+
File.write(path, text)
|
32
|
+
end
|
33
|
+
|
34
|
+
def path(id)
|
35
|
+
Persistent.path(subject, id)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class EntityCache
|
2
|
+
module Controls
|
3
|
+
module Storage
|
4
|
+
module Persistent
|
5
|
+
module NotImplemented
|
6
|
+
def self.example
|
7
|
+
subject = Subject.example
|
8
|
+
|
9
|
+
Example.new(subject)
|
10
|
+
end
|
11
|
+
|
12
|
+
class Example
|
13
|
+
include EntityCache::Store::Persistent
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class EntityCache
|
2
|
+
module Controls
|
3
|
+
module Storage
|
4
|
+
module Persistent
|
5
|
+
module Write
|
6
|
+
def self.call
|
7
|
+
subject = Subject.example
|
8
|
+
|
9
|
+
text = YAML.dump([
|
10
|
+
Controls::Entity.example,
|
11
|
+
Controls::Record.persisted_version,
|
12
|
+
Controls::Record.persisted_time
|
13
|
+
])
|
14
|
+
|
15
|
+
path = Persistent.path(subject)
|
16
|
+
|
17
|
+
File.write(path, text)
|
18
|
+
|
19
|
+
return subject
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -3,9 +3,21 @@ class EntityCache
|
|
3
3
|
module Storage
|
4
4
|
module Temporary
|
5
5
|
def self.example
|
6
|
-
|
6
|
+
Example.new
|
7
|
+
end
|
8
|
+
|
9
|
+
class Example < EntityCache::Store::Temporary
|
10
|
+
def records
|
11
|
+
@records ||= {}
|
12
|
+
end
|
7
13
|
|
8
|
-
|
14
|
+
def put?(id, record=nil)
|
15
|
+
if record.nil?
|
16
|
+
records.key?(id)
|
17
|
+
else
|
18
|
+
records[id] == record
|
19
|
+
end
|
20
|
+
end
|
9
21
|
end
|
10
22
|
end
|
11
23
|
end
|
@@ -1,16 +1,5 @@
|
|
1
1
|
class EntityCache
|
2
2
|
module Controls
|
3
|
-
|
4
|
-
include Clock::Controls::Time
|
5
|
-
|
6
|
-
def self.example(time=nil, precision: nil)
|
7
|
-
precision ||= 5
|
8
|
-
|
9
|
-
Clock::Controls::Time.example(
|
10
|
-
time=nil,
|
11
|
-
precision: precision
|
12
|
-
)
|
13
|
-
end
|
14
|
-
end
|
3
|
+
Time = Clock::Controls::Time
|
15
4
|
end
|
16
5
|
end
|
@@ -2,24 +2,18 @@ class EntityCache
|
|
2
2
|
module Controls
|
3
3
|
module Version
|
4
4
|
def self.example
|
5
|
-
|
5
|
+
Current.example
|
6
6
|
end
|
7
7
|
|
8
|
-
module
|
8
|
+
module Current
|
9
9
|
def self.example
|
10
|
-
|
10
|
+
11
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
module
|
14
|
+
module Previous
|
15
15
|
def self.example
|
16
|
-
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
module Persistent
|
21
|
-
def self.example
|
22
|
-
1
|
16
|
+
Current.example - 1
|
23
17
|
end
|
24
18
|
end
|
25
19
|
end
|