eco-helpers 2.1.8 → 2.1.9

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
  SHA256:
3
- metadata.gz: 34fabf1bbcb318ac7860992bc5a24a5b27e7941e6976cda455d1e65e274fa16c
4
- data.tar.gz: e44bc288d08d82ce98921f63c978d84e8813883a729e17a718978aab293d9c44
3
+ metadata.gz: dac932bad9c679aa2f0c5aaa3a5c33ed16f04bde3ca37c55e6b19ae2cae6a418
4
+ data.tar.gz: 7d533e95f2738ba4633ac4e62ea06ff414de63b059fbc5f532b2fde4d5940233
5
5
  SHA512:
6
- metadata.gz: a94bc6ca7d5c012dc03491e6e96456d4ae620c4ecfc52023716525caadb4e6683e49de8fe8d56479dc883b4710bef1c2a3b9f51fd4a7d6e7da52e0cf1d15cb50
7
- data.tar.gz: 7ca163e67e3675bf3d0a84b4f11cb57cf25c164b169d418164da94963cfdbdcb5d6cc8b8ae78fb5311e955119190b93d254c715e24a05de73f90974e6ed154dd
6
+ metadata.gz: 3bfb8e874d539c0a8d24ba1a4858130fb48c2a6e905f425bf7ca530d29c05bb01fd371a8d0fa58a9c736bd82f18409867461c6e3f3e2405a5135a700ad4f7784
7
+ data.tar.gz: a707033b2e34ca9fbc5c98514319a5d2d034aa8f37d6fd7b81ffa2d0eaddd516c9aac4471393284334225c03b7c75cdcc0cc2ac8938530cb8d53e5de23f52d68
data/CHANGELOG.md CHANGED
@@ -1,12 +1,23 @@
1
1
  # Change Log
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
- ## [2.1.9] - 2022-11-xx
4
+ ## [2.1.10] - 2022-11-xx
5
5
 
6
6
  ### Added
7
7
  ### Changed
8
8
  ### Fixed
9
9
 
10
+ ## [2.1.9] - 2022-11-29
11
+
12
+ ### Changed
13
+ - upgrade `ecoportal-api-v2` **gem** dependency
14
+ - upgrade `ecoportal-api-graphql` **gem** dependency
15
+
16
+ ### Fixed
17
+ - `Eco::API::Session::Batch::Job`
18
+ - Ability to skip prefilter of entries with no `id` on `:update`
19
+ - Enhanced error tracking (bug resilience)
20
+
10
21
  ## [2.1.8] - 2022-11-18
11
22
 
12
23
  ### Added
data/eco-helpers.gemspec CHANGED
@@ -31,8 +31,8 @@ Gem::Specification.new do |spec|
31
31
  spec.add_development_dependency "redcarpet", ">= 3.5.1", "< 3.6"
32
32
 
33
33
  spec.add_dependency 'ecoportal-api', '>= 0.8.5', '< 0.9'
34
- spec.add_dependency 'ecoportal-api-v2', '>= 0.9.6', '< 0.10'
35
- spec.add_dependency 'ecoportal-api-graphql', '>= 0.1.10', '< 0.2'
34
+ spec.add_dependency 'ecoportal-api-v2', '>= 0.9.7', '< 0.10'
35
+ spec.add_dependency 'ecoportal-api-graphql', '>= 0.1.11', '< 0.2'
36
36
  spec.add_dependency 'aws-sdk-s3', '>= 1.83.0', '< 2'
37
37
  spec.add_dependency 'aws-sdk-ses', '>= 1.36.0', '< 2'
38
38
  spec.add_dependency 'dotenv', '>= 2.7.6', '< 2.8'
@@ -34,7 +34,10 @@ module Eco
34
34
  # @param type [Symbol] a valid batch operation.
35
35
  # @param usecase [Eco::API::UseCases::UseCase, nil] when provided: `usecase` that generated this `batch job`.
36
36
  # This is necessary to know the `options` used to run the usecase, which could modify the `Batch::Job` behviour.
37
- def initialize(e, name:, type:, sets:, usecase: nil)
37
+ # @param accept_update_with_no_id [Boolean] temporary contingency
38
+ # This parameter has been added due to a bug on server side.
39
+ # An external_id is still required.
40
+ def initialize(e, name:, type:, sets:, usecase: nil, accept_update_with_no_id: false)
38
41
  raise "A name is required to refer a job. Given: #{name}" if !name
39
42
  raise "Type should be one of #{self.class.types}. Given: #{type}" unless self.class.valid_type?(type)
40
43
  raise "Sets should be some of #{self.class.sets}. Given: #{sets}" unless self.class.valid_sets?(sets)
@@ -46,6 +49,7 @@ module Eco
46
49
  @sets = [sets].flatten.compact
47
50
  @usecase = usecase
48
51
  @feedback = Eco::API::Session::Batch::Feedback.new(job: self)
52
+ @accept_update_with_no_id = accept_update_with_no_id
49
53
  reset
50
54
  end
51
55
 
@@ -244,12 +248,18 @@ module Eco
244
248
  # - The contingency above wouldn't be necessary if the server worked perfectly.
245
249
  def processed_queue
246
250
  pre_filtered = @queue.select do |entry|
251
+ by_pass_filter = false
247
252
  if unexisting = entry.new? && !entry.id && type != :create
248
253
  ref = Eco::API::Session::Batch::Feedback.person_ref(entry)
249
- msg = "Job ('#{name}':#{type}): excluded unexisting entry (failed creation): #{ref}"
254
+ msg = "Job ('#{name}':#{type}): "
255
+ if (by_pass_filter = entry.external_id && @accept_update_with_no_id)
256
+ msg << "entry errored on creation (failed creation) but will try with person code: #{ref}"
257
+ else
258
+ msg << "excluded unexisting entry (failed creation): #{ref}"
259
+ end
250
260
  session.logger.warn(msg)
