ledger_sync-domains 1.0.4 → 1.1.1

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: 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