ucasy 0.0.7 → 0.1.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/ucasy/base.rb +23 -0
- data/lib/ucasy/validators/validate.rb +34 -0
- data/lib/ucasy/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 527b41741e56f37168fedca4c4a8f715d0028442c683a0307d663a66674e21d7
|
4
|
+
data.tar.gz: 1add4fd86b293082a53b227b637c8d67ec3d43272971700ef489c0cf6f5c1634
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa60ed7eb4a8974bff5b00f8edc0fdd4108ba01da21244015bafbc463323c3e5efa20480c6512dadac7029cf2c3daa15205931b0aa5f9a71999cf36d3d03e4be
|
7
|
+
data.tar.gz: c59dbe9298d800901cc4a24cfccc444bb032a98addd36209da4d5c1aa654d1096de5d42aeaf41a5e2ad9a0c05a97283e08d428c094563e8c64ee265aafff3376
|
data/lib/ucasy/base.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require_relative "context"
|
2
2
|
require_relative "failure"
|
3
|
+
require_relative "validators/validate"
|
3
4
|
require_relative "validators/required_attributes"
|
4
5
|
|
5
6
|
module Ucasy
|
@@ -9,6 +10,12 @@ module Ucasy
|
|
9
10
|
new(context).perform
|
10
11
|
end
|
11
12
|
|
13
|
+
def validate(validator_class)
|
14
|
+
@validator_class = validator_class
|
15
|
+
end
|
16
|
+
|
17
|
+
attr_reader :validator_class
|
18
|
+
|
12
19
|
def required_attributes(*attributes)
|
13
20
|
@required_attributes = attributes
|
14
21
|
end
|
@@ -25,7 +32,9 @@ module Ucasy
|
|
25
32
|
def perform
|
26
33
|
return if failure?
|
27
34
|
|
35
|
+
validate!
|
28
36
|
validate_required_attributes!
|
37
|
+
|
29
38
|
try(:before) if success?
|
30
39
|
call if success?
|
31
40
|
try(:after) if success?
|
@@ -39,6 +48,20 @@ module Ucasy
|
|
39
48
|
|
40
49
|
attr_reader :context
|
41
50
|
|
51
|
+
def validate!
|
52
|
+
return if self.class.validator_class.blank?
|
53
|
+
|
54
|
+
validator = Validators::Validate.call(self.class.validator_class, context.to_h)
|
55
|
+
|
56
|
+
if validator.valid?
|
57
|
+
validator.to_context.each do |key, value|
|
58
|
+
context.send(:"#{key}=", value)
|
59
|
+
end
|
60
|
+
else
|
61
|
+
context.fail!(status: :unprocessable_entity, message: validator.message, errors: validator.errors)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
42
65
|
def validate_required_attributes!
|
43
66
|
Validators::RequiredAttributes.call(context, self.class._required_attributes, self.class)
|
44
67
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Ucasy::Validators
|
2
|
+
class Validate < Ucasy::Callable
|
3
|
+
def initialize(klass, attributes)
|
4
|
+
@klass = klass
|
5
|
+
@attributes = attributes
|
6
|
+
end
|
7
|
+
|
8
|
+
def call
|
9
|
+
@validator = @klass.new(@attributes) if @klass.present?
|
10
|
+
|
11
|
+
self
|
12
|
+
end
|
13
|
+
|
14
|
+
def message
|
15
|
+
@validator.try(:message_error)
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_context
|
19
|
+
@validator.try(:to_context) || {}
|
20
|
+
end
|
21
|
+
|
22
|
+
def valid?
|
23
|
+
@validator&.valid? || false
|
24
|
+
end
|
25
|
+
|
26
|
+
def invalid?
|
27
|
+
!valid?
|
28
|
+
end
|
29
|
+
|
30
|
+
def errors
|
31
|
+
@validator&.errors || []
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/ucasy/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ucasy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lavenda Software
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-09-
|
11
|
+
date: 2024-09-07 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email:
|
@@ -33,6 +33,7 @@ files:
|
|
33
33
|
- lib/ucasy/failure.rb
|
34
34
|
- lib/ucasy/flow.rb
|
35
35
|
- lib/ucasy/validators/required_attributes.rb
|
36
|
+
- lib/ucasy/validators/validate.rb
|
36
37
|
- lib/ucasy/version.rb
|
37
38
|
- sig/ucasy/spec.rbs
|
38
39
|
- ucasy.gemspec
|