evt-consumer-event_store 0.0.1.0 → 0.1.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ecbcf1c2cc9462f85d925ec840c42526f7594861
|
4
|
+
data.tar.gz: 382ab57e19bd27af87a8967ec83a4e4734e91bd0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4131ba217f00e3a07a29c0038bf47340003d1954224bcbda1a1e12603eb475f47b1466766a3f725cfe61bd591bcc248cda47dbd5f69245e5652bf739e33f2b19
|
7
|
+
data.tar.gz: 0c2272922b85c1a662147f0386f4048239a7517c66b5edf6c22c33d23a3b8fc05639b9c552345ee582219c4ae59b5fba7c1c47b40c5aac1ca922b7b2d3370978
|
data/lib/consumer/event_store.rb
CHANGED
@@ -3,6 +3,7 @@ require 'consumer/controls'
|
|
3
3
|
require 'consumer/event_store/controls/category'
|
4
4
|
require 'consumer/event_store/controls/event_data'
|
5
5
|
require 'consumer/event_store/controls/handle'
|
6
|
+
require 'consumer/event_store/controls/position_stream'
|
6
7
|
require 'consumer/event_store/controls/stream'
|
7
8
|
require 'consumer/event_store/controls/stream_name'
|
8
9
|
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Consumer
|
2
|
+
module EventStore
|
3
|
+
module Controls
|
4
|
+
module PositionStream
|
5
|
+
module Write
|
6
|
+
def self.call(stream_name=nil, position: nil)
|
7
|
+
stream_name ||= StreamName.example type: 'position'
|
8
|
+
position ||= 0
|
9
|
+
|
10
|
+
message = PositionStore::PositionUpdated.new
|
11
|
+
message.position = position
|
12
|
+
|
13
|
+
Messaging::EventStore::Write.(message, stream_name)
|
14
|
+
|
15
|
+
return stream_name
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module Consumer
|
2
|
+
module EventStore
|
3
|
+
class PositionStore
|
4
|
+
include Consumer::PositionStore
|
5
|
+
|
6
|
+
initializer :stream_name
|
7
|
+
|
8
|
+
dependency :get_last, EventSource::EventStore::HTTP::Get::Last
|
9
|
+
dependency :session, EventSource::EventStore::HTTP::Session
|
10
|
+
dependency :write, ::Messaging::EventStore::Write
|
11
|
+
|
12
|
+
def self.build(stream_name, session: nil)
|
13
|
+
stream = EventSource::Stream.build stream_name
|
14
|
+
|
15
|
+
position_stream_name = StreamName.canonize stream.name
|
16
|
+
|
17
|
+
instance = new position_stream_name
|
18
|
+
EventSource::EventStore::HTTP::Session.configure instance, session: session
|
19
|
+
instance.configure
|
20
|
+
instance
|
21
|
+
end
|
22
|
+
|
23
|
+
def configure
|
24
|
+
EventSource::EventStore::HTTP::Get::Last.configure self, session: session
|
25
|
+
Messaging::EventStore::Write.configure self, session: session
|
26
|
+
end
|
27
|
+
|
28
|
+
def get
|
29
|
+
event_data = get_last.(stream_name)
|
30
|
+
|
31
|
+
return nil if event_data.nil?
|
32
|
+
|
33
|
+
message = Messaging::Message::Import.(event_data, PositionUpdated)
|
34
|
+
message.position
|
35
|
+
end
|
36
|
+
|
37
|
+
def put(position)
|
38
|
+
message = PositionUpdated.build :position => position
|
39
|
+
|
40
|
+
write.(message, stream_name)
|
41
|
+
|
42
|
+
message
|
43
|
+
end
|
44
|
+
|
45
|
+
class PositionUpdated
|
46
|
+
include Messaging::Message
|
47
|
+
|
48
|
+
attribute :position, Integer
|
49
|
+
end
|
50
|
+
|
51
|
+
module StreamName
|
52
|
+
def self.canonize(stream_name)
|
53
|
+
stream = EventSource::Stream.build stream_name
|
54
|
+
|
55
|
+
return stream.name if stream.type == 'position'
|
56
|
+
|
57
|
+
stream_name = "#{stream.category}:position"
|
58
|
+
|
59
|
+
stream_name << "-#{stream.id}" if stream.id
|
60
|
+
|
61
|
+
EventSource::EventStore::HTTP::StreamName.canonize stream_name
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: evt-consumer-event_store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.0.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: 2017-01-
|
11
|
+
date: 2017-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: evt-consumer
|
@@ -64,9 +64,11 @@ files:
|
|
64
64
|
- lib/consumer/event_store/controls/consumer.rb
|
65
65
|
- lib/consumer/event_store/controls/event_data.rb
|
66
66
|
- lib/consumer/event_store/controls/handle.rb
|
67
|
+
- lib/consumer/event_store/controls/position_stream.rb
|
67
68
|
- lib/consumer/event_store/controls/stream.rb
|
68
69
|
- lib/consumer/event_store/controls/stream_name.rb
|
69
70
|
- lib/consumer/event_store/event_store.rb
|
71
|
+
- lib/consumer/event_store/position_store.rb
|
70
72
|
- lib/consumer/event_store/subscription.rb
|
71
73
|
homepage: https://github.com/eventide-project/consumer-event-store
|
72
74
|
licenses:
|