trailblazer-finder 0.90.0 → 0.91.0

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: 0c3605d464db4d05bd07e54aec870bd62820657704a730ebc02d11f904dcd964
4
- data.tar.gz: e0c677b1cf39def27bef24b5787cf0cc6a475afb9adf227baa77315ee447208b
3
+ metadata.gz: 299e4ce460407b5ae703246c2c0cd3a9306560a3d540be1ded926a1cc892456e
4
+ data.tar.gz: 470abe97adffcaa66406a2013bae3990ad6a2d82e89132f7cb0ca157b038458e
5
5
  SHA512:
6
- metadata.gz: 251cf565e7ca50200c70a997bbbe8c96d28232b28d8bd8001129612194ee2065f57b6198b965cb60f19420f988ad1af17cdcd50c4ad23a50d6eff2241d4a2845
7
- data.tar.gz: dcad67e86a906c097f00b88b6b051b296819287a1401db159c401121142e794028a0a0406b8836fc74f590c368ac6a21045f39ed869d36e7b1f6642495c8ae91
6
+ metadata.gz: 4585a52d42fc8e86dd0570c2e30e290a1af08ffce6ab965e4ed674011e909006a9bd3c7ec45408a7485536e080b150d90a731e6f37c2e31d2483e6f8be5bf049
7
+ data.tar.gz: 75a02a268b5ce8d2fa02a47cf3b9f2c5fc90b08f94920c03136c5ec6070b822ce58a1716ea92a99f375b56916433577bc778d9d0e87a2f1049f96c2969223af0
@@ -9,16 +9,17 @@ module Trailblazer
9
9
  end
10
10
 
11
11
  def validate_adapter(_ctx, adapter:, **)
12
- (ORM_ADAPTERS + ["Basic"]).include? adapter.to_s
12
+ ORM_ADAPTERS.(adapter.to_s)
13
13
  end
14
14
 
15
- def invalid?((ctx, _flow_options), **_circuit_options)
15
+ def invalid?(_e, (ctx, _flow_options), **_circuit_options)
16
16
  (ctx[:errors] ||= []) << {adapter: "The specified adapter are invalid"}
17
17
  end
18
18
 
19
19
  step :set_adapter
20
- step :validate_adapter
21
- fail :invalid?
20
+ step Rescue(Dry::Types::ConstraintError, handler: :invalid?) {
21
+ step :validate_adapter
22
+ }
22
23
  end
23
24
  end
24
25
  end
@@ -17,8 +17,8 @@ module Trailblazer
17
17
  def set_paginator(ctx, **)
18
18
  paginator = ctx.dig(:config, :paginator)
19
19
  return true unless paginator
20
- return false unless ORM_ADAPTERS.include?(ctx[:orm][:adapter])
21
- return false unless PAGING_ADAPTERS.include?(paginator)
20
+ return false unless EXT_ORM_ADAPTERS.(ctx[:orm][:adapter])
21
+ return false unless PAGING_ADAPTERS.(paginator)
22
22
 
23
23
  ctx[:orm][:paging] = "Trailblazer::Finder::Adapters::#{paginator}::Paging"
24
24
  true
@@ -33,9 +33,15 @@ module Trailblazer
33
33
  }
34
34
  end
35
35
 
36
+ def invalid_paginator_handler(_e, (ctx, _flow_options), **)
37
+ invalid_paginator_error(ctx)
38
+ end
39
+
36
40
  step :set_adapter, fast_track: true
37
- step :set_paginator
38
- fail :invalid_paginator_error
41
+ step Rescue(Dry::Types::ConstraintError, handler: :invalid_paginator_handler) {
42
+ step :set_paginator
43
+ fail :invalid_paginator_error
44
+ }
39
45
  end
40
46
  end
41
47
  end
@@ -2,8 +2,6 @@
2
2
 
3
3
  module Trailblazer
4
4
  class Finder
5
- ORM_ADAPTERS = %w[ActiveRecord Sequel].freeze
6
- PAGING_ADAPTERS = %w[Kaminari WillPaginate].freeze
7
5
 
