evt-message_store 1.0.1.2 → 1.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
  SHA256:
3
- metadata.gz: b6f8bc3eff87f99068e4ce07e8eb16e432a94670a98efc1f0c5c8bf9f088eac0
4
- data.tar.gz: 5f3e8a3652909a57c67e32af2255452bd2e08a4805f21dd070cd05b8653439b2
3
+ metadata.gz: 40121815466711f7a023e49b5c02c8439456ef0eff75171a2ba0f56513358774
4
+ data.tar.gz: 4d3ce500d096eb4b877722b8dd6052cc6bcb8f7f7b90bba124453272e07a1d9c
5
5
  SHA512:
6
- metadata.gz: f1ac5dd9d08309e768d47d826e2b8efd0a7b61f039d89f9f4da9c74a623aa6dac1f779fc228fa7d07acf0fd55543a64d9a88bdcb95db23bd399f6390deeec9a0
7
- data.tar.gz: f2d459e14781ec06b7936135fdb2db46b39ea3ed01523f3c01217aaf3c4f3b11f3db3718277bba82b4e5c58bafff78d0eb413696a4eaeba034427f9247f5a996
6
+ metadata.gz: edeac71d9c4a5d8abcea0d48e6598007b05d88760a58fc62bd456a146f84f33383e15ce179415705d404639c1db9d14812409fc86fa6ebd51318cef65915ae58
7
+ data.tar.gz: 1c3d8ae0f92318f2742e9649595110d0fa777058b9f46ba1ffcf77b0304d9bf95224ed054d8938535b9f37519d2589bd7eb6bc79d46a9bc6be0aed7a6fe5f521
@@ -20,8 +20,9 @@ require 'message_store/stream_name'
20
20
  require 'message_store/log'
21
21
 
22
22
  require 'message_store/get'
23
- require 'message_store/get/last'
24
- require 'message_store/get/last/substitute'
23
+ require 'message_store/get/substitute'
24
+ require 'message_store/get/stream/last'
25
+ require 'message_store/get/stream/last/substitute'
25
26
  require 'message_store/read/iterator'
26
27
  require 'message_store/read'
27
28
  require 'message_store/write'
@@ -16,4 +16,3 @@ require 'message_store/controls/message_data/read'
16
16
  require 'message_store/controls/write'
17
17
  require 'message_store/controls/get'
18
18
  require 'message_store/controls/get_last'
19
- require 'message_store/controls/iterator'
@@ -1,12 +1,15 @@
1
1
  module MessageStore
2
2
  module Controls
3
3
  module Get
4
- def self.example(batch_size: nil, count: nil, global_position_offset: nil)
4
+ def self.example(stream_name: nil, batch_size: nil, count: nil, global_position_offset: nil)
5
+ stream_name ||= StreamName.example
5
6
  batch_size ||= 1
6
7
  count ||= 1
7
8
  global_position_offset ||= -> (x) { x ** 2 }
8
9
 
9
- get = MessageStore::Get::Substitute.build(batch_size: batch_size)
10
+ get = MessageStore::Get::Substitute.build
11
+ get.stream_name = stream_name
12
+ get.batch_size = batch_size
10
13
 
11
14
  elements = (0..(count - 1)).to_a
12
15
 
@@ -10,7 +10,7 @@ module MessageStore
10
10
  end
11
11
 
12
12
  class Example
13
- include MessageStore::Get::Last
13
+ include MessageStore::Get::Stream::Last
14
14
 
15
15
  attr_writer :session
16
16
  def session
@@ -3,7 +3,13 @@ module MessageStore
3
3
  module Read
4
4
  def self.example(stream_name: nil)
5
5
  stream_name ||= StreamName.example
6
- Example.build(stream_name)
6
+
7
+ read = Example.build(stream_name)
8
+
9
+ get = Get.example(stream_name: stream_name)
10
+ read.iterator.get = get
11
+
12
+ read
7
13
  end
8
14
 
9
15
  class Example
@@ -8,63 +8,9 @@ module MessageStore
8
8
  include Log::Dependency
9
9
 
10
10
  abstract :call
