trailblazer-finder 0.92.0 → 0.101.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: d5aa468a471c2d9bb6f7f0196e46a14905a557956a18da87723eb74a3f897b10
4
- data.tar.gz: 6d236f533affcf4eb828704e438b2ec9f30270d61626be709aa29d64c5489d5d
3
+ metadata.gz: e3ced2d8db3f4239864a12183a94edc891ad1ab3d6d36f1508403e651bce0786
4
+ data.tar.gz: fde469fd7fb6a1d501c8b28a5e174cc06f85df1d3b5f0f5f89479a97d6e9b4c1
5
5
  SHA512:
6
- metadata.gz: 8067cad54995bf7b42b522dc10fc3574dcb7a0a62ad3548e207785c647737192059c0193dd80420891d7e9ab0e96ae13f66c18f0edee94bd29b211139c6457b6
7
- data.tar.gz: 9da38615d6276c0c886ab89396da5e0dcf776eefe8ed8e369d439ce38af3113d477c39dee6482c28d6110a9f4e880aa0c3f4b0a704140ed419ea66a83f06b410
6
+ metadata.gz: b73ae7096e16f38fa6fa52be523124a45bc41c8778ffc0dfb210dc5602799efc939ad51739e7bdbbc624452c31cf2984a1dc2901963bd734c2874b97647eb22b
7
+ data.tar.gz: f817f84115eb48db4650587730ebfa5c05a89933ae79d43e27c5378e4af193a17d592c5d7e9e3f23f55976a72a24022c00f13f225850c786fcd5d4eb72cd5fa8
@@ -1,13 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "prepare_adapter"
4
- require_relative "prepare_entity"
5
- require_relative "prepare_properties"
6
- require_relative "prepare_filters"
7
- require_relative "prepare_params"
8
- require_relative "prepare_paging"
9
- require_relative "prepare_sorting"
10
-
11
3
  module Trailblazer
12
4
  class Finder
13
5
  module Activities
@@ -13,7 +13,7 @@ module Trailblazer
13
13
  end
14
14
 
15
15
  def invalid?(_e, (ctx, _flow_options), **_circuit_options)
16
- (ctx[:errors] ||= []) << {adapter: "The specified adapter are invalid"}
16
+ (ctx[:errors] ||= []) << {adapter: "The specified adapter is invalid"}
17
17
  end
18
18
 
19
19
  step :set_adapter
@@ -17,7 +17,7 @@ module Trailblazer
17
17
  end
18
18
 
19
19
  step :validate_entity
20
- fail :invalid_entity_error
20
+ left :invalid_entity_error
21
21
  step :set_entity
22
22
  end
23
23
  end
@@ -21,7 +21,7 @@ module Trailblazer
21
21
  end
22
22
 
23
23
  step :validate_filters
24
- fail :invalid_filters_error
24
+ left :invalid_filters_error
25
25
  step :set_filters
26
26
  end
27
27
  end
@@ -19,7 +19,7 @@ module Trailblazer
19
19
  end
20
20
 
21
21
  step :validate_params
22
- fail :invalid_params_error
22
+ left :invalid_params_error
23
23
  step :set_params
24
24
  end
25
25
  end
@@ -32,7 +32,7 @@ module Trailblazer
32
32
 
33
33
  step :check_property_types
34
34
  step :validate_property_types
35
- fail :invalid_properties_error
35
+ left :invalid_properties_error
36
36
  step :set_properties
37
37
  end
38
38
  end
@@ -1,11 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "process_adapters"
4
- require_relative "process_predicates"
5
- require_relative "process_paging"
6
- require_relative "process_sorting"
7
- require_relative "process_filters"
8
-
9
3
  module Trailblazer
10
4
  class Finder
11
5
  module Activities
@@ -37,7 +37,7 @@ module Trailblazer
37
37
  step :set_adapter, fast_track: true
38
38
  step Rescue(Dry::Types::ConstraintError, handler: :invalid_paginator_handler) {
39
39
  step :set_paginator
40
- fail :invalid_paginator_error
40
+ left :invalid_paginator_error
41
41
  }
42
42
  end
43
43
  end
@@ -7,7 +7,7 @@ module Trailblazer
7
7
  def self.included(base)
8
8
  base.include Helpers::Basic
9
9
  base.include Helpers::Sorting
10
- base.extend Finder::Dsl
10
+ base.extend Dsl
11
11
  end
12
12
 
13
13
  attr_reader :signal, :errors
@@ -16,7 +16,6 @@ module Trailblazer
16
16
 
17
17
  def process_filters(ctx)
18
18
  @params.reduce(@entity) do |entity, (name, value)|
19
- value = Utils::String.to_date(value) if Utils::String.date?(value)
20
19
  filter = @filters[name.to_sym] || @filters[name]
21
20
  new_entity = ctx.instance_exec entity, filter[:name], value, &filter[:handler]
22
21
  new_entity || entity
@@ -30,21 +30,6 @@ module Trailblazer
30
30
  .tr(" ", "_")
31
31
  .downcase
32
32
  end
