euston-projections 1.0.2 → 1.0.3

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.
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'euston-projections'
3
- s.version = '1.0.2'
3
+ s.version = '1.0.3'
4
4
  s.platform = RUBY_PLATFORM.to_s == 'java' ? 'java' : Gem::Platform::RUBY
5
5
  s.authors = ['Lee Henson', 'Guy Boertje']
6
6
  s.email = ['lee.m.henson@gmail.com', 'guyboertje@gmail.com']
@@ -26,8 +26,8 @@ Gem::Specification.new do |s|
26
26
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
27
27
 
28
28
  s.add_dependency 'activesupport', '>= 3.0.10'
29
- s.add_dependency 'euston-eventstore', '~> 1.2.2'
30
- s.add_dependency 'mongoid', '~> 2.1.0'
29
+ s.add_dependency 'euston-eventstore', '~> 1.2.3'
30
+ s.add_dependency 'mongoid', '>= 2.1.0'
31
31
 
32
32
  s.add_development_dependency 'awesome_print', '~> 0.4.0'
33
33
  s.add_development_dependency 'fuubar', '~> 0.0.0'
@@ -7,13 +7,13 @@ module Euston
7
7
  def if_unhandled obj, headers
8
8
  return if obj.already_processed_message? headers.id
9
9
 
10
+ yield
11
+
10
12
  obj.add_to_history headers.id
11
13
 
12
14
  unless headers.source_message.nil? || obj.already_processed_message?(headers.source_message[:headers][:id])
13
15
  obj.add_to_history headers.source_message[:headers][:id]
14
16
  end
15
-
16
- yield
17
17
  end
18
18
 
19
19
  def if_unhandled_or_new document_type, id, headers
@@ -1,30 +1,37 @@
1
1
  module Euston
2
- module Projections
3
- module MongoProjection
4
- extend ActiveSupport::Concern
5
- include Mongoid::Document
2
+ module Projections
3
+ module MongoProjection
4
+ extend ActiveSupport::Concern
5
+ include Mongoid::Document
6
6
 
7
- included do
8
- embeds_many :historical_messages, as: :historical, class_name: 'Euston::Projections::HistoricalMessage'
9
- end
7
+ included do
8
+ embeds_many :historical_messages, as: :historical, class_name: 'Euston::Projections::HistoricalMessage'
9
+ end
10
10
 
11
- def add_to_history message_id
12
- return if already_processed_message? message_id
11
+ module ClassMethods
12
+ def get(mongo_spec)
13
+ where(mongo_spec).first rescue nil
14
+ end
15
+ end
13
16
 
14
- historical_messages << HistoricalMessage.new(message_id: message_id)
15
- end
17
+ module InstanceMethods
18
+ def add_to_history message_id
19
+ return if already_processed_message? message_id
20
+ historical_messages << HistoricalMessage.new(message_id: message_id)
21
+ end
16
22
 
17
- def already_processed_message? message_id
18
- historical_messages.any? { |m| m.message_id == message_id }
19
- end
23
+ def already_processed_message? *message_ids
24
+ (processed_message_ids & message_ids).size == message_ids.size
25
+ end
20
26
 
21
- def processed_message_ids
22
- historical_messages.map { |m| m.message_id }
23
- end
27
+ def processed_message_ids
28
+ historical_messages.map { |m| m.message_id }
29
+ end
24
30
 
25
- def prune_history_older_than time
26
- historical_messages.reject! { |m| m.timestamp < time }
27
- end
31
+ def prune_history_older_than time
32
+ historical_messages.reject! { |m| m.timestamp < time }
28
33
  end
29
34
  end
30
35
  end
36
+ end
37
+ end
@@ -1,5 +1,5 @@
1
1
  module Euston
2
2
  module Projections
3
- VERSION = "1.0.2"
3
+ VERSION = "1.0.3"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: euston-projections
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-10-24 00:00:00.000000000 Z
13
+ date: 2011-10-31 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
17
- requirement: &70276251472860 !ruby/object:Gem::Requirement
17
+ requirement: &75412080 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,32 +22,32 @@ dependencies:
22
22
  version: 3.0.10
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70276251472860
25
+ version_requirements: *75412080
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: euston-eventstore
28
- requirement: &70276251472260 !ruby/object:Gem::Requirement
28
+ requirement: &75411700 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: 1.2.2
33
+ version: 1.2.3
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *70276251472260
36
+ version_requirements: *75411700
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: mongoid
39
- requirement: &70276251471380 !ruby/object:Gem::Requirement
39
+ requirement: &75411450 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
- - - ~>
42
+ - - ! '>='
43
43
  - !ruby/object:Gem::Version
44
44
  version: 2.1.0
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *70276251471380
47
+ version_requirements: *75411450
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: awesome_print
50
- requirement: &70276251470800 !ruby/object:Gem::Requirement
50
+ requirement: &75410910 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: 0.4.0
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *70276251470800
58
+ version_requirements: *75410910
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: fuubar
61
- requirement: &70276251470220 !ruby/object:Gem::Requirement
61
+ requirement: &75410560 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ~>
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: 0.0.0
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *70276251470220
69
+ version_requirements: *75410560
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rspec
72
- requirement: &70276251469540 !ruby/object:Gem::Requirement
72
+ requirement: &75410200 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ~>
@@ -77,7 +77,7 @@ dependencies:
77
77
  version: 2.6.0
78
78
  type: :development
79
79
  prerelease: false
80
- version_requirements: *70276251469540
80
+ version_requirements: *75410200
81
81
  description: ''
82
82
  email:
83
83
  - lee.m.henson@gmail.com