11
- end
12
- end
13
-
14
- class Substitute
15
- include Initializer
16
- include Virtual
17
-
18
- include Get
19
-
20
- initializer na(:batch_size)
21
-
22
- def batch_size
23
- @batch_size ||= 1
24
- end
25
-
26
- def items
27
- @items ||= []
28
- end
29
-
30
- def self.build(batch_size: nil, session: nil)
31
- new(batch_size)
32
- end
33
-
34
- def call(stream_name=nil, position: nil)
35
- position ||= 0
36
-
37
- logger.trace(tag: :get) { "Getting (Position: #{position}, Batch Size: #{batch_size}, Stream Name: #{stream_name.inspect})" }
38
-
39
- logger.debug(tag: :data) { "Items: \n#{items.pretty_inspect}" }
40
- logger.debug(tag: :data) { "Position: #{position.inspect}" }
41
- logger.debug(tag: :data) { "Batch Size: #{batch_size.inspect}" }
42
-
43
- unless self.class.category?(stream_name)
44
- index = (items.index { |i| i.position >= position })
45
- else
46
- index = (items.index { |i| i.global_position >= position })
47
- end
48
-
49
- logger.debug(tag: :data) { "Index: #{index.inspect}" }
50
-
51
- if index.nil?
52
- items = []
53
- else
54
- range = index..(index + batch_size - 1)
55
- logger.debug(tag: :data) { "Range: #{range.pretty_inspect}" }
56
-
57
- items = self.items[range]
58
- end
59
-
60
- logger.info(tag: :data) { "Got: \n#{items.pretty_inspect}" }
61
- logger.info(tag: :get) { "Finished getting (Position: #{position}, Stream Name: #{stream_name.inspect})" }
62
-
63
- items
64
- end
65
-
66
- def self.category?(stream_name)
67
- !stream_name.include?('-')
11
+ abstract :stream_name
12
+ abstract :batch_size
13
+ abstract :last_position
68
14
  end
69
15
  end
70
16
  end
@@ -0,0 +1,64 @@
1
+ module MessageStore
2
+ module Get
3
+ module Stream
4
+ module Last
5
+ def self.included(cls)
6
+ cls.class_exec do
7
+ include Dependency
8
+ include Virtual
9
+ include Log::Dependency
10
+
11
+ extend Build
12
+ extend Call
13
+ extend Configure
14
+
15
+ prepend InstanceActuator
16
+
17
+ virtual :configure
18
+ abstract :call
19
+
20
+ const_set :Substitute, Substitute
21
+ end
22
+ end
23
+
24
+ module InstanceActuator
25
+ def call(stream_name)
26
+ logger.trace(tag: :get) { "Getting last message data (Stream Name: #{stream_name})" }
27
+
28
+ message_data = super
29
+
30
+ logger.info(tag: :get) { "Finished getting message data (Stream Name: #{stream_name})" }
31
+ logger.info(tags: [:data, :message_data]) { message_data.pretty_inspect }
32
+
33
+ message_data
34
+ end
35
+ end
36
+
37
+ module Build
38
+ def build(session: nil)
39
+ instance = new
40
+ instance.configure(session: session)
41
+ instance
42
+ end
43
+ end
44
+
45
+ module Configure
46
+ def configure(receiver, session: nil, attr_name: nil)
47
+ attr_name ||= :get_last
48
+
49
+ instance = build(session: session)
50
+ receiver.public_send("#{attr_name}=", instance)
51
+ instance
52
+ end
53
+ end
54
+
55
+ module Call
56
+ def call(stream_name, session: nil)
57
+ instance = build(session: session)
58
+ instance.(stream_name)
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,29 @@
1
+ module MessageStore
2
+ module Get
3
+ module Stream
4
+ module Last
5
+ module Substitute
6
+ def self.build
7
+ GetLast.new
8
+ end
9
+
10
+ class GetLast
11
+ include Get::Stream::Last
12
+
13
+ def call(stream_name)
14
+ streams[stream_name]
15
+ end
16
+
17
+ def set(stream_name, message_data)
18
+ streams[stream_name] = message_data
19
+ end
20
+
21
+ def streams
22
+ @streams ||= {}
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,72 @@
1
+ module MessageStore
2
+ module Get
3
+ class Substitute
4
+ include Initializer
5
+ include Virtual
6
+
7
+ include Get
8
+
9
+ attr_accessor :stream_name
10
+
11
+ def batch_size
12
+ @batch_size ||= 1
13
+ end
14
+ attr_writer :batch_size
15
+
16
+ def items
17
+ @items ||= []
18
+ end
19
+
20
+ def self.build
21
+ new
22
+ end
23
+
24
+ def call(position)
25
+ position ||= 0
26
+
27
+ logger.trace(tag: :get) { "Getting (Position: #{position}, Stream Name: #{stream_name.inspect}, Batch Size: #{batch_size})" }
28
+
29
+ logger.debug(tag: :data) { "Items: \n#{items.pretty_inspect}" }
30
+ logger.debug(tag: :data) { "Position: #{position.inspect}" }
31
+ logger.debug(tag: :data) { "Batch Size: #{batch_size.inspect}" }
32
+
33
+ # No specialized Gets for substitute
34
+ # Complexity has to be inline for the control
35
+ # Scott, Tue Oct 1 2019
36
+ unless self.class.category_stream?(stream_name)
37
+ index = (items.index { |i| i.position >= position })
38
+ else
39
+ index = (items.index { |i| i.global_position >= position })
40
+ end
41
+
42
+ logger.debug(tag: :data) { "Index: #{index.inspect}" }
43
+
44
+ if index.nil?
45
+ items = []
46
+ else
47
+ range = index..(index + batch_size - 1)
48
+ logger.debug(tag: :data) { "Range: #{range.pretty_inspect}" }
49
+
50
+ items = self.items[range]
51
+ end
52
+
53
+ logger.info(tag: :data) { "Got: \n#{items.pretty_inspect}" }
54
+ logger.info(tag: :get) { "Finished getting (Position: #{position}, Stream Name: #{stream_name.inspect})" }
55
+
56
+ items
57
+ end
58
+
59
+ def last_position(batch)
60
+ if self.class.category_stream?(stream_name)
61
+ batch.last.global_position
62
+ else
63
+ batch.last.position
64
+ end
65
+ end
66
+
67
+ def self.category_stream?(stream_name)
68
+ StreamName.category?(stream_name)
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1 @@
1
+ lib/message_store/Users/sbellware/projects/eventide/message-store-postgres/lib/message_store/postgre
@@ -0,0 +1 @@
1
+ lib/message_store/Users/sbellware/projects/eventide/message-store-postgres/lib/message_store/postgre
@@ -24,6 +24,7 @@ module MessageStore
24
24
  module Build
