external_services 0.1.5 → 0.1.6

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YWNlM2UzYTQxZGE4ZmNiMDVmMTA3ZTc3ZjI3OTc1MjE5MWViYmNiYg==
4
+ NDU3NjA4NTljMWEwODUxMDRiNzM4YjYzZGU1YzQ4NTRhZDkzOGMwOA==
5
5
  data.tar.gz: !binary |-
6
- Mjg2YmE2MmIzZDcwYTdmYTY3OGY5NWE1NmZkY2QyM2RkMmFkOWE5OA==
6
+ OTVhY2JhMjUzM2NhZjJiMDkyODM3MWRkZDZhN2UxM2ViMTc2YTZiNA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NTMzOGQzZTdmMmZjZDg0ODY1NzM3MmVlNTliM2Y4ZDk1ZGI5ZDI1ZGM0NDlh
10
- MGM1NGQ3MmRjYTgwN2RhMmYxM2QwNDVlZDdjZTdiZjhlNTFjNzhhOGQ0ZjNl
11
- NGIxMTdjZmEzYjdhZTA0NTg3MzhkOGZlODMwZmVmZTI3MjI1ZDM=
9
+ OTQxOTVkYzNiZDZhZGRiNmY1MzE1NmE4YTBlYTlhZGUxMzhjYTc5NTNlNDE4
10
+ Mjg3YzhlNTQyMjgxZjY2ZDU1ZTk5M2RlYTAyNWUyNDg4YzUxOTQ2Yjc3MTJk
11
+ Njc2ZTExYTJmMmE1ZThiMGVlZGFkYWRlM2JiZjlhNGY5NjlmY2U=
12
12
  data.tar.gz: !binary |-
13
- ZmNmNDE2MTIzMzQ2ZjYzNWUyMTVmODdkMzU0ZGE0OWUyZDFlOTI4MWM3YzE1
14
- ZjhjNDQwY2ZmNmQ2YzQ4MzMyYzVmZGQzNTY3NmE5YzcwOWFiYzI4MmY3OThi
15
- MjA4YmQyZTMyYTM1YWM1Nzc4NjM5ZGQ3Mjk5YzUyYTllZjJmOTc=
13
+ MGEyNzQ2ZmEyMmU4NWMxZmZhY2M2ODVlMmJmZGJkZWQ4MDU3NGY3NDdiOGY1
14
+ YzNiNDE3OGE4YTE1MDRiNTIzZThkMjk3OGMzMTZmNDVkMmY5ZmMyN2IwYTdl
15
+ NzQyYTQ2ZjI0NzgwYTZkM2QwNTMwNmVjOGIxNmEyNTBiNzlhNDc=
@@ -11,6 +11,7 @@ module ExternalServices
11
11
  serialize :options, JSON
12
12
 
13
13
  scope :unprocessed, -> { where(processed_at: nil) }
14
+ scope :to_create, ->(obj) { where(initiator: obj, method: :post) }
14
15
 
15
16
  before_validation :assign_queue
16
17
  before_validation :process_data
@@ -2,4 +2,4 @@ en:
2
2
  activerecord:
3
3
  errors:
4
4
  messages:
5
- external_services_not_synced: "Not all external services are synced"
5
+ external_services_sync_in_process: "External services sync is in process now"
@@ -102,8 +102,8 @@ module ExternalServices
102
102
  public_send(:"build_#{service_assoc}") if public_send(service_assoc).blank?
103
103
  end
104
104
 
105
- before_update :halt_on_external_services_unsynced
106
- before_destroy :halt_on_external_services_unsynced
105
+ before_update :halt_on_external_services_syncing
106
+ before_destroy :halt_on_external_services_syncing
107
107
  end
108
108
 
109
109
  after_save :"#{name}_on_create", if: :id_changed?
@@ -134,9 +134,9 @@ module ExternalServices
134
134
  end
135
135
  protected :"#{name}_on_revive"
136
136
 
137
- protected def halt_on_external_services_unsynced
138
- unless external_services_synced?
139
- errors.add :base, :external_services_not_synced
137
+ protected def halt_on_external_services_syncing
138
+ if external_services_syncing?
139
+ errors.add :base, :external_services_sync_in_process
140
140
  if ::ActiveRecord::VERSION::MAJOR < 5
141
141
  return false
142
142
  else
@@ -153,6 +153,7 @@ module ExternalServices
153
153
  def define_external_service_sync_methods(name, _options = {})
154
154
  service_assoc = :"#{name}_service"
155
155
  synced_method = :"#{name}_service_synced?"
156
+ syncing_method = :"#{name}_service_syncing?"
156
157
  disabled_method = :"#{name}_api_disabled"
157
158
 
158
159
  syncs_module = Module.new do
@@ -162,11 +163,22 @@ module ExternalServices
162
163
  public_send(service_assoc).external_id?
163
164
  end
164
165
 
166
+ define_method syncing_method do
167
+ action_class = "ExternalServices::ApiActions::#{name.to_s.camelize}".constantize
168
+ action_class.to_create(self).unprocessed.exists?
169
+ end
170
+
165
171
  define_method :external_services_synced? do
166
172
  result = (!defined?(super) || super())
167
173
  result &&= public_send(synced_method) unless public_send(disabled_method)
168
174
  result
169
175
  end
176
+
177
+ define_method :external_services_syncing? do
178
+ result = (!defined?(super) || super())
179
+ result &&= public_send(syncing_method) unless public_send(disabled_method)
180
+ result
181
+ end
170
182
  end
171
183
 
172
184
  include syncs_module
@@ -1,3 +1,3 @@
1
1
  module ExternalServices
2
- VERSION = '0.1.5'.freeze
2
+ VERSION = '0.1.6'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: external_services
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Gnuskov