rails_event_store 0.6.0 → 0.6.1

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
  SHA1:
3
- metadata.gz: 7fcb48b25744c5f50cde8d3a00322ab3cd4a86cd
4
- data.tar.gz: e2604f6b1b50c0634052a641ac96864c87d58637
3
+ metadata.gz: 69cc1d3ee940054aa247a3effcbc4590a9c87305
4
+ data.tar.gz: 40e656548799d5bcf0c1921bbf914d75d07d389f
5
5
  SHA512:
6
- metadata.gz: 88296f59b7700f534ba5d36e48732fd1b6598a047c9f652361e744c8981c3bec0ae22ba35cc8ea5530cebaccacb69ff2145a29c1ace1ea54ec5c033fcc8b07d2
7
- data.tar.gz: b68122fb0239b1e5a02afdb392810775bd4a3bab9cc005bb8e8e8876c48402c9cbe88514a43c89df6128b8959a4d230296e52d471754f9fc3888c6c82f762aa5
6
+ metadata.gz: 0637153e87843e2e23cc1705b5e09a2dd997af2116419c5ae4990ce1c5e04bbc95dd4e98a5afbb95756a57cabf43e8ac686861fed714d4e492b5817791e549a7
7
+ data.tar.gz: f4741353b9109b2a981c24d900d5e32f2f34ce8d2817265b1577c7bdf7c5be7fb6f937f9e971433664c9c832eb2ed6c09533e9369471e23a3c0c709d604ce1a2
@@ -1,3 +1,7 @@
1
+ ### 0.6.1 (25.05.2016)
2
+
3
+ * Allow to read events backward PR #32 (bugfix)
4
+
1
5
  ### 0.6.0 (11.04.2016)
2
6
 
