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 +4 -4
- data/lib/trailblazer/finder/activities/prepare.rb +0 -8
- data/lib/trailblazer/finder/activities/prepare_adapter.rb +1 -1
- data/lib/trailblazer/finder/activities/prepare_entity.rb +1 -1
- data/lib/trailblazer/finder/activities/prepare_filters.rb +1 -1
- data/lib/trailblazer/finder/activities/prepare_params.rb +1 -1
- data/lib/trailblazer/finder/activities/prepare_properties.rb +1 -1
- data/lib/trailblazer/finder/activities/process.rb +0 -6
- data/lib/trailblazer/finder/activities/process_adapters.rb +1 -1
- data/lib/trailblazer/finder/base.rb +1 -1
- data/lib/trailblazer/finder/find.rb +0 -1
- data/lib/trailblazer/finder/utils/string.rb +0 -15
- data/lib/trailblazer/finder/version.rb +1 -1
- data/lib/trailblazer/finder.rb +15 -32
- data/lib/trailblazer/operation/finder.rb +2 -2
- data/lib/trailblazer-finder.rb +1 -0
- metadata +46 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3ced2d8db3f4239864a12183a94edc891ad1ab3d6d36f1508403e651bce0786
|
4
|
+
data.tar.gz: fde469fd7fb6a1d501c8b28a5e174cc06f85df1d3b5f0f5f89479a97d6e9b4c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
16
|
+
(ctx[:errors] ||= []) << {adapter: "The specified adapter is invalid"}
|
17
17
|
end
|
18
18
|
|
19
19
|
step :set_adapter
|
@@ -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
|
@@ -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
|
data/lib/trailblazer/finder.rb
CHANGED
@@ -1,45 +1,28 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
3
|
+
require 'forwardable'
|
4
|
+
require 'dry-types'
|
5
|
+
require 'ostruct'
|
6
|
+
require 'zeitwerk'
|
7
|
+
require 'trailblazer/operation'
|
8
|
+
require 'trailblazer/macro'
|
7
9
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
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(
|
40
|
-
ORM_ADAPTERS = EXT_ORM_ADAPTERS | Types::Strict::String.enum(
|
41
|
-
PAGING_ADAPTERS = Types::Strict::String.enum(
|
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 =
|
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"] =
|
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.
|
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:
|
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.
|
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,
|