33
-
34
- def self.to_date(value)
35
- Date.parse(value).strftime("%Y-%m-%d") if date?(value)
36
- end
37
-
38
- def self.date?(date)
39
- return false unless
40
- date.is_a?(::DateTime) ||
41
- date.is_a?(::Date) ||
42
- date.is_a?(::String)
43
- return false if date.is_a?(::String) && date.size == 36 # Ignore uuids that could get casted to dates
44
-
45
- date_hash = ::Date._parse(date.to_s)
46
- Date.valid_date?(date_hash[:year].to_i, date_hash[:mon].to_i, date_hash[:mday].to_i)
47
- end
48
33
  end
49
34
  end
50
35
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Trailblazer
4
4
  class Finder
5
- VERSION = "0.92.0"
5
+ VERSION = "0.101.0"
6
6
  end
7
7
  end
@@ -1,45 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "forwardable"
4
- require "trailblazer"
5
- require "dry-types"
6
- require "ostruct"
3
+ require 'forwardable'
4
+ require 'dry-types'
5
+ require 'ostruct'
6
+ require 'zeitwerk'
7
+ require 'trailblazer/operation'
8
+ require 'trailblazer/macro'
7
9
 
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"
10
+ loader = Zeitwerk::Loader.for_gem_extension(Trailblazer)
11
+ adapters = "#{__dir__}/finder/adapters"
12
+ loader.do_not_eager_load(adapters)
13
+ loader.setup
33
14
 
34
15
  module Trailblazer
35
16
  class Finder
36
17
  module Types
37
18
  include Dry.Types(default: :nominal)
38
19
  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")
20
+ EXT_ORM_ADAPTERS = Types::Strict::String.enum('ActiveRecord', 'Sequel')
21
+ ORM_ADAPTERS = EXT_ORM_ADAPTERS | Types::Strict::String.enum('Basic')
22
+ PAGING_ADAPTERS = Types::Strict::String.enum('Kaminari', 'WillPaginate')
42
23
 
43
24
  include Base
44
25
  end
45
26
  end
27
+
28
+ loader.eager_load
@@ -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::Circuit::TaskAdapter.for_step(Finder.new, binary: true)
4
+ task = Activity::Circuit::TaskAdapter.for_step(Finder.new, binary: true)
5
5
  injections = [
6
6
  :params,
7
7
  {:"finder.class" => ->(*) { finder_class }},
@@ -17,7 +17,7 @@ module Trailblazer
17
17
  builder = Finder::Builder.new
18
18
  ctx[:finder] = finder = builder.call(options, options[:params])
19
19
  ctx[:model] = finder # Don't like it, but somehow it's needed if contracts are loaded
20
- ctx[:"result.finder"] = Trailblazer::Operation::Result.new(!finder.nil?, {})
20
+ ctx[:"result.finder"] = Result.new(!finder.nil?, {})
21
21
 
22
22
  ctx[:"result.finder"].success?
23
23
  end
@@ -0,0 +1 @@
1
+ require_relative 'trailblazer/finder'
metadata CHANGED
@@ -1,16 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trailblazer-finder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.92.0
4
+ version: 0.101.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sutterer
8
8
  - Marc Tich
9
9
  - Abdelkader Boudih
10
- autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2024-01-12 00:00:00.000000000 Z
12
+ date: 2025-03-03 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: dry-types
@@ -26,6 +25,20 @@ dependencies:
26
25
  - - ">="
27
26
  - !ruby/object:Gem::Version
28
27
  version: 1.0.0
28
+ - !ruby/object:Gem::Dependency
29
+ name: trailblazer-macro
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 2.1.15
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: 2.1.15
29
42
  - !ruby/object:Gem::Dependency
30
43
  name: trailblazer-activity
31
44
  requirement: !ruby/object:Gem::Requirement
@@ -40,6 +53,34 @@ dependencies:
40
53
  - - ">="
41
54
  - !ruby/object:Gem::Version
42
55
  version: 0.13.0
56
+ - !ruby/object:Gem::Dependency
57
+ name: trailblazer-activity-dsl-linear
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 1.2.5
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 1.2.5
70
+ - !ruby/object:Gem::Dependency
71
+ name: zeitwerk
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: 2.6.0
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: 2.6.0
43
84
  - !ruby/object:Gem::Dependency
44
85
  name: activerecord
45
86
  requirement: !ruby/object:Gem::Requirement
@@ -217,6 +258,7 @@ executables: []
217
258
  extensions: []
218
259
  extra_rdoc_files: []
219
260
  files:
261
+ - lib/trailblazer-finder.rb
220
262
  - lib/trailblazer/finder.rb
221
263
  - lib/trailblazer/finder/activities/find.rb
222
264
  - lib/trailblazer/finder/activities/prepare.rb
@@ -261,7 +303,6 @@ licenses:
261
303
  - LGPL-3.0
262
304
  metadata:
263
305
  rubygems_mfa_required: 'true'
264
- post_install_message:
265
306
  rdoc_options: []
266
307
  require_paths:
267
308
  - lib
@@ -276,8 +317,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
276
317
  - !ruby/object:Gem::Version
277
318
  version: '0'
278
319
  requirements: []
279
- rubygems_version: 3.4.22
280
- signing_key:
320
+ rubygems_version: 3.6.5
281
321
  specification_version: 4
282
322
  summary: Trailblazer based finder objects. It is designed to be used on its own as
283
323
  a separate gem. It was influenced by popular Ransack gem, but in addition to ActiveRecord,