synchronized_model 0.3.0 → 0.3.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: 3911727754d2946a62692b62f6eac4cba5db203b
4
- data.tar.gz: 72ccddc961cada06f0bdc72a0221b4a37f165344
3
+ metadata.gz: 925b4dd303420f4380159b84be8cea2a718c161e
4
+ data.tar.gz: ffd8d2efd765cbc8d9edb46a7e26eba4774dafaa
5
5
  SHA512:
6
- metadata.gz: 92d8e60acbccc7fa41b6c52da80cd21ce86ce4c33ca9024f0141a27d0d51a32224a9654756aa0e53f8530d667ec272cfd12f7a99eec6d28055fbd763dbe162a4
7
- data.tar.gz: a2eb50e4213a1baf39b2afc6d367ea21d5a0290cf710e7623eaa05f408505635910a67f910b4d747976fd0dfe1edd328a306420071b1bb23eb8bcc588ef6f3c5
6
+ metadata.gz: 9c62e4ee4610fe98863bbc571f1699b9a24374b463f591c9cb4e673dd2c1f7bf3e5b8afb666dddd21f646c0bc64218374c6922581098ff08bb05dfba02d304ef
7
+ data.tar.gz: 536208c1982cdebcc24a3cbcd5bd064b9dbd7f15da39c15dcec7bc5d8fc7856dfba7227e2fc73654ab944b4a0f3bb542775331f91030609fa6bfa6c53af3bffc
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- synchronized_model (0.3.0)
4
+ synchronized_model (0.3.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -8,9 +8,18 @@ module SynchronizedModel
8
8
  end
9
9
 
10
10
  def call
11
- model = SynchronizedModel::ModelMessage.new(message).model
12
- model.record_timestamps = false
11
+ if model
12
+ update_model
13
+ else
14
+ log_model_not_found
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def update_model
13
21
  if chronological_update?(model)
22
+ model.record_timestamps = false
14
23
  model.save!
15
24
  else
16
25
  log_message = "Outdated message for #{model.class} " \
@@ -19,10 +28,18 @@ module SynchronizedModel
19
28
  end
20
29
  end
21
30
 
22
- private
23
-
24
31
  def chronological_update?(model)
25
32
  !(model.updated_at_was && model.updated_at_was >= model.updated_at)
26
33
  end
34
+
35
+ def model
36
+ @model ||= SynchronizedModel::ModelMessage.new(message).model
37
+ end
38
+
39
+ def log_model_not_found
40
+ log_message = "Skipped Message ID: #{message[:id]}. " \
41
+ "No #{message[:resource]} model configured with SynchronizedModel"
42
+ SynchronizedModel.logger.info(log_message)
43
+ end
27
44
  end
28
45
  end
@@ -16,25 +16,13 @@ module SynchronizedModel
16
16
  end
17
17
 
18
18
  def model
19
- @model ||= resource_class.from_queue_payload(payload)
19
+ @model ||= resource_class&.from_queue_payload(payload)
20
20
  end
21
21
 
22
22
  protected
23
23
 
24
24
  def resource_class
25
- SynchronizedModel.receive_resource_classes.fetch(
26
- resource.to_sym, NullModel
27
- )
28
- end
29
-
30
- class NullModel
31
- def self.from_queue_payload(_payload); NullModel.new; end
32
-
33
- def self.find_by(_hash); nil; end
34
-
35
- def save!; end
36
-
37
- def updated_at; nil; end
25
+ SynchronizedModel.receive_resource_classes[resource.to_sym]
38
26
  end
39
27
  end
40
28
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SynchronizedModel
4
- VERSION = '0.3.0'
4
+ VERSION = '0.3.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: synchronized_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Cranston
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-07-05 00:00:00.000000000 Z
11
+ date: 2018-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler