euston-projections 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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