251
261
  end
252
- !unexisting
262
+ !unexisting || by_pass_filter
253
263
  end
254
264
  pre_filtered.each {|e| @callbacks[e].call(e) if @callbacks.key?(e) }
255
265
  apply_policies(api_included(pre_filtered)).select do |e|
@@ -321,9 +331,25 @@ module Eco
321
331
  status.queue.map do |entry|
322
332
  if status.success?(entry)
323
333
  if type == :create && entry.respond_to?(:id=)
324
- entry.id = status[entry].body["id"]
334
+ entry.id = status[entry].body["id"].tap do |id|
335
+ if id.to_s.strip.empty?
336
+ ref = Eco::API::Session::Batch::Feedback.person_ref(entry)
337
+ msg = "Entry has been created but API did not return its 'id': #{ref}"
338
+ if response = status[entry]
339
+ msg << " (Response - status: #{response.status.code}; body: #{response.body.pretty_inspect})"
340
+ end
341
+ logger.error(msg)
342
+ end
343
+ end
344
+ end
345
+ if entry.respond_to?(:consolidate!)
346
+ entry.consolidate!
347
+ if entry.respond_to?(:dirty?) && entry.dirty? && entry.respond_to?(:as_update)
348
+ msg = "After consolidate there's still a dirty model:\n"
349
+ msg << entry.as_update.pretty_inspect
350
+ logger.debug(msg)
351
+ end
325
352
  end
326
- entry.consolidate! if entry.respond_to?(:consolidate!)
327
353
  #else # do not entry.reset! (keep track on changes still)
328
354
  end
329
355
  end
@@ -49,9 +49,9 @@ module Eco
49
49
  # - the block should only be passed when creating the job
50
50
  # @param [see @Eco::API::Session::Batch::Jobs#new]
51
51
  # @return [Eco::API::Session::Batch::Job]
52
- def job(name, type: nil, sets: nil, usecase: nil, &block)
52
+ def job(name, type: nil, sets: nil, usecase: nil, accept_update_with_no_id: false, &block)
53
53
  fatal "Can't give a job post-launch callback &block to an already existing job" if exists?(name)
54
- new(name, type: type, sets: sets, usecase: usecase, &block) unless exists?(name)
54
+ new(name, type: type, sets: sets, usecase: usecase, accept_update_with_no_id: accept_update_with_no_id, &block) unless exists?(name)
55
55
  self[name]
56
56
  end
57
57
 
@@ -61,10 +61,10 @@ module Eco
61
61
  # @yieldparam job [Eco::API::Session::Batch::Job] the job we have launched against the server.
62
62
  # @yieldparam status [Eco::API::Session::Batch::Status] the status of the batch job launch.
63
63
  # @return [Eco::API::Session::Batch::Job]
64
- def new(name, type:, sets:, usecase: nil, &block)
64
+ def new(name, type:, sets:, usecase: nil, accept_update_with_no_id: false, &block)
65
65
  fatal "Can't create job named '#{name}' because it already exists." if exists?(name)
66
66
 
67
- Batch::Job.new(enviro, name: name, type: type, sets: sets, usecase: usecase).tap do |job|
67
+ Batch::Job.new(enviro, name: name, type: type, sets: sets, usecase: usecase, accept_update_with_no_id: accept_update_with_no_id).tap do |job|
68
68
  add(job, &block)
69
69
  end
70
70
  end
@@ -251,8 +251,8 @@ module Eco
251
251
  # Shortcut to create a job of certain type within a group
252
252
  # @param [see @Eco::API::Session::Batch::Jobs#new]
253
253
  # @return [Eco::API::Session::Batch::Job]
254
- def new_job(group, name, type, usecase, sets = [:core, :details, :account], &block)
255
- job_group(group).new(name, usecase: usecase, type: type, sets: sets, &block)
254
+ def new_job(group, name, type, usecase, sets = [:core, :details, :account], accept_update_with_no_id = false, &block)
255
+ job_group(group).new(name, usecase: usecase, type: type, sets: sets, accept_update_with_no_id: accept_update_with_no_id, &block)
256
256
  end
257
257
 
258
258
  # @see Eco::API::Session::Batch::JobsGroups#launch
data/lib/eco/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Eco
2
- VERSION = "2.1.8"
2
+ VERSION = "2.1.9"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eco-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.8
4
+ version: 2.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Segura
@@ -136,7 +136,7 @@ dependencies:
136
136
  requirements:
137
137
  - - ">="
138
138
  - !ruby/object:Gem::Version
139
- version: 0.9.6
139
+ version: 0.9.7
140
140
  - - "<"
141
141
  - !ruby/object:Gem::Version
142
142
  version: '0.10'
@@ -146,7 +146,7 @@ dependencies:
146
146
  requirements:
147
147
  - - ">="
148
148
  - !ruby/object:Gem::Version
149
- version: 0.9.6
149
+ version: 0.9.7
150
150
  - - "<"
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0.10'
@@ -156,7 +156,7 @@ dependencies:
156
156
  requirements:
157
157
  - - ">="
158
158
  - !ruby/object:Gem::Version
159
- version: 0.1.10
159
+ version: 0.1.11
160
160
  - - "<"
161
161
  - !ruby/object:Gem::Version
162
162
  version: '0.2'
@@ -166,7 +166,7 @@ dependencies:
166
166
  requirements:
167
167
  - - ">="
168
168
  - !ruby/object:Gem::Version
169
- version: 0.1.10
169
+ version: 0.1.11
170
170
  - - "<"
171
171
  - !ruby/object:Gem::Version
172
172
  version: '0.2'