rails_event_store 0.5.0 → 0.6.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 +4 -4
- data/CHANGELOG.md +5 -2
- data/README.md +3 -2
- data/lib/rails_event_store.rb +1 -5
- data/lib/rails_event_store/client.rb +1 -1
- data/lib/rails_event_store/constants.rb +1 -1
- data/lib/rails_event_store/version.rb +1 -1
- data/rails_event_store.gemspec +1 -0
- metadata +16 -7
- data/lib/rails_event_store/errors.rb +0 -3
- data/lib/rails_event_store/generators/migrate_generator.rb +0 -18
- data/lib/rails_event_store/generators/templates/migration_template.rb +0 -19
- data/lib/rails_event_store/models/event.rb +0 -12
- data/lib/rails_event_store/repositories/event_repository.rb +0 -101
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7fcb48b25744c5f50cde8d3a00322ab3cd4a86cd
|
4
|
+
data.tar.gz: e2604f6b1b50c0634052a641ac96864c87d58637
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88296f59b7700f534ba5d36e48732fd1b6598a047c9f652361e744c8981c3bec0ae22ba35cc8ea5530cebaccacb69ff2145a29c1ace1ea54ec5c033fcc8b07d2
|
7
|
+
data.tar.gz: b68122fb0239b1e5a02afdb392810775bd4a3bab9cc005bb8e8e8876c48402c9cbe88514a43c89df6128b8959a4d230296e52d471754f9fc3888c6c82f762aa5
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,11 @@
|
|
1
|
-
###
|
1
|
+
### 0.6.0 (11.04.2016)
|
2
|
+
|
3
|
+
* Change: EventRepository moved to separate gem [rails_event_store_active_record](http://github.com/arkency/rails_event_store_active_record)
|
4
|
+
* Change: rails_event_store_active_record updated to version 0.5.1 - allows to use custom event class
|
2
5
|
|
3
6
|
### 0.5.0 (21.03.2016)
|
4
7
|
|
5
|
-
* Align with
|
8
|
+
* Align with changes in `ruby_event_store` 0.5.0:
|
6
9
|
* Change: Event class refactoring to make default values more explicit
|
7
10
|
* Change: Let event broker to be given as a dependency
|
8
11
|
* Change: No nils, use symbols instead - :any & :none replaced meaningless nil value
|
data/README.md
CHANGED
@@ -6,7 +6,8 @@
|
|
6
6
|
|
7
7
|
# EventStore
|
8
8
|
|
9
|
-
A Ruby implementation of an EventStore
|
9
|
+
A Ruby implementation of an EventStore.
|
10
|
+
Default storage is events repository based on Active Record (provided by separate gem: [rails_event_store_active_record](http://github.com/arkency/rails_event_store_active_record)).
|
10
11
|
|
11
12
|
## Installation
|
12
13
|
|
@@ -19,7 +20,7 @@ gem 'rails_event_store'
|
|
19
20
|
* Use provided task to generate a table to store events in you DB.
|
20
21
|
|
21
22
|
```ruby
|
22
|
-
rails generate
|
23
|
+
rails generate rails_event_store_active_record:migration
|
23
24
|
rake db:migrate
|
24
25
|
```
|
25
26
|
|
data/lib/rails_event_store.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'ruby_event_store'
|
2
|
+
require 'rails_event_store_active_record'
|
2
3
|
|
3
4
|
module RailsEventStore
|
4
5
|
Event = RubyEventStore::Event
|
@@ -6,12 +7,7 @@ module RailsEventStore
|
|
6
7
|
EventBroker = RubyEventStore::PubSub::Broker
|
7
8
|
end
|
8
9
|
|
9
|
-
require 'rails_event_store/models/event'
|
10
|
-
require 'rails_event_store/generators/migrate_generator'
|
11
|
-
require 'rails_event_store/generators/templates/migration_template'
|
12
10
|
require 'rails_event_store/version'
|
13
|
-
require 'rails_event_store/repositories/event_repository'
|
14
11
|
require 'rails_event_store/event_handlers/slack_event_handler'
|
15
|
-
require 'rails_event_store/errors'
|
16
12
|
require 'rails_event_store/client'
|
17
13
|
require 'rails_event_store/constants'
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module RailsEventStore
|
2
2
|
class Client
|
3
3
|
|
4
|
-
def initialize(repository:
|
4
|
+
def initialize(repository: RailsEventStoreActiveRecord::EventRepository.new,
|
5
5
|
event_broker: EventBroker.new,
|
6
6
|
page_size: PAGE_SIZE)
|
7
7
|
@repository = repository
|
data/rails_event_store.gemspec
CHANGED
@@ -27,6 +27,7 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.add_development_dependency 'sqlite3'
|
28
28
|
|
29
29
|
spec.add_dependency 'ruby_event_store', '~> 0.5.0'
|
30
|
+
spec.add_dependency 'rails_event_store_active_record', '~> 0.5.1'
|
30
31
|
spec.add_dependency 'aggregate_root', '~> 0.2.1'
|
31
32
|
spec.add_dependency 'activesupport', '>= 3.0'
|
32
33
|
spec.add_dependency 'activemodel', '>= 3.0'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_event_store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- rybex
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-04-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -123,6 +123,20 @@ dependencies:
|
|
123
123
|
- - "~>"
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: 0.5.0
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: rails_event_store_active_record
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - "~>"
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: 0.5.1
|
133
|
+
type: :runtime
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - "~>"
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: 0.5.1
|
126
140
|
- !ruby/object:Gem::Dependency
|
127
141
|
name: aggregate_root
|
128
142
|
requirement: !ruby/object:Gem::Requirement
|
@@ -183,12 +197,7 @@ files:
|
|
183
197
|
- lib/rails_event_store.rb
|
184
198
|
- lib/rails_event_store/client.rb
|
185
199
|
- lib/rails_event_store/constants.rb
|
186
|
-
- lib/rails_event_store/errors.rb
|
187
200
|
- lib/rails_event_store/event_handlers/slack_event_handler.rb
|
188
|
-
- lib/rails_event_store/generators/migrate_generator.rb
|
189
|
-
- lib/rails_event_store/generators/templates/migration_template.rb
|
190
|
-
- lib/rails_event_store/models/event.rb
|
191
|
-
- lib/rails_event_store/repositories/event_repository.rb
|
192
201
|
- lib/rails_event_store/version.rb
|
193
202
|
- rails_event_store.gemspec
|
194
203
|
homepage: https://github.com/arkency/rails_event_store
|
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'rails/generators'
|
2
|
-
|
3
|
-
module RailsEventStore
|
4
|
-
class MigrateGenerator < Rails::Generators::Base
|
5
|
-
source_root File.expand_path(File.join(File.dirname(__FILE__), '../generators/templates'))
|
6
|
-
|
7
|
-
def create_migration
|
8
|
-
template "migration_template.rb", "db/migrate/#{timestamp}_create_events_table.rb"
|
9
|
-
end
|
10
|
-
|
11
|
-
private
|
12
|
-
|
13
|
-
def timestamp
|
14
|
-
Time.now.strftime("%Y%m%d%H%M%S")
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
18
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
class CreateEventsTable < ActiveRecord::Migration
|
2
|
-
|
3
|
-
def self.up
|
4
|
-
create_table(:event_store_events) do |t|
|
5
|
-
t.string :stream, null: false
|
6
|
-
t.string :event_type, null: false
|
7
|
-
t.string :event_id, null: false
|
8
|
-
t.text :metadata
|
9
|
-
t.text :data, null: false
|
10
|
-
t.datetime :created_at, null: false
|
11
|
-
end
|
12
|
-
add_index :event_store_events, :stream
|
13
|
-
add_index :event_store_events, :event_id, unique: true
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.down
|
17
|
-
drop_table :event_store_events
|
18
|
-
end
|
19
|
-
end
|
@@ -1,101 +0,0 @@
|
|
1
|
-
module RailsEventStore
|
2
|
-
module Repositories
|
3
|
-
class EventRepository
|
4
|
-
|
5
|
-
def initialize
|
6
|
-
@adapter = ::RailsEventStore::Models::Event
|
7
|
-
end
|
8
|
-
attr_reader :adapter
|
9
|
-
|
10
|
-
def create(event, stream_name)
|
11
|
-
data = event.to_h.merge!(stream: stream_name, event_type: event.class.name)
|
12
|
-
adapter.create(data)
|
13
|
-
event
|
14
|
-
end
|
15
|
-
|
16
|
-
def delete_stream(stream_name)
|
17
|
-
condition = {stream: stream_name}
|
18
|
-
adapter.destroy_all condition
|
19
|
-
nil
|
20
|
-
end
|
21
|
-
|
22
|
-
def has_event?(event_id)
|
23
|
-
adapter.exists?(event_id: event_id)
|
24
|
-
end
|
25
|
-
|
26
|
-
def last_stream_event(stream_name)
|
27
|
-
build_event_entity(adapter.where(stream: stream_name).last)
|
28
|
-
end
|
29
|
-
|
30
|
-
def get_all_events
|
31
|
-
adapter.order('id ASC').order('stream').all.map(&method(:build_event_entity))
|
32
|
-
end
|
33
|
-
|
34
|
-
def read_events_forward(stream_name, start_event_id, count)
|
35
|
-
stream = adapter.where(stream: stream_name)
|
36
|
-
unless start_event_id.equal?(:head)
|
37
|
-
starting_event = adapter.find_by(event_id: start_event_id)
|
38
|
-
stream = stream.where('id > ?', starting_event.id)
|
39
|
-
end
|
40
|
-
|
41
|
-
stream.order('id ASC').limit(count)
|
42
|
-
.map(&method(:build_event_entity))
|
43
|
-
end
|
44
|
-
|
45
|
-
def read_events_backward(stream_name, start_event_id, count)
|
46
|
-
stream = adapter.where(stream: stream_name)
|
47
|
-
unless start_event_id.equal?(:head)
|
48
|
-
starting_event = adapter.find_by(event_id: start_event_id)
|
49
|
-
stream = stream.where('id < ?', starting_event.id)
|
50
|
-
end
|
51
|
-
|
52
|
-
stream.order('id DESC').limit(count)
|
53
|
-
.map(&method(:build_event_entity))
|
54
|
-
end
|
55
|
-
|
56
|
-
def read_stream_events_forward(stream_name)
|
57
|
-
adapter.where(stream: stream_name).order('id ASC')
|
58
|
-
.map(&method(:build_event_entity))
|
59
|
-
end
|
60
|
-
|
61
|
-
def read_stream_events_backward(stream_name)
|
62
|
-
adapter.where(stream: stream_name).order('id DESC')
|
63
|
-
.map(&method(:build_event_entity))
|
64
|
-
end
|
65
|
-
|
66
|
-
def read_all_streams_forward(start_event_id, count)
|
67
|
-
stream = adapter
|
68
|
-
unless start_event_id.equal?(:head)
|
69
|
-
starting_event = adapter.find_by(event_id: start_event_id)
|
70
|
-
stream = stream.where('id > ?', starting_event.id)
|
71
|
-
end
|
72
|
-
|
73
|
-
stream.order('id ASC').limit(count)
|
74
|
-
.map(&method(:build_event_entity))
|
75
|
-
end
|
76
|
-
|
77
|
-
def read_all_streams_backward(start_event_id, count)
|
78
|
-
stream = adapter
|
79
|
-
unless start_event_id.equal?(:head)
|
80
|
-
starting_event = adapter.find_by(event_id: start_event_id)
|
81
|
-
stream = stream.where('id < ?', starting_event.id)
|
82
|
-
end
|
83
|
-
|
84
|
-
stream.order('id DESC').limit(count)
|
85
|
-
.map(&method(:build_event_entity))
|
86
|
-
end
|
87
|
-
|
88
|
-
private
|
89
|
-
|
90
|
-
def build_event_entity(record)
|
91
|
-
return nil unless record
|
92
|
-
record.event_type.constantize.new(
|
93
|
-
record.data.merge(
|
94
|
-
event_id: record.event_id,
|
95
|
-
metadata: record.metadata
|
96
|
-
)
|
97
|
-
)
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|