evt-message_store 1.1.0.1 → 2.3.1.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: bb701682703ac52f3b1ffa560609cb6b0c58954a33bec499419fead5e1c7ee98
4
- data.tar.gz: 7403cdf146cec248a05b53958e4eab4cc73a0f3576ef623adb369ff761ba8d96
3
+ metadata.gz: 0275af52a5677309393ba2fe0a1447042e32c9b586864eaba2b99b661f188607
4
+ data.tar.gz: f69ddf11f2594d75fdaa0711f099d0684bf2d240fd61a5cf76735f848ce91425
5
5
  SHA512:
6
- metadata.gz: 3952554446f23f64b1a7c3c8b7a7ef30e070d3b66614ba9c0f62862272318ba707c2f8e3765c7eb4d00edafa90e154d1ea001a9b1692b2016f784e0422c559f3
7
- data.tar.gz: ef0eb2a182e1001cf47de2b28ef68a39346456fd9fe7dba67998f012392c736a5dae1772cf400d665f4651ad8994587824b9a1b78d155fddf0b216cdb918bb59
6
+ metadata.gz: 33d403b5079967fa053ed4cc74c49486ae7dd64166407cf26cfdc078d2524afa34ee67a0da085eae3468241d1c88eead55ad2ade6f0a3f5cf788d1a383173cba
7
+ data.tar.gz: 057bf4f68b0ca75f1f5cba5bbfe82b031c147e0f2ec2c24c368bf094db46183b54f9c176764b8d961680ce86f2c5d6100910a434748834f273f9958430dd7a5c
@@ -11,11 +11,13 @@ require 'async_invocation'
11
11
 
12
12
  require 'message_store/expected_version'
13
13
  require 'message_store/no_stream'
14
+ require 'message_store/id'
15
+ require 'message_store/stream_name'
16
+
14
17
  require 'message_store/message_data'
15
18
  require 'message_store/message_data/hash/transform'
16
19
  require 'message_store/message_data/write'
17
20
  require 'message_store/message_data/read'
18
- require 'message_store/stream_name'
19
21
 
20
22
  require 'message_store/log'
21
23
 
@@ -1,5 +1,6 @@
1
1
  require 'securerandom'
2
2
 
3
+ require 'clock/controls'
3
4
  require 'identifier/uuid/controls'
4
5
 
5
6
  require 'message_store/controls/random_value'
@@ -1,7 +1,7 @@
1
1
  module MessageStore
2
2
  module Controls
3
3
  module Category
4
- def self.example(category: nil, randomize_category: nil)
4
+ def self.example(category: nil, type: nil, types: nil, randomize_category: nil)
5
5
  if randomize_category.nil?
6
6
  if !category.nil?
7
7
  randomize_category = false
@@ -16,6 +16,8 @@ module MessageStore
16
16
  category = "#{category}#{SecureRandom.hex(16)}XX"
17
17
  end
18
18
 
19
+ category = Controls::StreamName.stream_name(category, type: type, types: types)
20
+
19
21
  category
20
22
  end
21
23
  end
@@ -8,52 +8,54 @@ module MessageStore
8
8
 
9
9
  module Raw
10
10
  def self.example
11
- time = ::Time.parse("Jan 1 00:00:00 UTC 2000")
12
- Clock::UTC.now(time)
11
+ Clock::Controls::Time::Raw.example
13
12
  end
14
13
  end
15
14
 
16
15
  module ISO8601
17
16
  def self.example(time=nil)
18
- time ||= Raw.example
19
- Clock::UTC.iso8601(time)
17
+ Clock::Controls::Time::ISO8601.example(time)
18
+ end
19
+
20
+ def self.precision
21
+ 3
20
22
  end
21
23
  end
22
24
 
23
25
  module Processed
24
26
  def self.example(time=nil, offset_milliseconds: nil)
25
- time ||= Time::Raw.example
26
- time = Raw.example(time, offset_milliseconds: offset_milliseconds)
27
- ISO8601.example(time)
27
+ offset_milliseconds ||= self.offset_milliseconds
28
+ Clock::Controls::Time::Offset.example(offset_milliseconds, time: time, precision: ISO8601.precision)
28
29
  end
29
30
 
30
31
  module Raw
31
32
  def self.example(time=nil, offset_milliseconds: nil)
32
- time ||= Time::Raw.example
33
- offset_milliseconds ||= 11
34
- offset = Rational(offset_milliseconds, 1000)
35
- time += offset
36
- time
33
+ offset_milliseconds ||= Processed.offset_milliseconds
34
+ Clock::Controls::Time::Offset::Raw.example(offset_milliseconds, time: time, precision: ISO8601.precision)
37
35
  end