8
6
  module Base
9
7
  def self.included(base)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Trailblazer
4
4
  class Finder
5
- VERSION = "0.90.0"
5
+ VERSION = "0.91.0"
6
6
  end
7
7
  end
@@ -5,37 +5,40 @@ require "trailblazer"
5
5
  require "dry-types"
6
6
  require "ostruct"
7
7
 
8
- require "trailblazer/finder/utils/array"
9
- require "trailblazer/finder/utils/hash"
10
- require "trailblazer/finder/utils/string"
11
- require "trailblazer/finder/utils/splitter"
12
- require "trailblazer/finder/utils/extra"
13
- require "trailblazer/finder/adapters/active_record/predicates"
14
- require "trailblazer/finder/adapters/active_record/paging"
15
- require "trailblazer/finder/adapters/active_record/sorting"
16
- require "trailblazer/finder/adapters/kaminari/paging"
17
- require "trailblazer/finder/adapters/will_paginate/paging"
18
- require "trailblazer/finder/adapters/sequel/predicates"
19
- require "trailblazer/finder/adapters/sequel/paging"
20
- require "trailblazer/finder/adapters/sequel/sorting"
21
- require "trailblazer/finder/adapters/basic/predicates"
22
- require "trailblazer/finder/adapters/basic/paging"
23
- require "trailblazer/finder/adapters/basic/sorting"
24
- require "trailblazer/finder/activities/prepare"
25
- require "trailblazer/finder/activities/process"
26
- require "trailblazer/finder/activities/find"
27
- require "trailblazer/finder/helpers/basic"
28
- require "trailblazer/finder/helpers/sorting"
29
- require "trailblazer/finder/dsl"
30
- require "trailblazer/finder/find"
31
- require "trailblazer/finder/base"
32
- require "trailblazer/operation/finder"
8
+ require_relative "finder/utils/array"
9
+ require_relative "finder/utils/hash"
10
+ require_relative "finder/utils/string"
11
+ require_relative "finder/utils/splitter"
12
+ require_relative "finder/utils/extra"
13
+ require_relative "finder/adapters/active_record/predicates"
14
+ require_relative "finder/adapters/active_record/paging"
15
+ require_relative "finder/adapters/active_record/sorting"
16
+ require_relative "finder/adapters/kaminari/paging"
17
+ require_relative "finder/adapters/will_paginate/paging"
18
+ require_relative "finder/adapters/sequel/predicates"
19
+ require_relative "finder/adapters/sequel/paging"
20
+ require_relative "finder/adapters/sequel/sorting"
21
+ require_relative "finder/adapters/basic/predicates"
22
+ require_relative "finder/adapters/basic/paging"
23
+ require_relative "finder/adapters/basic/sorting"
24
+ require_relative "finder/activities/prepare"
25
+ require_relative "finder/activities/process"
26
+ require_relative "finder/activities/find"
27
+ require_relative "finder/helpers/basic"
28
+ require_relative "finder/helpers/sorting"
29
+ require_relative "finder/dsl"
30
+ require_relative "finder/find"
31
+ require_relative "finder/base"
32
+ require_relative "operation/finder"
33
33
 
34
34
  module Trailblazer
35
35
  class Finder
36
36
  module Types
37
37
  include Dry.Types(default: :nominal)
38
38
  end
39
+ EXT_ORM_ADAPTERS = Types::Strict::String.enum("ActiveRecord", "Sequel")
40
+ ORM_ADAPTERS = EXT_ORM_ADAPTERS | Types::Strict::String.enum("Basic")
41
+ PAGING_ADAPTERS = Types::Strict::String.enum("Kaminari", "WillPaginate")
39
42
 
40
43
  include Base
41
44
  end
@@ -1,7 +1,7 @@
1
1
  module Trailblazer
2
2
  class Operation
3
3
  def self.Finder(finder_class, action = nil, entity = nil)
