eco-helpers 2.7.4 → 2.7.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f5417454380ab9a37757721abd2b66a9097eac191ae435336fb436caeabfac49
4
- data.tar.gz: fe83f4f50b5053050f8ff15dd43c224130a8e0bb7ece5e44aaa8e91f20c7ab77
3
+ metadata.gz: 7c7e7c6c61dc2fa5886b5a396f54051e216bf8ffbf6e31ab98388b3ed21c5e5b
4
+ data.tar.gz: 4cea27b25b939efd57a4bfcf1d540df660f94cd7b48be45cf96b67dde5d01033
5
5
  SHA512:
6
- metadata.gz: 8576cbd86fadc000127e2f83396e5cbf2d4b7196150fe3a7ff78c3ce987850ebe73758622678492811350434981cfa1962796dc847b39475e80b8ef61e09c6da
7
- data.tar.gz: c6517c924dee344f9445e7213c404f7295f45ff9c41ff45b2fbad437becfd2ea8aaadc95b82b2e0189e0ade9bef299826f56910704a16954a59c0a91930133bb
6
+ metadata.gz: 4c0a48790cf660cb326fa6a06e60e8fc4395f4cfcefd00ca71aa79be79daceb8bf5e4dfd74c33957e07f1cb1f7d8cf298fd062544ecdecd620681c33706fec57
7
+ data.tar.gz: 0dfb7e2c7ad703782373bd6c6b24bacc872238009cc9552998e40c55ff05f7bb61b667ee65d333e55b3623f8b139792ea42f5f3eab6a2f737ff182c01b28cd16
data/CHANGELOG.md CHANGED
@@ -1,12 +1,24 @@
1
1
  # Change Log
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
- ## [2.7.5] - 2024-05-xx
4
+ ## [2.7.6] - 2024-05-xx
5
5
 
6
6
  ### Added
7
7
  ### Changed
8
+ - upgraded `ecoportal-api-graphql` gem, and `ecoportal-api` gem
9
+ - `Eco::API::Common::People::Entries` (**optimization**)
10
+ - Remove supervisors order
11
+ - It could create cyclic supervisors.
12
+ - `Eco::API::MicroCases#set_supervisor` slight improvemnent to prevent cyclic supers (self + added one to one)
13
+
8
14
  ### Fixed
9
- - Loading of tree diff / update service
15
+ - `Eco::API::UseCases::GraphQL::Helpers::Location::Command::Diff::AsUpdate`
16
+ - `classificationIds` should be always an `Array`
17
+
18
+ ## [2.7.5] - 2024-05-07
19
+
20
+ ### Fixed
21
+ - `Eco::API::UseCases::GraphQL::Utils` typo
10
22
 
11
23
  ## [2.7.4] - 2024-05-07
12
24
 
data/eco-helpers.gemspec CHANGED
@@ -30,9 +30,9 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency "yard", ">= 0.9.34", "< 1"
31
31
  spec.add_development_dependency "redcarpet", ">= 3.6.0", "< 4"
32
32
 
33
- spec.add_dependency 'ecoportal-api', '>= 0.9.7', '< 0.10'
33
+ spec.add_dependency 'ecoportal-api', '>= 0.9.8', '< 0.10'
34
34
  spec.add_dependency 'ecoportal-api-v2', '>= 1.1.8', '< 1.2'
35
- spec.add_dependency 'ecoportal-api-graphql', '>= 0.3.16', '< 0.4'
35
+ spec.add_dependency 'ecoportal-api-graphql', '>= 0.3.17', '< 0.4'
36
36
  spec.add_dependency 'aws-sdk-s3', '>= 1.142.0', '< 2'
37
37
  spec.add_dependency 'aws-sdk-ses', '>= 1.58.0', '< 2'
38
38
  spec.add_dependency 'dotenv', '>= 2.8.1', '< 3'
@@ -1,3 +1,4 @@
1
+ # rubocop:disable Style/Attr
1
2
  module Eco
2
3
  module API
3
4
  module Common
@@ -6,13 +7,15 @@ module Eco
6
7
  # @attr_reader entries [Array<Eco::API::Common::PeopleEntry] a pure `Array` object.
