evt-entity_snapshot-postgres 0.2.2.3 → 0.2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/entity_snapshot/postgres/controls/snapshot/put.rb +20 -0
- data/lib/entity_snapshot/postgres/controls/snapshot/read_only.rb +13 -0
- data/lib/entity_snapshot/postgres/controls.rb +2 -0
- data/lib/entity_snapshot/postgres/get.rb +35 -0
- data/lib/entity_snapshot/postgres/postgres.rb +7 -28
- data/lib/entity_snapshot/postgres/read_only.rb +30 -0
- data/lib/entity_snapshot/postgres/stream_name.rb +17 -0
- data/lib/entity_snapshot/postgres.rb +6 -0
- metadata +8 -4
- data/lib/entity_snapshot/loader.rb +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a4830021eb2636549b9ee6e4c57b8dcafe0c918e9de922e65f3159bc8becf7d7
|
4
|
+
data.tar.gz: e5cfa201fc1e1cf6c923788d0c47cd9fca7dc82421ce988258e1ce29a36bf00c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d65b464f31d3eed81d07884eba68387e2d434a3459b8ed2ff8229b81caf6936d1942a18870553fa7f152e00db61d53c221ec1f0b34758a5ba736842ce13fab03
|
7
|
+
data.tar.gz: d5f51acbd3de3b1b3b2fccb81b4e88fec018172ac8ce44d69c37ba1a02434ef9aea97cec7b39b75f3ac97b99595fd2ca0bb048c97722184fe5914bc603d9f1a5
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module EntitySnapshot
|
2
|
+
class Postgres
|
3
|
+
module Controls
|
4
|
+
module Snapshot
|
5
|
+
module Put
|
6
|
+
def self.call(id=nil, entity: nil, version: nil, time: nil)
|
7
|
+
id ||= ID.example
|
8
|
+
entity ||= Entity.example
|
9
|
+
version ||= Version.example
|
10
|
+
time ||= Time::Raw.example
|
11
|
+
|
12
|
+
snapshot = Snapshot.example
|
13
|
+
|
14
|
+
snapshot.put(id, entity, version, time)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -9,5 +9,7 @@ require 'entity_snapshot/postgres/controls/batch'
|
|
9
9
|
require 'entity_snapshot/postgres/controls/entity'
|
10
10
|
require 'entity_snapshot/postgres/controls/random_value'
|
11
11
|
require 'entity_snapshot/postgres/controls/snapshot'
|
12
|
+
require 'entity_snapshot/postgres/controls/snapshot/read_only'
|
13
|
+
require 'entity_snapshot/postgres/controls/snapshot/put'
|
12
14
|
require 'entity_snapshot/postgres/controls/write'
|
13
15
|
require 'entity_snapshot/postgres/controls/entity_store'
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module EntitySnapshot
|
2
|
+
class Postgres
|
3
|
+
module Get
|
4
|
+
def self.prepended(cls)
|
5
|
+
cls.class_exec do
|
6
|
+
include StreamName
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def get(id)
|
11
|
+
stream_name = snapshot_stream_name(id)
|
12
|
+
|
13
|
+
logger.trace(tags: [:snapshot, :cache, :get]) { "Reading snapshot (Stream: #{stream_name.inspect}, Entity Class: #{entity_class.name})" }
|
14
|
+
|
15
|
+
event_data = read.(stream_name)
|
16
|
+
|
17
|
+
if event_data.nil?
|
18
|
+
logger.debug(tags: [:snapshot, :cache, :get]) { "No snapshot record (Stream: #{stream_name.inspect}, Entity Class: #{entity_class.name})" }
|
19
|
+
return
|
20
|
+
end
|
21
|
+
|
22
|
+
entity_data = event_data.data[:entity_data]
|
23
|
+
|
24
|
+
entity = Transform::Read.instance(entity_data, entity_class)
|
25
|
+
|
26
|
+
version = event_data.data[:entity_version]
|
27
|
+
time = event_data.time
|
28
|
+
|
29
|
+
logger.debug(tags: [:snapshot, :cache, :get]) { "Read snapshot (Stream: #{stream_name.inspect}, Entity Class: #{entity_class.name}, Version: #{version.inspect}, Time: #{time.utc.iso8601(3)})" }
|
30
|
+
|
31
|
+
return entity, version, time
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -1,8 +1,12 @@
|
|
1
1
|
module EntitySnapshot
|
2
2
|
class Postgres
|
3
3
|
include Log::Dependency
|
4
|
+
|
5
|
+
prepend Get
|
4
6
|
include EntityCache::Store::External
|
5
7
|
|
8
|
+
include StreamName
|
9
|
+
|
6
10
|
dependency :write, MessageStore::Postgres::Put
|
7
11
|
dependency :read, MessageStore::Postgres::Get::Last
|
8
12
|
|
@@ -10,11 +14,10 @@ module EntitySnapshot
|
|
10
14
|
|
11
15
|
alias_method :entity_class, :subject
|
12
16
|
|
13
|
-
def
|
14
|
-
entity_class_name = entity_class.name.split('::')
|
15
|
-
entity_cateogry = Casing::Camel.(entity_class_name)
|
17
|
+
def category
|
18
|
+
*, entity_class_name = entity_class.name.split('::')
|
16
19
|
|
17
|
-
|
20
|
+
Casing::Camel.(entity_class_name)
|
18
21
|
end
|
19
22
|
|
20
23
|
def configure(session: nil)
|
@@ -53,30 +56,6 @@ module EntitySnapshot
|
|
53
56
|
position
|
54
57
|
end
|
55
58
|
|
56
|
-
def get(id)
|
57
|
-
stream_name = snapshot_stream_name(id)
|
58
|
-
|
59
|
-
logger.trace(tags: [:snapshot, :cache, :get]) { "Reading snapshot (Stream: #{stream_name.inspect}, Entity Class: #{entity_class.name})" }
|
60
|
-
|
61
|
-
event_data = read.(stream_name)
|
62
|
-
|
63
|
-
if event_data.nil?
|
64
|
-
logger.debug(tags: [:snapshot, :cache, :get]) { "No snapshot record (Stream: #{stream_name.inspect}, Entity Class: #{entity_class.name})" }
|
65
|
-
return
|
66
|
-
end
|
67
|
-
|
68
|
-
entity_data = event_data.data[:entity_data]
|
69
|
-
|
70
|
-
entity = Transform::Read.instance(entity_data, entity_class)
|
71
|
-
|
72
|
-
version = event_data.data[:entity_version]
|
73
|
-
time = event_data.time
|
74
|
-
|
75
|
-
logger.debug(tags: [:snapshot, :cache, :get]) { "Read snapshot (Stream: #{stream_name.inspect}, Entity Class: #{entity_class.name}, Version: #{version.inspect}, Time: #{time.utc.iso8601(3)})" }
|
76
|
-
|
77
|
-
return entity, version, time
|
78
|
-
end
|
79
|
-
|
80
59
|
Error = Class.new(RuntimeError)
|
81
60
|
end
|
82
61
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module EntitySnapshot
|
2
|
+
class Postgres
|
3
|
+
class ReadOnly
|
4
|
+
include Log::Dependency
|
5
|
+
|
6
|
+
prepend Get
|
7
|
+
include EntityCache::Store::External
|
8
|
+
|
9
|
+
dependency :read, MessageStore::Postgres::Get::Last
|
10
|
+
|
11
|
+
attr_accessor :session
|
12
|
+
|
13
|
+
alias_method :entity_class, :subject
|
14
|
+
|
15
|
+
def category
|
16
|
+
*, entity_class_name = entity_class.name.split('::')
|
17
|
+
|
18
|
+
Casing::Camel.(entity_class_name)
|
19
|
+
end
|
20
|
+
|
21
|
+
def configure(session: nil)
|
22
|
+
MessageStore::Postgres::Session.configure(self, session: session)
|
23
|
+
MessageStore::Postgres::Get::Last.configure(self, session: self.session, attr_name: :read)
|
24
|
+
end
|
25
|
+
|
26
|
+
def put(*)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module EntitySnapshot
|
2
|
+
class Postgres
|
3
|
+
module StreamName
|
4
|
+
extend self
|
5
|
+
|
6
|
+
def self.included(cls)
|
7
|
+
cls.class_exec do
|
8
|
+
include Messaging::StreamName
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def snapshot_stream_name(id, category=nil)
|
13
|
+
stream_name(id, category, type: 'snapshot')
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -5,4 +5,10 @@ require 'entity_store'
|
|
5
5
|
|
6
6
|
require 'entity_snapshot/postgres/log'
|
7
7
|
require 'entity_snapshot/postgres/recorded'
|
8
|
+
|
9
|
+
require 'entity_snapshot/postgres/stream_name'
|
10
|
+
|
11
|
+
require 'entity_snapshot/postgres/get'
|
12
|
+
|
8
13
|
require 'entity_snapshot/postgres/postgres'
|
14
|
+
require 'entity_snapshot/postgres/read_only'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: evt-entity_snapshot-postgres
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- The Eventide Project
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: evt-entity_store
|
@@ -58,7 +58,6 @@ executables: []
|
|
58
58
|
extensions: []
|
59
59
|
extra_rdoc_files: []
|
60
60
|
files:
|
61
|
-
- lib/entity_snapshot/loader.rb
|
62
61
|
- lib/entity_snapshot/postgres.rb
|
63
62
|
- lib/entity_snapshot/postgres/controls.rb
|
64
63
|
- lib/entity_snapshot/postgres/controls/batch.rb
|
@@ -68,13 +67,18 @@ files:
|
|
68
67
|
- lib/entity_snapshot/postgres/controls/message.rb
|
69
68
|
- lib/entity_snapshot/postgres/controls/random_value.rb
|
70
69
|
- lib/entity_snapshot/postgres/controls/snapshot.rb
|
70
|
+
- lib/entity_snapshot/postgres/controls/snapshot/put.rb
|
71
|
+
- lib/entity_snapshot/postgres/controls/snapshot/read_only.rb
|
71
72
|
- lib/entity_snapshot/postgres/controls/stream_name.rb
|
72
73
|
- lib/entity_snapshot/postgres/controls/time.rb
|
73
74
|
- lib/entity_snapshot/postgres/controls/version.rb
|
74
75
|
- lib/entity_snapshot/postgres/controls/write.rb
|
76
|
+
- lib/entity_snapshot/postgres/get.rb
|
75
77
|
- lib/entity_snapshot/postgres/log.rb
|
76
78
|
- lib/entity_snapshot/postgres/postgres.rb
|
79
|
+
- lib/entity_snapshot/postgres/read_only.rb
|
77
80
|
- lib/entity_snapshot/postgres/recorded.rb
|
81
|
+
- lib/entity_snapshot/postgres/stream_name.rb
|
78
82
|
homepage: https://github.com/eventide-project/entity-snapshot-postgres
|
79
83
|
licenses:
|
80
84
|
- MIT
|
@@ -95,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
95
99
|
version: '0'
|
96
100
|
requirements: []
|
97
101
|
rubyforge_project:
|
98
|
-
rubygems_version: 2.7.
|
102
|
+
rubygems_version: 2.7.6
|
99
103
|
signing_key:
|
100
104
|
specification_version: 4
|
101
105
|
summary: Projected entity snapshotting for Postgres
|
@@ -1 +0,0 @@
|
|
1
|
-
lib/entity_snapshot/postgres.rb
|