25
25
  def build(stream_name, position: nil, batch_size: nil, session: nil, **arguments)
26
26
  new(stream_name, position, batch_size).tap do |instance|
27
+ Iterator.configure(instance, position)
27
28
  instance.configure(session: session, **arguments)
28
29
  end
29
30
  end
@@ -1,23 +1,12 @@
1
1
  module MessageStore
2
2
  module Read
3
- module Iterator
4
- def self.included(cls)
5
- cls.class_exec do
6
- include Dependency
7
- include Initializer
8
- include Virtual
9
- include Log::Dependency
3
+ class Iterator
4
+ include Dependency
5
+ include Initializer
6
+ include Virtual
7
+ include Log::Dependency
10
8
 
11
- extend Build
12
- extend Configure
13
-
14
- dependency :get, Get
15
-
16
- initializer :stream_name
17
-
18
- abstract :last_position
19
- end
20
- end
9
+ dependency :get, Get
21
10
 
22
11
  attr_accessor :batch
23
12
 
@@ -35,21 +24,17 @@ module MessageStore
35
24
  get.batch_size
36
25
  end
37
26
 
38
- module Build
39
- def build(stream_name, position: nil)
40
- new(stream_name).tap do |instance|
41
- instance.starting_position = position
42
- Log.get(self).debug { "Built Iterator (Stream Name: #{stream_name}, Starting Position: #{position.inspect})" }
43
- end
27
+ def self.build(position=nil)
28
+ new.tap do |instance|
29
+ instance.starting_position = position
30
+ Log.get(self).debug { "Built Iterator (Starting Position: #{position.inspect})" }
44
31
  end
45
32
  end
46
33
 
47
- module Configure
48
- def configure(receiver, stream_name, attr_name: nil, position: nil)
49
- attr_name ||= :iterator
50
- instance = build(stream_name, position: position)
51
- receiver.public_send "#{attr_name}=", instance
52
- end
34
+ def self.configure(receiver, position=nil, attr_name: nil)
35
+ attr_name ||= :iterator
36
+ instance = build(position)
37
+ receiver.public_send "#{attr_name}=", instance
53
38
  end
54
39
 
55
40
  def next
@@ -87,7 +72,7 @@ module MessageStore
87
72
 
88
73
  logger.trace "Getting batch (Position: #{position.inspect})"
89
74
 
90
- batch = get.(stream_name, position: position)
75
+ batch = get.(position)
91
76
 
92
77
  logger.debug { "Finished getting batch (Count: #{batch.length}, Position: #{position.inspect})" }
93
78
 
@@ -107,6 +92,10 @@ module MessageStore
107
92
  next_position
108
93
  end
109
94
 
95
+ def last_position
96
+ get.last_position(batch)
97
+ end
98
+
110
99
  def reset(batch)
111
100
  logger.trace { "Resetting batch" }
112
101
 
@@ -163,13 +152,12 @@ module MessageStore
163
152
  false
164
153
  end
165
154
 
