rom-event_store 0.0.3 → 0.0.4
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 +4 -4
- data/.travis.yml +2 -0
- data/CHANGELOG.md +25 -0
- data/README.md +2 -2
- data/lib/rom-event_store.rb +1 -0
- data/lib/rom/event_store/commands.rb +2 -2
- data/lib/rom/event_store/dataset.rb +41 -14
- data/lib/rom/event_store/relation.rb +7 -1
- data/lib/rom/event_store/repository.rb +2 -2
- data/lib/rom/event_store/version.rb +2 -2
- data/rom-event_store.gemspec +3 -3
- metadata +10 -9
- data/lib/rom/event_store/connection.rb +0 -36
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dd9b21f67358d6718d6f370b3189ec08aa06f037
|
|
4
|
+
data.tar.gz: 5fc12e375870ca09b599f9fd81d8ca4f0d20ca00
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a212f8ed1c9d145c23d47a303478a2869add9a178b9679429395e30d7529c2b9371a17c9b7ab53a202961291d2323ef058189274536840f742258069c5dbf411
|
|
7
|
+
data.tar.gz: 212c693398e13a6d502669c7c71490e1326f3a05cfefb7d7a677515c4f43ea4302d11c1e90ace27ffe943ed9af0d62926b8acbaa5acef15efe9c7ae5a8333dde
|
data/.travis.yml
CHANGED
|
@@ -11,6 +11,8 @@ install:
|
|
|
11
11
|
- "tar -xvzf EventStore-OSS-Linux-v3.0.3.tar.gz"
|
|
12
12
|
- "mv EventStore-OSS-Linux-v3.0.3 .event_store"
|
|
13
13
|
- "cd .event_store && ./run-node.sh --db ./ESData &"
|
|
14
|
+
- "sleep 5"
|
|
15
|
+
- "curl -X POST --user admin:changeit 'http://127.0.0.1:2113/projection/$by_category/command/enable' -H 'Content-Length: 0'"
|
|
14
16
|
- "bundle install"
|
|
15
17
|
script: "bundle exec rake ci"
|
|
16
18
|
rvm:
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
## v0.0.4 - 2015-04-05
|
|
2
|
+
### Added
|
|
3
|
+
* Asynchronous subscriptions to relations (live and catchup)
|
|
4
|
+
* Partial reads from a relation (batch reads)
|
|
5
|
+
* TCP driver as an own gem: [estore](https://github.com/rom-eventstore/estore) (help wanted!!)
|
|
6
|
+
* `estore` gem updated (general refactoring and error handling improved. WIP)
|
|
7
|
+
|
|
8
|
+
[Compare v0.0.3...v0.0.4](https://github.com/rom-eventstore/rom-event_store/compare/v0.0.3...v0.0.4)
|
|
9
|
+
|
|
10
|
+
## v0.0.3 - 2015-04-01
|
|
11
|
+
### Added
|
|
12
|
+
* [TCP driver](https://github.com/mathieuravaux/eventstore-ruby) to connect and read events from the Event Store
|
|
13
|
+
|
|
14
|
+
[Compare v0.0.2...v0.0.3](https://github.com/rom-eventstore/rom-event_store/compare/v0.0.2...v0.0.3)
|
|
15
|
+
|
|
16
|
+
## v0.0.2 - 2015-03-31
|
|
17
|
+
### Added
|
|
18
|
+
* Relation through AtomPub API using HTTP
|
|
19
|
+
* Read all events from a relation
|
|
20
|
+
* Append events to a relation
|
|
21
|
+
|
|
22
|
+
[Compare v0.0.1...v0.0.2](https://github.com/rom-eventstore/rom-event_store/compare/v0.0.3...v0.0.4)
|
|
23
|
+
|
|
24
|
+
## v0.0.1 - 2015-03-30
|
|
25
|
+
Initial release
|
data/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
[inchpages]: http://inch-ci.org/github/rom-eventstore/rom-event_store
|
|
6
6
|
[gitter]: https://gitter.im/rom-eventstore/rom-event_store?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
|
|
7
7
|
|
|
8
|
-
#
|
|
8
|
+
# ROM::EventStore
|
|
9
9
|
|
|
10
10
|
[][gem]
|
|
11
11
|
[][travis]
|
|
@@ -36,7 +36,7 @@ Or install it yourself as:
|
|
|
36
36
|
|
|
37
37
|
## Usage
|
|
38
38
|
|
|
39
|
-
See [spec/integration/
|
|
39
|
+
See [spec/integration/adapter_spec.rb](spec/integration/adapter_spec.rb) for a sample usage.
|
|
40
40
|
|
|
41
41
|
## License
|
|
42
42
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'rom/event_store'
|
|
@@ -1,48 +1,75 @@
|
|
|
1
1
|
module ROM
|
|
2
2
|
module EventStore
|
|
3
3
|
class Dataset
|
|
4
|
-
attr_reader :
|
|
4
|
+
attr_reader :category
|
|
5
5
|
|
|
6
|
-
def initialize(
|
|
7
|
-
@
|
|
6
|
+
def initialize(category, connection, options = {})
|
|
7
|
+
@category = category
|
|
8
8
|
@connection = connection
|
|
9
9
|
@options = options
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
def
|
|
13
|
-
__new__(stream:
|
|
12
|
+
def select(stream)
|
|
13
|
+
__new__(stream: stream)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def from(id)
|
|
17
|
+
__new__(from: id)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def limit(limit)
|
|
21
|
+
__new__(limit: limit)
|
|
14
22
|
end
|
|
15
23
|
|
|
16
24
|
def stream
|
|
17
25
|
stream = @options[:stream]
|
|
18
|
-
stream ? "#{
|
|
26
|
+
stream ? "#{category}-#{stream}" : "$ce-#{category}"
|
|
19
27
|
end
|
|
20
28
|
|
|
21
29
|
def events
|
|
22
|
-
@connection.read(stream,
|
|
30
|
+
@connection.read(stream, @options).sync
|
|
23
31
|
end
|
|
24
32
|
|
|
25
33
|
def append(events)
|
|
26
|
-
@connection.append(stream, events)
|
|
34
|
+
@connection.append(stream, events).sync
|
|
35
|
+
events
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def subscribe(&block)
|
|
39
|
+
subscription = @connection.subscription(stream, @options)
|
|
40
|
+
subscription.on_event(&block)
|
|
41
|
+
subscription.start
|
|
27
42
|
end
|
|
28
43
|
|
|
29
44
|
def each
|
|
30
|
-
|
|
31
|
-
events.each { |event| yield(event) }
|
|
32
|
-
else
|
|
33
|
-
to_enum
|
|
34
|
-
end
|
|
45
|
+
with_events { |event| yield(event) }
|
|
35
46
|
end
|
|
36
47
|
|
|
37
48
|
private
|
|
38
49
|
|
|
39
50
|
def __new__(new_opts = {})
|
|
40
|
-
self.class.new(@
|
|
51
|
+
self.class.new(@category, @connection, @options.merge(new_opts))
|
|
41
52
|
end
|
|
42
53
|
|
|
43
54
|
def option(option, default)
|
|
44
55
|
@options.fetch(option, default)
|
|
45
56
|
end
|
|
57
|
+
|
|
58
|
+
def with_events
|
|
59
|
+
events.each { |event| yield(dehydrate(event)) }
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def dehydrate(wrapper)
|
|
63
|
+
event = wrapper.event
|
|
64
|
+
|
|
65
|
+
{
|
|
66
|
+
id: Estore::Package.parse_uuid(event.event_id),
|
|
67
|
+
type: event.event_type,
|
|
68
|
+
data: event.data,
|
|
69
|
+
number: event.event_number,
|
|
70
|
+
created_at: Time.at(event.created_epoch / 1000)
|
|
71
|
+
}
|
|
72
|
+
end
|
|
46
73
|
end
|
|
47
74
|
end
|
|
48
75
|
end
|
|
@@ -3,7 +3,13 @@ require 'rom/relation'
|
|
|
3
3
|
module ROM
|
|
4
4
|
module EventStore
|
|
5
5
|
class Relation < ROM::Relation
|
|
6
|
-
forward :
|
|
6
|
+
forward :select, :append, :subscribe, :from, :limit
|
|
7
|
+
|
|
8
|
+
def self.inherited(base)
|
|
9
|
+
super
|
|
10
|
+
|
|
11
|
+
base.exposed_relations.merge([:subscribe, :from, :limit])
|
|
12
|
+
end
|
|
7
13
|
end
|
|
8
14
|
end
|
|
9
15
|
end
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'estore'
|
|
2
2
|
require 'rom/event_store/dataset'
|
|
3
3
|
|
|
4
4
|
module ROM
|
|
5
5
|
module EventStore
|
|
6
6
|
class Repository < ROM::Repository
|
|
7
7
|
def initialize(uri)
|
|
8
|
-
@connection =
|
|
8
|
+
@connection = Estore::Session.new(*uri.split(':'))
|
|
9
9
|
@categories = {}
|
|
10
10
|
end
|
|
11
11
|
|
data/rom-event_store.gemspec
CHANGED
|
@@ -5,7 +5,7 @@ require 'rom/event_store/version'
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |spec|
|
|
7
7
|
spec.name = 'rom-event_store'
|
|
8
|
-
spec.version =
|
|
8
|
+
spec.version = ROM::EventStore::VERSION
|
|
9
9
|
spec.authors = ['Héctor Ramón', 'Lorenzo Arribas']
|
|
10
10
|
spec.email = ['hector0193@gmail.com', 'lorenzo.s.arribas@gmail.com']
|
|
11
11
|
|
|
@@ -20,9 +20,9 @@ Gem::Specification.new do |spec|
|
|
|
20
20
|
spec.require_paths = ['lib']
|
|
21
21
|
|
|
22
22
|
spec.add_runtime_dependency 'rom', '~> 0.6'
|
|
23
|
-
spec.add_runtime_dependency 'estore', '~> 0.
|
|
23
|
+
spec.add_runtime_dependency 'estore', '~> 0.1.1'
|
|
24
24
|
|
|
25
25
|
spec.add_development_dependency 'bundler'
|
|
26
|
-
spec.add_development_dependency 'rake'
|
|
26
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
|
27
27
|
spec.add_development_dependency 'rubocop', '~> 0.28.0'
|
|
28
28
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rom-event_store
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Héctor Ramón
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: exe
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2015-04-
|
|
12
|
+
date: 2015-04-05 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rom
|
|
@@ -31,14 +31,14 @@ dependencies:
|
|
|
31
31
|
requirements:
|
|
32
32
|
- - "~>"
|
|
33
33
|
- !ruby/object:Gem::Version
|
|
34
|
-
version: 0.
|
|
34
|
+
version: 0.1.1
|
|
35
35
|
type: :runtime
|
|
36
36
|
prerelease: false
|
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
|
38
38
|
requirements:
|
|
39
39
|
- - "~>"
|
|
40
40
|
- !ruby/object:Gem::Version
|
|
41
|
-
version: 0.
|
|
41
|
+
version: 0.1.1
|
|
42
42
|
- !ruby/object:Gem::Dependency
|
|
43
43
|
name: bundler
|
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -57,16 +57,16 @@ dependencies:
|
|
|
57
57
|
name: rake
|
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
|
59
59
|
requirements:
|
|
60
|
-
- - "
|
|
60
|
+
- - "~>"
|
|
61
61
|
- !ruby/object:Gem::Version
|
|
62
|
-
version: '0'
|
|
62
|
+
version: '10.0'
|
|
63
63
|
type: :development
|
|
64
64
|
prerelease: false
|
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
|
66
66
|
requirements:
|
|
67
|
-
- - "
|
|
67
|
+
- - "~>"
|
|
68
68
|
- !ruby/object:Gem::Version
|
|
69
|
-
version: '0'
|
|
69
|
+
version: '10.0'
|
|
70
70
|
- !ruby/object:Gem::Dependency
|
|
71
71
|
name: rubocop
|
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -93,13 +93,14 @@ files:
|
|
|
93
93
|
- ".rubocop.yml"
|
|
94
94
|
- ".rubocop_todo.yml"
|
|
95
95
|
- ".travis.yml"
|
|
96
|
+
- CHANGELOG.md
|
|
96
97
|
- Gemfile
|
|
97
98
|
- LICENSE
|
|
98
99
|
- README.md
|
|
99
100
|
- Rakefile
|
|
101
|
+
- lib/rom-event_store.rb
|
|
100
102
|
- lib/rom/event_store.rb
|
|
101
103
|
- lib/rom/event_store/commands.rb
|
|
102
|
-
- lib/rom/event_store/connection.rb
|
|
103
104
|
- lib/rom/event_store/dataset.rb
|
|
104
105
|
- lib/rom/event_store/relation.rb
|
|
105
106
|
- lib/rom/event_store/repository.rb
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
require 'estore'
|
|
2
|
-
require 'json'
|
|
3
|
-
|
|
4
|
-
module ROM
|
|
5
|
-
module EventStore
|
|
6
|
-
class Connection
|
|
7
|
-
def initialize(uri)
|
|
8
|
-
host_port = uri.split(':')
|
|
9
|
-
@connection = Estore::Session.new(*host_port)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def read(stream, start, limit)
|
|
13
|
-
read = @connection.read(stream, start, limit)
|
|
14
|
-
read.sync.events.map { |event| dehydrate(event) }
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def append(stream, events)
|
|
18
|
-
@connection.append(stream, events).sync
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
private
|
|
22
|
-
|
|
23
|
-
def dehydrate(wrapper)
|
|
24
|
-
event = wrapper.event
|
|
25
|
-
|
|
26
|
-
{
|
|
27
|
-
id: Estore::Package.parse_uuid(event.event_id),
|
|
28
|
-
type: event.event_type,
|
|
29
|
-
data: event.data,
|
|
30
|
-
number: event.event_number,
|
|
31
|
-
created_at: Time.at(event.created_epoch / 1000)
|
|
32
|
-
}
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|