38
36
  end
37
+
38
+ def self.offset_milliseconds
39
+ 11
40
+ end
39
41
  end
40
42
 
41
43
  module Effective
42
44
  def self.example(time=nil, offset_milliseconds: nil)
43
- time ||= Time::Raw.example
44
- time = Raw.example(time, offset_milliseconds: offset_milliseconds)
45
- ISO8601.example(time)
45
+ offset_milliseconds ||= self.offset_milliseconds
46
+ Clock::Controls::Time::Offset.example(offset_milliseconds, time: time, precision: ISO8601.precision)
46
47
  end
47
48
 
48
49
  module Raw
49
50
  def self.example(time=nil, offset_milliseconds: nil)
50
- time ||= Time::Raw.example
51
- offset_milliseconds ||= 1
52
- offset = Rational(offset_milliseconds, 1000)
53
- time += offset
54
- time
51
+ offset_milliseconds ||= Effective.offset_milliseconds
52
+ Clock::Controls::Time::Offset::Raw.example(offset_milliseconds, time: time, precision: ISO8601.precision)
55
53
  end
56
54
  end
55
+
56
+ def self.offset_milliseconds
57
+ 1
58
+ end
57
59
  end
58
60
  end
59
61
  end
@@ -7,6 +7,7 @@ module MessageStore
7
7
  include Get
8
8
 
9
9
  attr_accessor :stream_name
10
+ alias :category :stream_name
10
11
 
11
12
  def batch_size
12
13
  @batch_size ||= 1
@@ -0,0 +1,45 @@
1
+ module MessageStore
2
+ module ID
3
+ Error = Class.new(RuntimeError)
4
+
5
+ def self.compound_id_separator
6
+ '+'
7
+ end
8
+
9
+ def self.id(id)
10
+ if id.is_a?(Array)
11
+ id = compound_id(id)
12
+ else
13
+ if id.nil?
14
+ raise Error, "ID must not be omitted"
15
+ end
16
+ end
17
+
18
+ id
19
+ end
20
+
21
+ def self.get(id)
22
+ id(id)
23
+ end
24
+
25
+ def self.compound_id(ids)
26
+ if ids.empty?
27
+ raise Error, "IDs must not be omitted"
28
+ end
29
+
30
+ ids.join(compound_id_separator)
31
+ end
32
+
33
+ def self.get_cardinal_id(id)
34
+ parse(id).first
35
+ end
36
+
37
+ def self.parse(id)
38
+ if id.nil?
39
+ raise Error, "ID must not be omitted"
40
+ end
41
+
42
+ id.split(compound_id_separator)
43
+ end
44
+ end
45
+ end
@@ -2,70 +2,113 @@ module MessageStore
2
2
  module StreamName
3
3
  Error = Class.new(RuntimeError)
4
4
 
5
- def self.id_delimiter
5
+ def self.id_separator
6
6
  '-'
7
7
  end
8
8
 
9
- def self.category_delimiter
9
+ def self.compound_id_separator
10
+ ID.compound_id_separator
11
+ end
12
+
13
+ def self.category_type_separator
10
14
  ':'
11
15
  end
12
16
 
13
- def self.type_delimiter
17
+ def self.compound_type_separator
14
18
  '+'
15
19
  end
16
20
 
17
- def self.stream_name(category_name, id=nil, type: nil, types: nil)
18
- if category_name == nil
19
- raise Error, "Category name must not be omitted from stream name"
21
+ def self.stream_name(category, stream_id=nil, cardinal_id: nil, id: nil, ids: nil, type: nil, types: nil)
22
+ if category == nil
23
+ raise Error, "Category must not be omitted from stream name"
24
+ end
25
+
26
+ stream_name = category
27
+
28
+ type_list = []
29
+ type_list.concat(Array(type))
30
+ type_list.concat(Array(types))
31
+
32
+ type_part = type_list.join(compound_type_separator)
33
+
34
+ if not type_part.empty?
35
+ stream_name = "#{stream_name}#{category_type_separator}#{type_part}"
20
36
  end
21
37
 
22
- types = Array(types)
23
- types.unshift(type) unless type.nil?
38
+ id_list = []
39
+ id_list << cardinal_id if not cardinal_id.nil?
24
40
 
25
- type_list = nil
26
- type_list = types.join(type_delimiter) unless types.empty?
41
+ id_list.concat(Array(stream_id))
42
+ id_list.concat(Array(id))
43
+ id_list.concat(Array(ids))
27
44
 
