action_processor 0.0.7 → 0.0.8

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: 64fa3b91c6e4e1ba1b1c22b88404c392e20bebc0e97e0bbdd6cbeda579d0196c
4
- data.tar.gz: c935895a1d909da0a5b816e8e49a1b11b3ac9c363445cfb5cc73240bd7f45031
3
+ metadata.gz: cf58c5b403a2ec7095d1b43e07ea206596f7d324375d9cf5720f396b7a448e36
4
+ data.tar.gz: bb14d7a08d7cab44398433e7539046aa2398167866c1d8e8e4fe0e7c0fba1cc5
5
5
  SHA512:
6
- metadata.gz: 60fbc9a74750f6f4ead3129c2e8468dccc8b29762a0495f584bab4e91f7d8497cadcf1ad043107627813cb198cc6f0b262be620c37776ffc76294d81778d99c8
7
- data.tar.gz: 6d82167054ae4f5b3c7afe035f95379e4cbfa8b1e1484b142540ba8a084d9689c0b775517a04b33dcfe059e8bdbc55d2e3e43961757577a4dce47bca284d31d4
6
+ metadata.gz: 192243d4c626765a18bda4fa4949ad9a239ad85de7c7732e0f919dfd467b4b41b10f127c174b07d6daff41d59935997a3bede59ce5ebf1066ae385bd0e29cb12
7
+ data.tar.gz: 4cc79bb34950eefb80c32890d9239674d63e9b579928c4d053e9d5567a6473fd46fc343e7a0c3256c268d9b96b0ecbf8f60130aa38bbe327b5000a23c9462062
@@ -2,8 +2,9 @@
2
2
 
3
3
  require "active_support/core_ext/hash/indifferent_access"
4
4
  require "active_record"
5
+ require_relative "errors"
5
6
 
6
- module ActionProcessor
7
+ module ActionProcessor
7
8
  class Base
8
9
  attr_reader :params, :errors
9
10
 
@@ -14,11 +15,11 @@ module ActionProcessor
14
15
  end
15
16
 
16
17
  def initialize(params = {})
17
- @params = if params.class.name == 'Hash'
18
- params.with_indifferent_access
19
- else
20
- params
21
- end
18
+ @params = if params.instance_of? Hash
19
+ params.with_indifferent_access
20
+ else
21
+ params
22
+ end
22
23
  @errors = ActionProcessor::Errors.new
23
24
  @steps_stack = []
24
25
  @transaction_level = ActiveRecord::Base.connection.open_transactions
@@ -44,12 +45,12 @@ module ActionProcessor
44
45
 
45
46
  # in most cases should be overriden to provide relevant data
46
47
  def successful_json
47
- { success: true }
48
+ {success: true}
48
49
  end
49
50
 
50
51
  # could be overriden to provide some specifics/advices/etc.
51
52
  def failed_json
52
- { success: false, errors: errors.grouped_by_attribute }
53
+ {success: false, errors: errors.grouped_by_attribute}
53
54
  end
54
55
 
55
56
  def step(step_method, **options)
@@ -62,7 +63,7 @@ module ActionProcessor
62
63
  @steps_stack << (@current_step || :not_specified)
63
64
  @current_step = step_method
64
65
  # performs even if there are errors
65
- # useful for:
66
+ # useful for:
66
67
  # - validation steps to return list of all errors
67
68
  # - errors reporting and making decisions at the end of processing
68
69
  send step_method, **options
@@ -76,6 +77,8 @@ module ActionProcessor
76
77
  def fail!(errs, attr = :not_specified)
77
78
  if errs.class.ancestors.map(&:to_s).include?("ActiveRecord::Base")
78
79
  fail_active_record!(errs)
80
+ elsif errs.instance_of? ActionProcessor::Errors
81
+ @errors.concat errs
79
82
  else
80
83
  @errors.add(errs, @current_step, attr)
81
84
  end
@@ -92,7 +95,7 @@ module ActionProcessor
92
95
  @list_of_allowed_params ||= []
93
96
  @list_of_allowed_params += list.map(&:to_s)
94
97
  list.map(&:to_s).each do |param|
95
- next if params[param].present?
98
+ next unless params[param].nil?
96
99
 
97
100
  fail! "Parameter :#{param} should be present", param
98
101
  end
@@ -127,4 +130,4 @@ module ActionProcessor
127
130
  ActiveRecord::Base.connection.open_transactions > @transaction_level
128
131
  end
129
132
  end
130
- end
133
+ end
@@ -12,7 +12,12 @@ module ActionProcessor
12
12
 
13
13
  def add(messages, step = :not_specified, attribute = :not_specified)
14
14
  step ||= :not_specified # in case we will receive explicit nil as step parameter
15
- @all << { messages: [messages].flatten, step: step.to_sym, attribute: attribute.to_sym }
15
+ @all << {messages: [messages].flatten, step: step.to_sym, attribute: attribute.to_sym}
16
+ end
17
+
18
+ def concat(more_errors)
19
+ raise ArgumentError, "Expected an ActionProcessor::Errors object" unless more_errors.is_a?(ActionProcessor::Errors)
20
+ @all += more_errors.all
16
21
  end
17
22
 
18
23
  # returns array of strings with user friendly error messages
@@ -24,16 +29,16 @@ module ActionProcessor
24
29
  all_messages
25
30
  end
26
31
 
27
- alias full_messages messages # for compatibility with ActiveRecord::Errors
32
+ alias_method :full_messages, :messages # for compatibility with ActiveRecord::Errors
28
33
 
29
34
  def for_attribute(attr)
30
- @grouped_by_attribute[attr]
35
+ @grouped_by_attribute[attr]
31
36
  end
32
37
 
33
38
  def grouped_by_attribute
34
39
  return @grouped_by_attribute if @grouped_by_attribute.present?
35
40
 
36
- # we assume that all errors will be present
41
+ # we assume that all errors will be present
37
42
  # at the time when this method called first time
38
43
  @grouped_by_attribute = {}.with_indifferent_access
39
44
  @all.each do |err|
@@ -41,6 +46,6 @@ module ActionProcessor
41
46
  @grouped_by_attribute[err.attribute] += err[:messages]
42
47
  end
43
48
  @grouped_by_attribute
44
- end
49
+ end
45
50
  end
46
- end
51
+ end
@@ -1,2 +1,2 @@
1
- require_relative "./action_processor/errors.rb"
2
- require_relative "./action_processor/base.rb"
1
+ require_relative "action_processor/errors"
2
+ require_relative "action_processor/base"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: action_processor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ghennadii Mirosnicenco
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-02-26 00:00:00.000000000 Z
12
+ date: 2024-02-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -17,28 +17,28 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 7.0.0
20
+ version: '7'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: 7.0.0
27
+ version: '7'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: activerecord
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: 7.0.0
34
+ version: '7'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: 7.0.0
41
+ version: '7'
42
42
  description: action_processor
43
43
  email: linkator7@gmail.com
44
44
  executables: []