entity_store 0.3.1 → 0.3.2

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: 80ef2d2f7cb967ed15151bd5d3fa17c5526c4022
4
- data.tar.gz: ee08573ec53e96fa70df0cb30c48db9df19d56de
3
+ metadata.gz: 97880958b956196cf02002393b06adf365a1bfba
4
+ data.tar.gz: 06471d12f5bacc7f5ad7409c2bf0ffa3e336b1aa
5
5
  SHA512:
6
- metadata.gz: 653358d1589d59332805e9501e41c637bc2bbb4a4292b19ca0586871cb7352cbb709f2a23e97813cfdcb2be823414b61a9f50acd01e5983c002d08dfcd4d05e3
7
- data.tar.gz: e2fde849bd73b14d086f78fb2268304c55771f85f74d21db3c0b74b4f800c8856e369767e82cdc353c8efa9cbf9d06ac7027f4ad69c8daa7cc289c903eb7d7b3
6
+ metadata.gz: 85747f4ddb273c8b9f80430445cf5100b92ebd136a4ba1e1d2a7e7017357057fbe14996cdb76d45d296958d849f9aa8eab3ec442f5397ff85ca70914ffe7e2b1
7
+ data.tar.gz: 2d1e8c46d5480b12a52b857ee1469d5a857f63ef27f6fde2c890b735c9bd08af312ef4341c7abe75ac3e61570f9cd246966240ba4ff3d3bacf0543655f84e7cf
@@ -14,10 +14,8 @@ module EntityStore
14
14
  require_relative 'entity_store/event_bus'
15
15
  require_relative 'entity_store/not_found'
16
16
 
17
- if defined?(Mongo)
18
- require_relative 'entity_store/mongo_entity_store'
19
- require_relative 'entity_store/external_store'
20
- end
17
+ require_relative 'entity_store/mongo_entity_store'
18
+ require_relative 'entity_store/external_store'
21
19
 
22
20
  class << self
23
21
  def setup
@@ -84,8 +84,16 @@ module EntityStore
84
84
  entities.update(query, { '$unset' => { 'snapshot' => 1 } }, { multi: true })
85
85
  end
86
86
 
87
- def add_event(event)
88
- events.insert({'_type' => event.class.name, '_entity_id' => BSON::ObjectId.from_string(event.entity_id) }.merge(event.attributes) ).to_s
87
+ def add_events(items)
88
+ docs = items.map do |event|
89
+ {
90
+ '_id' => BSON::ObjectId.new,
91
+ '_type' => event.class.name,
92
+ '_entity_id' => BSON::ObjectId.from_string(event.entity_id)
93
+ }.merge(event.attributes)
94
+ end
95
+
96
+ events.insert(docs)
89
97
  end
90
98
 
91
99
  # Public: loads the entity from the store, including any available snapshots
@@ -54,12 +54,15 @@ module EntityStore
54
54
  end
55
55
 
56
56
  def add_events(entity)
57
- entity.pending_events.each do |e|
58
- e.entity_id = entity.id.to_s
59
- e.entity_version = entity.version
60
- storage_client.add_event(e)
57
+ items = entity.pending_events.map do |event|
58
+ event.entity_id = entity.id.to_s
59
+ event.entity_version = entity.version
60
+ event
61
61
  end
62
- entity.pending_events.each {|e| event_bus.publish(entity.type, e) }
62
+ storage_client.add_events(items)
63
+
64
+ items.each {|e| event_bus.publish(entity.type, e) }
65
+
63
66
  entity.clear_pending_events
64
67
  end
65
68
 
@@ -1,3 +1,3 @@
1
1
  module EntityStore
2
- VERSION = "0.3.1".freeze
2
+ VERSION = "0.3.2".freeze
3
3
  end
@@ -50,10 +50,7 @@ describe MongoEntityStore do
50
50
  let(:unrelated_event) { DummyEntityNameSet.new(:entity_id => random_object_id, :entity_version => 4, :name => random_string) }
51
51
 
52
52
  before do
53
- store.add_event(second_event)
54
- store.add_event(unrelated_event)
55
- store.add_event(first_event)
56
- store.add_event(third_event)
53
+ store.add_events([ second_event, unrelated_event, first_event, third_event ])
57
54
  end
58
55
 
59
56
  subject { store.get_events( [{ id: event_entity_id, since_version: since_version }])[event_entity_id] }
@@ -40,7 +40,7 @@ describe Store do
40
40
  @entity.version = random_integer
41
41
  @entity.pending_events << double(Event, :entity_id= => true, :entity_version= => true)
42
42
  @entity.pending_events << double(Event, :entity_id= => true, :entity_version= => true)
43
- @storage_client = double("StorageClient", :add_event => true)
43
+ @storage_client = double("StorageClient", :add_events => true)
44
44
  @store = Store.new
45
45
  @store.stub(:storage_client) { @storage_client }
46
46
  @event_bus = double(EventBus, :publish => true)
@@ -50,9 +50,7 @@ describe Store do
50
50
  subject { @store.add_events(@entity) }
51
51
 
52
52
  it "adds each of the events" do
53
- @entity.pending_events.each do |e|
54
- @storage_client.should_receive(:add_event).with(e)
55
- end
53
+ @storage_client.should_receive(:add_events).with(@entity.pending_events)
56
54
  subject
57
55
  end
58
56
  it "should assign the new entity_id to each event" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: entity_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Bird
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-22 00:00:00.000000000 Z
11
+ date: 2014-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mongo