166
- class Substitute
167
- include Read::Iterator
168
-
169
- initializer :stream_name
155
+ ## Need not exist?
156
+ class Substitute < Iterator
157
+ ## include Read::Iterator
170
158
 
171
159
  def self.build()
172
- new('some_stream_name')
160
+ new
173
161
  end
174
162
  end
175
163
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evt-message_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1.2
4
+ version: 1.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: 2019-09-24 00:00:00.000000000 Z
11
+ date: 2019-10-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: evt-casing
@@ -134,7 +134,6 @@ files:
134
134
  - lib/message_store/controls/get.rb
135
135
  - lib/message_store/controls/get_last.rb
136
136
  - lib/message_store/controls/id.rb
137
- - lib/message_store/controls/iterator.rb
138
137
  - lib/message_store/controls/message_data.rb
139
138
  - lib/message_store/controls/message_data/hash.rb
140
139
  - lib/message_store/controls/message_data/metadata.rb
@@ -147,14 +146,17 @@ files:
147
146
  - lib/message_store/controls/write.rb
148
147
  - lib/message_store/expected_version.rb
149
148
  - lib/message_store/get.rb
150
- - lib/message_store/get/last.rb
151
- - lib/message_store/get/last/substitute.rb
149
+ - lib/message_store/get/stream/last.rb
150
+ - lib/message_store/get/stream/last/substitute.rb
151
+ - lib/message_store/get/substitute.rb
152
152
  - lib/message_store/log.rb
153
153
  - lib/message_store/message_data.rb
154
154
  - lib/message_store/message_data/hash/transform.rb
155
155
  - lib/message_store/message_data/read.rb
156
156
  - lib/message_store/message_data/write.rb
157
157
  - lib/message_store/no_stream.rb
158
+ - lib/message_store/postgres
159
+ - lib/message_store/postgres.rb
158
160
  - lib/message_store/read.rb
159
161
  - lib/message_store/read/iterator.rb
160
162
  - lib/message_store/stream_name.rb
@@ -1,26 +0,0 @@
1
- module MessageStore
2
- module Controls
3
- module Iterator
4
- def self.example(stream_name: nil, position: nil)
5
- stream_name ||= StreamName.example
6
- Example.build(stream_name, position: position)
7
- end
8
-
9
- class Example
10
- include MessageStore::Read::Iterator
11
-
12
- def last_position
13
- unless self.class.category?(stream_name)
14
- batch.last.position
15
- else
16
- batch.last.global_position
17
- end
18
- end
19
-
20
- def self.category?(stream_name)
21
- !stream_name.include?('-')
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,62 +0,0 @@
1
- module MessageStore
2
- module Get
3
- module Last
4
- def self.included(cls)
5
- cls.class_exec do
6
- include Dependency
7
- include Virtual
8
- include Log::Dependency
9
-
10
- extend Build
11
- extend Call
12
- extend Configure
13
-
14
- prepend InstanceActuator
15
-
16
- virtual :configure
17
- abstract :call
18
-
19
- const_set :Substitute, Substitute
20
- end
21
- end
22
-
23
- module InstanceActuator
24
- def call(stream_name)
25
- logger.trace(tag: :get) { "Getting last message data (Stream Name: #{stream_name})" }
26
-
27
- message_data = super
28
-
29
- logger.info(tag: :get) { "Finished getting message data (Stream Name: #{stream_name})" }
30
- logger.info(tags: [:data, :message_data]) { message_data.pretty_inspect }
31
-
32
- message_data
33
- end
34
- end
35
-
36
- module Build
37
- def build(session: nil)
38
- instance = new
39
- instance.configure(session: session)
40
- instance
41
- end
42
- end
43
-
44
- module Configure
45
- def configure(receiver, session: nil, attr_name: nil)
46
- attr_name ||= :get_last
47
-
48
- instance = build(session: session)
49
- receiver.public_send("#{attr_name}=", instance)
50
- instance
51
- end
52
- end
53
-
54
- module Call
55
- def call(stream_name, session: nil)
56
- instance = build(session: session)
57
- instance.(stream_name)
58
- end
59
- end
60
- end
61
- end
62
- end
@@ -1,27 +0,0 @@
1
- module MessageStore
2
- module Get
3
- module Last
4
- module Substitute
5
- def self.build
6
- GetLast.new
7
- end
8
-
9
- class GetLast
10
- include Get::Last
11
-
12
- def call(stream_name)
13
- streams[stream_name]
14
- end
15
-
16
- def set(stream_name, message_data)
17
- streams[stream_name] = message_data
18
- end
19
-
20
- def streams
21
- @streams ||= {}
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end