3
7
  * Change: EventRepository moved to separate gem [rails_event_store_active_record](http://github.com/arkency/rails_event_store_active_record)
@@ -0,0 +1,27 @@
1
+ # Contributing to RailsEventStore
2
+
3
+ Any kind of contribution is welcomed. Here is a few guidelines that we need contributors to follow.
4
+
5
+ ## Found a bug? Have a question?
6
+
7
+ * [Create a new issue](https://github.com/arkency/rails_event_store/issues/new), assuming one does not already exist.
8
+ * Clearly describe the issue including steps to reproduce when it is a bug.
9
+ * If possible provide a Pull Request with failing test case.
10
+
11
+ ## Getting Started
12
+
13
+ * Make sure you have a [GitHub account](https://github.com/signup/free).
14
+ * [Fork the repository](https://help.github.com/articles/fork-a-repo/) on GitHub.
15
+
16
+ ## Making Changes
17
+
18
+ * Create a feature branch from where you want to base your work.
19
+ * Do your work. Please try to keep your commits small and focussed.
20
+ * Make sure you have added the necessary tests for your changes.
21
+ * Push your changes to a feature branch in your fork of the repository.
22
+ * Submit a pull request to the RailsEventStore repository.
23
+
24
+ # Additional Resources
25
+
26
+ * [General GitHub documentation](http://help.github.com/)
27
+ * [GitHub pull request documentation](http://help.github.com/send-pull-requests/)
data/README.md CHANGED
@@ -9,206 +9,13 @@
9
9
  A Ruby implementation of an EventStore.
10
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)).
11
11
 
12
- ## Installation
12
+ # Documentation
13
13
 
14
- * Add following line to your application's Gemfile:
14
+ All documentation and sample codes are available at [http://railseventstore.arkency.com](http://railseventstore.arkency.com)
15
15
 
16
- ```ruby
17
- gem 'rails_event_store'
18
- ```
16
+ # Contributing
19
17
 
20
- * Use provided task to generate a table to store events in you DB.
21
-
22
- ```ruby
23
- rails generate rails_event_store_active_record:migration
24
- rake db:migrate
25
- ```
26
-
27
- ## Usage
28
-
29
- To communicate with ES you have to create instance of `RailsEventStore::Client` class.
30
-
31
- ```ruby
32
- client = RailsEventStore::Client.new
33
- ```
34
-
35
- #### Creating new event
36
-
37
- Firstly you have to define own event model extending `RailsEventStore::Event` class.
38
-
39
- ```ruby
40
- class OrderCreated < RailsEventStore::Event
41
- end
42
-
43
- # or
44
-
45
- OrderCreated = Class.new(RailsEventStore::Event)
46
- ```
47
-
48
- ```ruby
49
- stream_name = "order_1"
50
- event = OrderCreated.new(
51
- data: "sample",
52
- event_id: "b2d506fd-409d-4ec7-b02f-c6d2295c7edd"
53
- )
54
- #publishing event for specific stream
55
- client.publish_event(event, stream_name)
56
-
57
- #publishing global event. In this case stream_name is 'all'.
58
- client.publish_event(event)
59
- ```
60
-
61
- #### Creating new event with optimistic locking:
62
-
63
- ```ruby
64
- class OrderCreated < RailsEventStore::Event
65
- end
66
- ```
67
-
68
- ```ruby
69
- stream_name = "order_1"
70
- event = OrderCreated.new(
71
- data: "sample",
72
- event_id: "b2d506fd-409d-4ec7-b02f-c6d2295c7edd"
73
- )
74
- expected_version = "850c347f-423a-4158-a5ce-b885396c5b73" #last event_id
75
- client.publish_event(event, stream_name, expected_version)
76
- ```
77
-
78
- #### Reading stream's events forward in batch - starting from first event
79
-
80
- ```ruby
81
- stream_name = "order_1"
82
- count = 40
83
- client.read_events_forward(stream_name, :head, count)
84
- ```
85
-
86
- In this case `:head` means first event of the stream.
87
-
88
- #### Reading stream's events forward in batch - staring from given event
89
-
90
- ```ruby
91
- # last_read_event is any domain event read or published by rails_event_store
92
-
93
- stream_name = "order_1"
94
- start = last_read_event.event_id
95
- count = 40
96
- client.read_events_forward(stream_name, start, count)
97
- ```
98
-
99
- #### Reading stream's events backward in batch
100
-
101
- As in examples above, just use `read_events_backward` instead of `read_events_forward`.
102
- In this case `:head` means last event of the stream.
103
-
104
- #### Reading all events from stream forward
105
-
106
- This method allows us to load all stream's events ascending.
107
-
108
- ```ruby
109
- stream_name = "order_1"
110
- client.read_stream_events_forward(stream_name)
111
- ```
112
-
113
- #### Reading all events from stream forward
114
-
115
- This method allows us to load all stream's events descending.
116
-
117
- ```ruby
118
- stream_name = "order_1"
119
- client.read_stream_events_backward(stream_name)
120
- ```
121
-
122
- #### Reading all events forward
123
-
124
- This method allows us to load all stored events ascending.
125
-
126
- This will read first 100 domain events stored in event store.
127
-
128
- ```ruby
129
- client.read_all_streams_forward(:head, 100)
130
- ```
131
-
132
- When not specified it reads events starting from `:head` (first domain event
133
- stored in event store) and reads up to `RailsEventStore::PAGE_SIZE`
134
- domain events.
135
-
136
- ```ruby
137
- client.read_all_streams_forward
138
- ```
139
-
140
- You could also read batch of domain events starting from any read or published event.
141
-
142
- ```ruby
143
- client.read_all_streams_forward(last_read_event.event_id, 100)
144
- ```
145
-
146
- #### Reading all events backward
147
-
148
- This method allows us to load all stored events descending.
149
-
150
- This will read last 100 domain events stored in event store.
151
- ```ruby
152
- client.read_all_streams_backward(:head, 100)
153
- ```
154
-
155
- When not specified it reads events starting from `:head` (last domain event
156
- stored in event store) and reads up to `RailsEventStore::PAGE_SIZE`
157
- domain events.
158
-
159
- ```ruby
160
- client.read_all_streams_backward
161
- ```
162
-
163
- #### Deleting stream
164
-
165
- You can permanently delete all events from a specific stream. Use this wisely.
166
-
167
- ```ruby
168
- stream_name = "product_1"
169
- client.delete_stream(stream_name)
170
- ```
171
-
172
- #### Subscribing to events
173
-
174
- To listen on specific events synchronously you have to create subscriber representation. The only requirement is that subscriber class has to implement the 'handle_event(event)' method.
175
-
176
- ```ruby
177
- class InvoiceReadModel
178
- def handle_event(event)
179
- #we deal here with event's data
180
- end
181
- end
182
- ```
183
-
184
- * You can subscribe on specific set of events
185
-
186
- ```ruby
187
- invoice = InvoiceReadModel.new
188
- client.subscribe(invoice, [PriceChanged, ProductAdded])
189
- ```
190
-
191
- * You can also listen on all incoming events
192
-
193
- ```ruby
194
- invoice = InvoiceReadModel.new
195
- client.subscribe_to_all_events(invoice)
196
- ```
197
-
198
- #### Building an event sourced application with RailsEventStore gem
199
-
200
- ArrgegateRoot module & AggregateReporitory have been extracted from RailsEventStore to separate gem.
201
- See [aggregate_root](https://github.com/arkency/aggregate_root) gem readme to find help how to start.
202
- Also [this example](https://github.com/mpraglowski/cqrs-es-sample-with-res) might be useful.
203
-
204
- #### Resources
205
-
206
- There're already few blogposts about Rails EventStore. Check them out:
207
-
208
- * [Why use Event Sourcing](http://blog.arkency.com/2015/03/why-use-event-sourcing/)
209
- * [The Event Store for Rails developers](http://blog.arkency.com/2015/04/the-event-store-for-rails-developers/)
210
- * [Fast introduction to Event Sourcing for Ruby programmers](http://blog.arkency.com/2015/03/fast-introduction-to-event-sourcing-for-ruby-programmers/)
211
- * [Why I want to introduce mutation testing to the rails_event_store gem](http://blog.arkency.com/2015/04/why-i-want-to-introduce-mutation-testing-to-the-rails-event-store-gem/)
18
+ Check the contribution guide on [CONTRIBUTING.md](https://github.com/arkency/rails_event_store/blob/master/CONTRIBUTING.md)
212
19
 
213
20
  ## About
214
21
 
@@ -26,16 +26,28 @@ module RailsEventStore
26
26
  end
27
27
  alias :read_events :read_events_forward
28
28
 
29
+ def read_events_backward(stream_name, start = :head, count = page_size)
30
+ event_store.read_events_backward(stream_name, start, count)
31
+ end
32
+
29
33
  def read_stream_events_forward(stream_name)
30
34
  event_store.read_stream_events_forward(stream_name)
31
35
  end
32
36
  alias :read_all_events :read_stream_events_forward
33
37
 
38
+ def read_stream_events_backward(stream_name)
39
+ event_store.read_stream_events_backward(stream_name)
40
+ end
41
+
34
42
  def read_all_streams_forward(start = :head, count = page_size)
35
43
  event_store.read_all_streams_forward(start, count)
36
44
  end
37
45
  alias :read_all_streams :read_all_streams_forward
38
46
 
47
+ def read_all_streams_backward(start = :head, count = page_size)
48
+ event_store.read_all_streams_backward(start, count)
49
+ end
50
+
39
51
  def subscribe(subscriber, event_types)
40
52
  event_store.subscribe(subscriber, event_types)
41
53
  end
@@ -1,3 +1,3 @@
1
1
  module RailsEventStore
2
- VERSION = '0.6.0'
2
+ VERSION = '0.6.1'
3
3
  end
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.6.0
4
+ version: 0.6.1
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-04-11 00:00:00.000000000 Z
12
+ date: 2016-05-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -190,6 +190,7 @@ files:
190
190
  - ".gitignore"
191
191
  - ".travis.yml"
192
192
  - CHANGELOG.md
193
+ - CONTRIBUTING.md
193
194
  - Gemfile
194
195
  - LICENSE
195
196
  - README.md