28
- stream_name = category_name
29
- stream_name = "#{stream_name}#{category_delimiter}#{type_list}" unless type_list.nil?
30
- stream_name = "#{stream_name}#{id_delimiter}#{id}" unless id.nil?
45
+ id_part = nil
46
+ if not id_list.empty?
47
+ id_part = ID.compound_id(id_list)
48
+ stream_name = "#{stream_name}#{id_separator}#{id_part}"
49
+ end
31
50
 
32
51
  stream_name
33
52
  end
34
53
 
35
54
  def self.split(stream_name)
36
- stream_name.split(id_delimiter, 2)
55
+ stream_name.split(id_separator, 2)
37
56
  end
38
57
 
39
58
  def self.get_id(stream_name)
40
59
  split(stream_name)[1]
41
60
  end
42
61
 
62
+ def self.get_ids(stream_name)
63
+ ids = get_id(stream_name)
64
+
65
+ return [] if ids.nil?
66
+
67
+ ID.parse(ids)
68
+ end
69
+
70
+ def self.get_cardinal_id(stream_name)
71
+ id = get_id(stream_name)
72
+
73
+ return nil if id.nil?
74
+
75
+ ID.get_cardinal_id(id)
76
+ end
77
+
43
78
  def self.get_category(stream_name)
44
79
  split(stream_name)[0]
45
80
  end
46
81
 
47
82
  def self.category?(stream_name)
48
- !stream_name.include?(id_delimiter)
83
+ !stream_name.include?(id_separator)
49
84
  end
50
85
 
51
- def self.get_type_list(stream_name)
52
- return nil unless stream_name.include?(category_delimiter)
86
+ def self.get_category_type(stream_name)
87
+ return nil unless stream_name.include?(category_type_separator)
53
88
 
54
89
  category = get_category(stream_name)
55
90
 
56
- category.split(category_delimiter)[1]
91
+ category.split(category_type_separator)[1]
92
+ end
93
+
94
+ def self.get_type(*args)
95
+ get_category_type(*args)
57
96
  end
58
97
 
59
- def self.get_types(stream_name)
60
- type_list = get_type_list(stream_name)
98
+ def self.get_category_types(stream_name)
99
+ type_list = get_type(stream_name)
61
100
 
62
101
  return [] if type_list.nil?
63
102
 
64
- type_list.split(type_delimiter)
103
+ type_list.split(compound_type_separator)
104
+ end
105
+
106
+ def self.get_types(*args)
107
+ get_category_types(*args)
65
108
  end
66
109
 
67
110
  def self.get_entity_name(stream_name)
68
- get_category(stream_name).split(category_delimiter)[0]
111
+ get_category(stream_name).split(category_type_separator)[0]
69
112
  end
70
113
  end
71
114
  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.1.0.1
4
+ version: 2.3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Eventide Project
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-30 00:00:00.000000000 Z
11
+ date: 2021-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: evt-casing
@@ -149,14 +149,13 @@ files:
149
149
  - lib/message_store/get/stream/last.rb
150
150
  - lib/message_store/get/stream/last/substitute.rb
151
151
  - lib/message_store/get/substitute.rb
152
+ - lib/message_store/id.rb
152
153
  - lib/message_store/log.rb
153
154
  - lib/message_store/message_data.rb
154
155
  - lib/message_store/message_data/hash/transform.rb
155
156
  - lib/message_store/message_data/read.rb
156
157
  - lib/message_store/message_data/write.rb
157
158
  - lib/message_store/no_stream.rb
158
- - lib/message_store/postgres
159
- - lib/message_store/postgres.rb
160
159
  - lib/message_store/read.rb
161
160
  - lib/message_store/read/iterator.rb
162
161
  - lib/message_store/stream_name.rb
@@ -165,7 +164,7 @@ homepage: https://github.com/eventide-project/message-store
165
164
  licenses:
166
165
  - MIT
167
166
  metadata: {}
168
- post_install_message:
167
+ post_install_message:
169
168
  rdoc_options: []
170
169
  require_paths:
171
170
  - lib
@@ -180,8 +179,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
180
179
  - !ruby/object:Gem::Version
181
180
  version: '0'
182
181
  requirements: []
183
- rubygems_version: 3.0.1
184
- signing_key:
182
+ rubygems_version: 3.1.2
183
+ signing_key:
185
184
  specification_version: 4
186
185
  summary: Common primitives for platform-specific message store implementations
187
186
  test_files: []
@@ -1 +0,0 @@
1
- lib/message_store/Users/sbellware/projects/eventide/message-store-postgres/lib/message_store/postgre
@@ -1 +0,0 @@
1
- lib/message_store/Users/sbellware/projects/eventide/message-store-postgres/lib/message_store/postgre