4
- task = Trailblazer::Activity::TaskBuilder::Binary(Finder.new)
4
+ task = Trailblazer::Activity::Circuit::TaskAdapter.for_step(Finder.new, binary: true)
5
5
  injections = [
6
6
  :params,
7
7
  {:"finder.class" => ->(*) { finder_class }},
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trailblazer-finder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.90.0
4
+ version: 0.91.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sutterer
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2022-06-07 00:00:00.000000000 Z
13
+ date: 2024-01-12 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: dry-types
@@ -111,21 +111,7 @@ dependencies:
111
111
  - !ruby/object:Gem::Version
112
112
  version: '0'
113
113
  - !ruby/object:Gem::Dependency
114
- name: rspec
115
- requirement: !ruby/object:Gem::Requirement
116
- requirements:
117
- - - "~>"
118
- - !ruby/object:Gem::Version
119
- version: '3.5'
120
- type: :development
121
- prerelease: false
122
- version_requirements: !ruby/object:Gem::Requirement
123
- requirements:
124
- - - "~>"
125
- - !ruby/object:Gem::Version
126
- version: '3.5'
127
- - !ruby/object:Gem::Dependency
128
- name: rspec_junit_formatter
114
+ name: maxitest
129
115
  requirement: !ruby/object:Gem::Requirement
130
116
  requirements:
131
117
  - - ">="
@@ -139,21 +125,7 @@ dependencies:
139
125
  - !ruby/object:Gem::Version
140
126
  version: '0'
141
127
  - !ruby/object:Gem::Dependency
142
- name: rspec-mocks
143
- requirement: !ruby/object:Gem::Requirement
144
- requirements:
145
- - - "~>"
146
- - !ruby/object:Gem::Version
147
- version: '3.5'
148
- type: :development
149
- prerelease: false
150
- version_requirements: !ruby/object:Gem::Requirement
151
- requirements:
152
- - - "~>"
153
- - !ruby/object:Gem::Version
154
- version: '3.5'
155
- - !ruby/object:Gem::Dependency
156
- name: rubocop
128
+ name: sequel
157
129
  requirement: !ruby/object:Gem::Requirement
158
130
  requirements:
159
131
  - - ">="
@@ -167,7 +139,7 @@ dependencies:
167
139
  - !ruby/object:Gem::Version
168
140
  version: '0'
169
141
  - !ruby/object:Gem::Dependency
170
- name: rubocop-rspec
142
+ name: simplecov
171
143
  requirement: !ruby/object:Gem::Requirement
172
144
  requirements:
173
145
  - - ">="
@@ -181,21 +153,21 @@ dependencies:
181
153
  - !ruby/object:Gem::Version
182
154
  version: '0'
183
155
  - !ruby/object:Gem::Dependency
184
- name: sequel
156
+ name: trailblazer
185
157
  requirement: !ruby/object:Gem::Requirement
186
158
  requirements:
187
- - - ">="
159
+ - - "~>"
188
160
  - !ruby/object:Gem::Version
189
- version: '0'
161
+ version: 2.1.0
190
162
  type: :development
191
163
  prerelease: false
192
164
  version_requirements: !ruby/object:Gem::Requirement
193
165
  requirements:
194
- - - ">="
166
+ - - "~>"
195
167
  - !ruby/object:Gem::Version
196
- version: '0'
168
+ version: 2.1.0
197
169
  - !ruby/object:Gem::Dependency
198
- name: simplecov
170
+ name: trailblazer-developer
199
171
  requirement: !ruby/object:Gem::Requirement
200
172
  requirements:
201
173
  - - ">="
@@ -209,21 +181,7 @@ dependencies:
209
181
  - !ruby/object:Gem::Version
210
182
  version: '0'
211
183
  - !ruby/object:Gem::Dependency
212
- name: trailblazer
213
- requirement: !ruby/object:Gem::Requirement
214
- requirements:
215
- - - "~>"
216
- - !ruby/object:Gem::Version
217
- version: 2.1.0
218
- type: :development
219
- prerelease: false
220
- version_requirements: !ruby/object:Gem::Requirement
221
- requirements:
222
- - - "~>"
223
- - !ruby/object:Gem::Version
224
- version: 2.1.0
225
- - !ruby/object:Gem::Dependency
226
- name: trailblazer-developer
184
+ name: will_paginate
227
185
  requirement: !ruby/object:Gem::Requirement
228
186
  requirements:
229
187
  - - ">="
@@ -237,7 +195,7 @@ dependencies:
237
195
  - !ruby/object:Gem::Version
238
196
  version: '0'
239
197
  - !ruby/object:Gem::Dependency
240
- name: will_paginate
198
+ name: minitest-trailblazer
241
199
  requirement: !ruby/object:Gem::Requirement
242
200
  requirements:
243
201
  - - ">="
@@ -298,11 +256,11 @@ files:
298
256
  - lib/trailblazer/finder/utils/string.rb
299
257
  - lib/trailblazer/finder/version.rb
300
258
  - lib/trailblazer/operation/finder.rb
301
- - trailblazer-finder.gemspec
302
- homepage: http://trailblazer.to
259
+ homepage: https://trailblazer.to
303
260
  licenses:
304
261
  - LGPL-3.0
305
- metadata: {}
262
+ metadata:
263
+ rubygems_mfa_required: 'true'
306
264
  post_install_message:
307
265
  rdoc_options: []
308
266
  require_paths:
@@ -318,7 +276,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
318
276
  - !ruby/object:Gem::Version
319
277
  version: '0'
320
278
  requirements: []
321
- rubygems_version: 3.2.22
279
+ rubygems_version: 3.4.22
322
280
  signing_key:
323
281
  specification_version: 4
324
282
  summary: Trailblazer based finder objects. It is designed to be used on its own as
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- lib = File.expand_path("lib", __dir__)
4
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require "trailblazer/finder/version"
6
-
7
- Gem::Specification.new do |spec|
8
- spec.name = "trailblazer-finder"
9
- spec.version = Trailblazer::Finder::VERSION
10
- spec.description = "Trailblazer Finder Objects"
11
- spec.summary = "Trailblazer based finder objects. It is designed to be used on its own as a separate gem. It was influenced by popular Ransack gem, but in addition to ActiveRecord, it can be used with Sequel, Hash objects, and RomRB."
12
- spec.authors = ["Nick Sutterer", "Marc Tich", "Abdelkader Boudih"]
13
- spec.email = %w[apotonick@gmail.com marc@mudsu.com terminale@gmail.com]
14
- spec.homepage = "http://trailblazer.to"
15
- spec.license = "LGPL-3.0"
16
- spec.files = Dir.glob("lib/**/*")
17
- spec.files << ["trailblazer-finder.gemspec"]
18
- spec.test_files = spec.files.grep(%r{^(test)/})
19
- spec.require_paths = ["lib"]
20
-
21
- spec.add_dependency "dry-types", ">= 1.0.0"
22
- spec.add_dependency "trailblazer-activity", ">= 0.13.0"
23
-
24
- spec.add_development_dependency "activerecord"
25
- spec.add_development_dependency "bundler"
26
- spec.add_development_dependency "kaminari"
27
- spec.add_development_dependency "kaminari-activerecord"
28
- spec.add_development_dependency "rake"
29
- spec.add_development_dependency "rspec", "~> 3.5"
30
- spec.add_development_dependency "rspec_junit_formatter"
31
- spec.add_development_dependency "rspec-mocks", "~> 3.5"
32
- spec.add_development_dependency "rubocop"
33
- spec.add_development_dependency "rubocop-rspec"
34
- spec.add_development_dependency "sequel"
35
- spec.add_development_dependency "simplecov"
36
- spec.add_development_dependency "trailblazer", "~> 2.1.0"
37
- spec.add_development_dependency "trailblazer-developer"
38
- spec.add_development_dependency "will_paginate"
39
-
40
- spec.required_ruby_version = ">= 2.5.0"
41
- end