evt-message_store 1.0.1.2 → 1.1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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