ledger_sync-domains 1.0.4 → 1.1.1
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/CHANGELOG.md +15 -0
- data/Gemfile.lock +6 -6
- data/lib/ledger_sync/domains/operation/add.rb +12 -6
- data/lib/ledger_sync/domains/operation/query.rb +41 -0
- data/lib/ledger_sync/domains/operation/remove.rb +5 -5
- data/lib/ledger_sync/domains/operation/resource.rb +6 -0
- data/lib/ledger_sync/domains/operation/update.rb +7 -6
- data/lib/ledger_sync/domains/serializer/{relation.rb → query.rb} +6 -6
- data/lib/ledger_sync/domains/serializer/struct.rb +2 -2
- data/lib/ledger_sync/domains/version.rb +1 -1
- data/lib/ledger_sync/domains.rb +1 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d0132fdb2e9dd8a4142857cec51cea3fd6ebe68939701425921c80e550a6f494
|
4
|
+
data.tar.gz: 7286cb4c8019cf11b0be4b91c71404ea5e3752c543fe3510bc56bd99c50b0614
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad1039a526064cbbc9d2917c919758ada5f3b322945832986dbbd4f5dc14a3d0fa603e5c34ae83139c2e5ebf54709bcad3d08293e3bce8801b2086934077e51e
|
7
|
+
data.tar.gz: a35ef11c56f2aaebd6af85c9f5760f8e3f4ed3362d652860861c817fc4abb0687441400f43c418c3b3bf86f449909bf653d036d81684f10e2c2452cc75900faf
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,20 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
+
## [1.1.1] - 2022-03-17
|
4
|
+
|
5
|
+
- Feature: Refactor Relation into Query for use outside of relationships
|
6
|
+
- Feature: Add Query operation
|
7
|
+
|
8
|
+
## [1.1.0] - 2022-02-25
|
9
|
+
|
10
|
+
- Feature: Add and Update operations uses `data` params for setting model attributes
|
11
|
+
- Chore: minor indentation cleanup
|
12
|
+
- Feature: add method to output validation errors as a string
|
13
|
+
|
14
|
+
## [1.0.5] - 2022-02-17
|
15
|
+
|
16
|
+
- Fix: Do not serialize unset reader relational method
|
17
|
+
|
3
18
|
## [1.0.4] - 2022-02-15
|
4
19
|
|
5
20
|
- Fix: Do not serialize unset relationships
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ledger_sync-domains (1.
|
4
|
+
ledger_sync-domains (1.1.1)
|
5
5
|
ledger_sync (~> 2.3.1)
|
6
6
|
|
7
7
|
GEM
|
@@ -33,7 +33,7 @@ GEM
|
|
33
33
|
dry-logic (1.2.0)
|
34
34
|
concurrent-ruby (~> 1.0)
|
35
35
|
dry-core (~> 0.5, >= 0.5)
|
36
|
-
dry-schema (1.9.
|
36
|
+
dry-schema (1.9.1)
|
37
37
|
concurrent-ruby (~> 1.0)
|
38
38
|
dry-configurable (~> 0.13, >= 0.13.0)
|
39
39
|
dry-core (~> 0.5, >= 0.5)
|
@@ -46,15 +46,15 @@ GEM
|
|
46
46
|
dry-core (~> 0.5, >= 0.5)
|
47
47
|
dry-inflector (~> 0.1, >= 0.1.2)
|
48
48
|
dry-logic (~> 1.0, >= 1.0.2)
|
49
|
-
dry-validation (1.
|
49
|
+
dry-validation (1.8.0)
|
50
50
|
concurrent-ruby (~> 1.0)
|
51
51
|
dry-container (~> 0.7, >= 0.7.1)
|
52
52
|
dry-core (~> 0.5, >= 0.5)
|
53
53
|
dry-initializer (~> 3.0)
|
54
|
-
dry-schema (~> 1.
|
54
|
+
dry-schema (~> 1.9, >= 1.9.1)
|
55
55
|
factory_bot (6.2.0)
|
56
56
|
activesupport (>= 5.0.0)
|
57
|
-
faraday (1.
|
57
|
+
faraday (1.10.0)
|
58
58
|
faraday-em_http (~> 1.0)
|
59
59
|
faraday-em_synchrony (~> 1.0)
|
60
60
|
faraday-excon (~> 1.1)
|
@@ -103,7 +103,7 @@ GEM
|
|
103
103
|
simply_serializable (>= 1.5.1)
|
104
104
|
minitest (5.15.0)
|
105
105
|
multipart-post (2.1.1)
|
106
|
-
nokogiri (1.13.
|
106
|
+
nokogiri (1.13.3-x86_64-linux)
|
107
107
|
racc (~> 1.4)
|
108
108
|
openssl (2.2.1)
|
109
109
|
ipaddr
|
@@ -7,6 +7,12 @@ module LedgerSync
|
|
7
7
|
module Domains
|
8
8
|
class Operation
|
9
9
|
class Add < Resource
|
10
|
+
class Contract < LedgerSync::Ledgers::Contract
|
11
|
+
params do
|
12
|
+
required(:data).value(:hash)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
10
16
|
private
|
11
17
|
|
12
18
|
def operate
|
@@ -21,7 +27,7 @@ module LedgerSync
|
|
21
27
|
end
|
22
28
|
|
23
29
|
def resource
|
24
|
-
@resource ||= resource_class.new(params)
|
30
|
+
@resource ||= resource_class.new(params[:data])
|
25
31
|
end
|
26
32
|
|
27
33
|
def success
|
@@ -30,11 +36,11 @@ module LedgerSync
|
|
30
36
|
|
31
37
|
def failure(message, data: nil)
|
32
38
|
super(
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
39
|
+
LedgerSync::Error::OperationError.new(
|
40
|
+
operation: self,
|
41
|
+
message: message,
|
42
|
+
response: data
|
43
|
+
)
|
38
44
|
)
|
39
45
|
end
|
40
46
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../operation'
|
4
|
+
require_relative 'resource'
|
5
|
+
|
6
|
+
module LedgerSync
|
7
|
+
module Domains
|
8
|
+
class Operation
|
9
|
+
class Query < Resource
|
10
|
+
class Contract < LedgerSync::Ledgers::Contract
|
11
|
+
params do
|
12
|
+
required(:query).value(:hash)
|
13
|
+
required(:limit).value(:hash)
|
14
|
+
required(:includes).value(:array)
|
15
|
+
required(:order).value(:string)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def operate
|
22
|
+
success(query)
|
23
|
+
end
|
24
|
+
|
25
|
+
def resources
|
26
|
+
@resources ||= resource_class.where(params[:limit])
|
27
|
+
.where(params[:query])
|
28
|
+
.includes(params[:includes])
|
29
|
+
.order(params[:order])
|
30
|
+
end
|
31
|
+
|
32
|
+
def query
|
33
|
+
LedgerSync::Domains::Serializer::Query.new(
|
34
|
+
serializer: params[:serializer] || serializer_for(resource: resource_class.new),
|
35
|
+
query: resources
|
36
|
+
)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -41,11 +41,11 @@ module LedgerSync
|
|
41
41
|
|
42
42
|
def failure(message, data: nil)
|
43
43
|
super(
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
44
|
+
LedgerSync::Error::OperationError.new(
|
45
|
+
operation: self,
|
46
|
+
message: message,
|
47
|
+
response: data
|
48
|
+
)
|
49
49
|
)
|
50
50
|
end
|
51
51
|
end
|
@@ -10,6 +10,12 @@ module LedgerSync
|
|
10
10
|
@resource_class ||= inferred_resource_class
|
11
11
|
end
|
12
12
|
|
13
|
+
def validation_error_message
|
14
|
+
errors.messages.map do |e|
|
15
|
+
"#{e.path.first.to_s.gsub('_', ' ').capitalize} #{e.text}"
|
16
|
+
end.to_sentence
|
17
|
+
end
|
18
|
+
|
13
19
|
private
|
14
20
|
|
15
21
|
def inferred_resource_class
|
@@ -11,6 +11,7 @@ module LedgerSync
|
|
11
11
|
params do
|
12
12
|
required(:id).filled(:integer)
|
13
13
|
required(:limit).value(:hash)
|
14
|
+
required(:data).value(:hash)
|
14
15
|
end
|
15
16
|
end
|
16
17
|
|
@@ -19,7 +20,7 @@ module LedgerSync
|
|
19
20
|
def operate
|
20
21
|
return failure('Resource not found') unless resource
|
21
22
|
|
22
|
-
if resource.update(params
|
23
|
+
if resource.update(params[:data])
|
23
24
|
success
|
24
25
|
else
|
25
26
|
failure(
|
@@ -39,11 +40,11 @@ module LedgerSync
|
|
39
40
|
|
40
41
|
def failure(message, data: nil)
|
41
42
|
super(
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
43
|
+
LedgerSync::Error::OperationError.new(
|
44
|
+
operation: self,
|
45
|
+
message: message,
|
46
|
+
response: data
|
47
|
+
)
|
47
48
|
)
|
48
49
|
end
|
49
50
|
end
|
@@ -3,9 +3,9 @@
|
|
3
3
|
module LedgerSync
|
4
4
|
module Domains
|
5
5
|
class Serializer < LedgerSync::Serializer
|
6
|
-
class
|
7
|
-
def initialize(serializer:,
|
8
|
-
@query =
|
6
|
+
class Query
|
7
|
+
def initialize(serializer:, query:)
|
8
|
+
@query = query
|
9
9
|
@serializer = serializer
|
10
10
|
end
|
11
11
|
|
@@ -41,6 +41,7 @@ module LedgerSync
|
|
41
41
|
READER_METHODS.each do |name|
|
42
42
|
define_method(name) do |*args, **params, &block|
|
43
43
|
item = @query.send(name, *args, **params, &block)
|
44
|
+
return nil unless item
|
44
45
|
|
45
46
|
@serializer.serialize(resource: item)
|
46
47
|
end
|
@@ -108,10 +109,9 @@ module LedgerSync
|
|
108
109
|
|
109
110
|
class SerializerReferencesManyType
|
110
111
|
def proxy(serializer:, resource:, attribute:)
|
111
|
-
|
112
|
+
Query.new(
|
112
113
|
serializer: serializer,
|
113
|
-
|
114
|
-
attribute: attribute
|
114
|
+
query: resource.try(attribute)
|
115
115
|
)
|
116
116
|
end
|
117
117
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative '
|
3
|
+
require_relative 'query'
|
4
4
|
|
5
5
|
module LedgerSync
|
6
6
|
module Domains
|
@@ -23,7 +23,7 @@ module LedgerSync
|
|
23
23
|
define_method('to_hash') { hash }
|
24
24
|
references.each do |args|
|
25
25
|
define_method(args.hash_attribute) do
|
26
|
-
|
26
|
+
Query.const_get(
|
27
27
|
args.type.class.to_s.split('::').last
|
28
28
|
).new.proxy(
|
29
29
|
serializer: args.type.serializer.new,
|
data/lib/ledger_sync/domains.rb
CHANGED
@@ -8,6 +8,7 @@ require_relative 'domains/operation'
|
|
8
8
|
require_relative 'domains/operation/resource'
|
9
9
|
require_relative 'domains/operation/add'
|
10
10
|
require_relative 'domains/operation/find'
|
11
|
+
require_relative 'domains/operation/query'
|
11
12
|
require_relative 'domains/operation/remove'
|
12
13
|
require_relative 'domains/operation/search'
|
13
14
|
require_relative 'domains/operation/transition'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ledger_sync-domains
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jozef Vaclavik
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ledger_sync
|
@@ -91,13 +91,14 @@ files:
|
|
91
91
|
- lib/ledger_sync/domains/operation.rb
|
92
92
|
- lib/ledger_sync/domains/operation/add.rb
|
93
93
|
- lib/ledger_sync/domains/operation/find.rb
|
94
|
+
- lib/ledger_sync/domains/operation/query.rb
|
94
95
|
- lib/ledger_sync/domains/operation/remove.rb
|
95
96
|
- lib/ledger_sync/domains/operation/resource.rb
|
96
97
|
- lib/ledger_sync/domains/operation/search.rb
|
97
98
|
- lib/ledger_sync/domains/operation/transition.rb
|
98
99
|
- lib/ledger_sync/domains/operation/update.rb
|
99
100
|
- lib/ledger_sync/domains/serializer.rb
|
100
|
-
- lib/ledger_sync/domains/serializer/
|
101
|
+
- lib/ledger_sync/domains/serializer/query.rb
|
101
102
|
- lib/ledger_sync/domains/serializer/struct.rb
|
102
103
|
- lib/ledger_sync/domains/store.rb
|
103
104
|
- lib/ledger_sync/domains/version.rb
|