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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 39747304db149c67fa5931f4bb55e5f641ac479a0c81736b2b8a0dc898852d6a
4
- data.tar.gz: 915b258020520848ef336dff958a942ec9718bcff240be9c05e4ebf6c6ff75a0
3
+ metadata.gz: d0132fdb2e9dd8a4142857cec51cea3fd6ebe68939701425921c80e550a6f494
4
+ data.tar.gz: 7286cb4c8019cf11b0be4b91c71404ea5e3752c543fe3510bc56bd99c50b0614
5
5
  SHA512:
6
- metadata.gz: 29518075759d273084208dbe9906ab74468f0ccd7318639714be8efdc1e4ae058eba8d8bc8ac8ea4329520de0e463760fdd64a4e1293c4c444c54be92d9fd69d
7
- data.tar.gz: 9b1f671a116493fd55a6c35667f5e732521b1136e341d525a13b09332eef62a4a2c70c067da2919650ab56e057842774fff614bc6202327ed0b7d0eca5839ced
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.0.4)
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.0)
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.7.0)
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.8, >= 1.8.0)
54
+ dry-schema (~> 1.9, >= 1.9.1)
55
55
  factory_bot (6.2.0)
56
56
  activesupport (>= 5.0.0)
57
- faraday (1.9.3)
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.1-x86_64-linux)
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
- LedgerSync::Error::OperationError.new(
34
- operation: self,
35
- message: message,
36
- response: data
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
- LedgerSync::Error::OperationError.new(
45
- operation: self,
46
- message: message,
47
- response: data
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.except(:id))
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
- LedgerSync::Error::OperationError.new(
43
- operation: self,
44
- message: message,
45
- response: data
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 Relation
7
- def initialize(serializer:, resource:, attribute:)
8
- @query = resource.try(attribute)
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
- Relation.new(
112
+ Query.new(
112
113
  serializer: serializer,
113
- resource: resource,
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 'relation'
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
- Relation.const_get(
26
+ Query.const_get(
27
27
  args.type.class.to_s.split('::').last
28
28
  ).new.proxy(
29
29
  serializer: args.type.serializer.new,
@@ -2,6 +2,6 @@
2
2
 
3
3
  module LedgerSync
4
4
  module Domains
5
- VERSION = '1.0.4'
5
+ VERSION = '1.1.1'
6
6
  end
7
7
  end
@@ -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.0.4
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-02-15 00:00:00.000000000 Z
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/relation.rb
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