7
8
  class Entries < Eco::Language::Models::Collection
8
9
  # Error class that allows to handle cases where multiple entries were found for the same criterion.
9
- # @note its main purpose to prevent the false pairing of duplicates or override information between different people.
10
+ # @note its main purpose to prevent the false pairing of duplicates or override information between
11
+ # different people.
10
12
  class MultipleSearchResults < StandardError
11
13
  attr_reader :candidates, :property
12
14
 
13
15
  # @param msg [String] the basic message error.
14
16
  # @param candiates [Array<PersonEntry>] the entries that match the same search criterion.
15
- # @param property [String] the property of the entry model that triggered the error (base of the search criterion).
17
+ # @param property [String] the property of the entry model that triggered the error
18
+ # (base of the search criterion).
16
19
  def initialize(msg, candidates: [], property: "email")
17
20
  @candidates = candidates
18
21
  @property = property
@@ -46,8 +49,6 @@ module Eco
46
49
 
47
50
  alias_method :entries, :to_a
48
51
 
49
- include Eco::API::Common::People::SupervisorHelpers
50
-
51
52
  def initialize(data = [], klass:, factory:)
52
53
  super(data, klass: klass, factory: factory)
53
54
  @caches_init = false
@@ -136,8 +137,8 @@ module Eco
136
137
  # Override `each` to make it work with supervisor hiearchy
137
138
  def each(&block)
138
139
  return to_enum(:each) unless block
139
- @array_supers = sort_by_supervisors(@items) unless @caches_init
140
- @array_supers.each(&block)
140
+
141
+ @items.each(&block)
141
142
  end
142
143
 
143
144
  def exclude(object)
@@ -208,7 +209,6 @@ module Eco
208
209
  @by_id = no_nil_key(to_h)
209
210
  @by_external_id = no_nil_key(to_h('external_id'))
210
211
  @by_email = no_nil_key(to_h('email'))
211
- @array_supers = sort_by_supervisors(@items)
212
212
  @caches_init = true
213
213
  end
214
214
 
@@ -220,3 +220,5 @@ module Eco
220
220
  end
221
221
  end
222
222
  end
223
+
224
+ # rubocop:enable Style/Attr
@@ -11,40 +11,51 @@ module Eco
11
11
  # @yield [supervisor_id] callback when the supervisor_id is **unknown** (not `nil` nor any one's in `people`).
12
12
  # @yieldparam supervisor_id [String] the **unknown** `supervisor_id`.
13
13
  def set_supervisor(person, sup_id, people, options)
14
- unless options.dig(:exclude, :core) || options.dig(:exclude, :supervisor)
15
- return false if sup_id && ((person.id == sup_id) || (person.external_id == sup_id))
16
- cur_id = person.supervisor_id
17
- cur_super = cur_id && with_supervisor(cur_id, people)
18
- micro.with_supervisor(sup_id, people) do |new_super|
19
- if !sup_id
20
- person.supervisor_id = nil
21
- descrease_subordinates(cur_super)
22
- elsif new_super && id = new_super.id
23
- person.supervisor_id = id
24
- descrease_subordinates(cur_super)
25
- increase_subordinates(new_super)
26
- elsif !block_given?
27
- descrease_subordinates(cur_super)
28
- person.supervisor_id = sup_id
29
- else
30
- yield(sup_id) if block_given?
31
- end
14
+ return false if options.dig(:exclude, :core) || options.dig(:exclude, :supervisor)
15
+ return false if sup_id && ((person.id == sup_id) || (person.external_id == sup_id))
16
+
17
+ cur_id = person.supervisor_id
18
+ cur_super = cur_id && with_supervisor(cur_id, people)
19
+
20
+ micro.with_supervisor(sup_id, people) do |new_super|
21
+ if !sup_id
22
+ person.supervisor_id = nil
23
+ descrease_subordinates(cur_super)
24
+ elsif new_super && (id = new_super.id)
25
+ set_supervisor(new_super, nil, people, options) if new_super_direct_cyclic?(person, new_super)
26
+ person.supervisor_id = id
27
+ descrease_subordinates(cur_super)
28
+ increase_subordinates(new_super)
29
+ elsif !block_given?
30
+ descrease_subordinates(cur_super)
31
+ person.supervisor_id = sup_id
32
+ elsif block_given?
33
+ yield(sup_id)
32
34
  end
33
35
  end
34
36
  end
35
37
 
36
38
  private
37
39
 
40
+ def new_super_direct_cyclic?(person, new_super)
41
+ return false unless new_super.is_a?(Ecoportal::API::V1::Person)
42
+ return false if new_super.supervisor_id.nil?
43
+ return true if person.id == new_super.id
44
+ return true if new_super.supervisor_id == person.id
45
+ return true if new_super.supervisor_id == person.external_id
46
+ false
47
+ end
48
+
38
49
  def descrease_subordinates(person, by = 1)
39
- if person.is_a?(Ecoportal::API::V1::Person)
40
- person.subordinates -= by
41
- end
50
+ return unless person.is_a?(Ecoportal::API::V1::Person)
51
+
52
+ person.subordinates -= by
42
53
  end
43
54
 
44
55
  def increase_subordinates(person, by = 1)
45
- if person.is_a?(Ecoportal::API::V1::Person)
46
- person.subordinates += by
47
- end
56
+ return unless person.is_a?(Ecoportal::API::V1::Person)
57
+
58
+ person.subordinates += by
48
59
  end
49
60
  end
50
61
  end
@@ -11,7 +11,12 @@ class Eco::API::UseCases::GraphQL::Helpers::Location::Command::Diff
11
11
  def diff_hash(after_id_update: true) # rubocop:disable Metrics/AbcSize
12
12
  super().tap do |h|
13
13
  h.delete('archived')
14
- h['classificationIds'] = h.delete('classifications') if h.key?('classifications')
14
+
15
+ if h.key?('classifications')
16
+ class_ids = h.delete('classifications')
17
+ class_ids = [class_ids].flatten.compact unless class_ids.is_a?(Array)
18
+ h['classificationIds'] = class_ids
19
+ end
15
20
 
16
21
  if archive? || insert?
17
22
  # We assume archives do not have `move` nor update `id` or `name`
@@ -27,7 +27,7 @@ module Eco::API::UseCases::GraphQL::Utils
27
27
  log(:info) {
28
28
  msg = "Getting the following files into the local folder '#{local_folder}':\n"
29
29
  msg << " • "
30
- msg << files_names.join("\n • ")
30
+ msg << file_names.join("\n • ")
31
31
  msg
32
32
  }
33
33
 
data/lib/eco/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Eco
2
- VERSION = '2.7.4'.freeze
2
+ VERSION = '2.7.6'.freeze
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.7.4
4
+ version: 2.7.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Segura
@@ -116,7 +116,7 @@ dependencies:
116
116
  requirements:
117
117
  - - ">="
118
118
  - !ruby/object:Gem::Version
119
- version: 0.9.7
119
+ version: 0.9.8
120
120
  - - "<"
121
121
  - !ruby/object:Gem::Version
122
122
  version: '0.10'
@@ -126,7 +126,7 @@ dependencies:
126
126
  requirements:
127
127
  - - ">="
128
128
  - !ruby/object:Gem::Version
129
- version: 0.9.7
129
+ version: 0.9.8
130
130
  - - "<"
131
131
  - !ruby/object:Gem::Version
132
132
  version: '0.10'
@@ -156,7 +156,7 @@ dependencies:
156
156
  requirements:
157
157
  - - ">="
158
158
  - !ruby/object:Gem::Version
159
- version: 0.3.16
159
+ version: 0.3.17
160
160
  - - "<"
161
161
  - !ruby/object:Gem::Version
162
162
  version: '0.4'
@@ -166,7 +166,7 @@ dependencies:
166
166
  requirements:
167
167
  - - ">="
168
168
  - !ruby/object:Gem::Version
169
- version: 0.3.16
169
+ version: 0.3.17
170
170
  - - "<"
171
171
  - !ruby/object:Gem::Version
172
172
  version: '0.4'