abc_jsonapi 0.3.0 → 0.4.3
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/.gitignore +0 -0
- data/.ruby-version +1 -0
- data/Gemfile +0 -0
- data/Gemfile.lock +11 -11
- data/LICENSE +0 -0
- data/README.md +1 -1
- data/Rakefile +0 -0
- data/abc_jsonapi.gemspec +1 -1
- data/lib/abc_jsonapi.rb +0 -0
- data/lib/abc_jsonapi/collection.rb +0 -0
- data/lib/abc_jsonapi/helpers.rb +0 -0
- data/lib/abc_jsonapi/included_resource.rb +4 -13
- data/lib/abc_jsonapi/model.rb +2 -1
- data/lib/abc_jsonapi/relationship.rb +5 -3
- data/lib/abc_jsonapi/serializer.rb +0 -2
- data/lib/abc_jsonapi/version.rb +1 -1
- data/lib/abc_jsonapi/virtual_attribute.rb +0 -0
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 47608d89a5b953b5248762f9fbd6fec69c39822626c3c8c7099007a335a1dc43
|
4
|
+
data.tar.gz: 9affbf330a11e3823899ad8001e602d606894726fd9ff640520cb223e4ef8adc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e36d1787f14f8d0f2aed441ff9d5a17f189f9ae6d5107b1ac08c6ae6ba4c21ca30081e41ab953544f2010bdb4ead33a1d8fba67992fee71c41ba19a238dee461
|
7
|
+
data.tar.gz: 6be35fcac6f2b64382f34f9006b14ad92a03bb62bb4e7b9b40cab06a4c4548ccad7381038991d082b29ec3e6733350871d238a62827f3a74e812723b68f79246
|
data/.gitignore
CHANGED
File without changes
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.6.5
|
data/Gemfile
CHANGED
File without changes
|
data/Gemfile.lock
CHANGED
@@ -1,32 +1,32 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
abc_jsonapi (0.3
|
4
|
+
abc_jsonapi (0.4.3)
|
5
5
|
activesupport (>= 5.2)
|
6
6
|
i18n
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
activesupport (6.0.
|
11
|
+
activesupport (6.0.3.2)
|
12
12
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
13
13
|
i18n (>= 0.7, < 2)
|
14
14
|
minitest (~> 5.1)
|
15
15
|
tzinfo (~> 1.1)
|
16
|
-
zeitwerk (~> 2.
|
16
|
+
zeitwerk (~> 2.2, >= 2.2.2)
|
17
17
|
byebug (11.0.1)
|
18
18
|
coderay (1.1.2)
|
19
|
-
concurrent-ruby (1.1.
|
19
|
+
concurrent-ruby (1.1.6)
|
20
20
|
diff-lcs (1.3)
|
21
|
-
i18n (1.
|
21
|
+
i18n (1.8.3)
|
22
22
|
concurrent-ruby (~> 1.0)
|
23
23
|
method_source (0.9.2)
|
24
|
-
minitest (5.
|
24
|
+
minitest (5.14.1)
|
25
25
|
pg (1.1.4)
|
26
26
|
pry (0.12.2)
|
27
27
|
coderay (~> 1.1.0)
|
28
28
|
method_source (~> 0.9.0)
|
29
|
-
rake (
|
29
|
+
rake (13.0.1)
|
30
30
|
rspec (3.8.0)
|
31
31
|
rspec-core (~> 3.8.0)
|
32
32
|
rspec-expectations (~> 3.8.0)
|
@@ -42,9 +42,9 @@ GEM
|
|
42
42
|
rspec-support (3.8.2)
|
43
43
|
sequel (5.21.0)
|
44
44
|
thread_safe (0.3.6)
|
45
|
-
tzinfo (1.2.
|
45
|
+
tzinfo (1.2.7)
|
46
46
|
thread_safe (~> 0.1)
|
47
|
-
zeitwerk (2.
|
47
|
+
zeitwerk (2.3.0)
|
48
48
|
|
49
49
|
PLATFORMS
|
50
50
|
ruby
|
@@ -55,9 +55,9 @@ DEPENDENCIES
|
|
55
55
|
byebug
|
56
56
|
pg
|
57
57
|
pry
|
58
|
-
rake (~>
|
58
|
+
rake (~> 13.0)
|
59
59
|
rspec (~> 3.0)
|
60
60
|
sequel
|
61
61
|
|
62
62
|
BUNDLED WITH
|
63
|
-
2.
|
63
|
+
2.1.2
|
data/LICENSE
CHANGED
File without changes
|
data/README.md
CHANGED
@@ -35,7 +35,7 @@ Or install it yourself as:
|
|
35
35
|
|
36
36
|
Syntax is very similar to Active Model Serializer.
|
37
37
|
|
38
|
-
The serializer is able to work with any ruby objects. Not only ActiveRecord.
|
38
|
+
The serializer is able to work with any ruby objects. Not only ActiveRecord. It calls objects methods to get all the data.
|
39
39
|
|
40
40
|
#### Model Example
|
41
41
|
|
data/Rakefile
CHANGED
File without changes
|
data/abc_jsonapi.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.require_paths = ["lib"]
|
24
24
|
|
25
25
|
spec.add_development_dependency "bundler", "~> 2.0"
|
26
|
-
spec.add_development_dependency "rake", "~>
|
26
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
27
27
|
spec.add_development_dependency "rspec", "~> 3.0"
|
28
28
|
spec.add_development_dependency "pry"
|
29
29
|
spec.add_development_dependency "sequel"
|
data/lib/abc_jsonapi.rb
CHANGED
File without changes
|
File without changes
|
data/lib/abc_jsonapi/helpers.rb
CHANGED
File without changes
|
@@ -18,7 +18,7 @@ module AbcJsonapi
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def get_included_records(resource, include_chain)
|
21
|
-
return if resource.
|
21
|
+
return if resource.blank? || include_chain.empty?
|
22
22
|
|
23
23
|
# Get first include name of include_chain and delete it from include_chain
|
24
24
|
inc_resource_name = include_chain.shift
|
@@ -26,15 +26,15 @@ module AbcJsonapi
|
|
26
26
|
# Check if include name is exist in relationships array. Take it or return nil
|
27
27
|
resource_class_name = resource.is_a?(Enumerable) ? resource[0].class.name : resource.class.name
|
28
28
|
relationship = serializer(resource_class_name).relationships.find { |h| h[:name] == inc_resource_name.to_sym }
|
29
|
-
return if relationship.
|
29
|
+
return if relationship.blank?
|
30
30
|
|
31
31
|
# Get included resource
|
32
32
|
if resource.is_a?(Enumerable)
|
33
|
-
resource =
|
33
|
+
resource = resource.map{ |res| res.public_send(inc_resource_name) }.flatten.reject(&:blank?).uniq{ |item| item.id }
|
34
34
|
else
|
35
35
|
resource = resource.public_send(inc_resource_name)
|
36
36
|
end
|
37
|
-
return if resource.
|
37
|
+
return if resource.blank?
|
38
38
|
|
39
39
|
@includes_result << serializer(inc_resource_name).new(resource).serializable_hash[:data]
|
40
40
|
|
@@ -48,15 +48,6 @@ module AbcJsonapi
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
-
def included_items_from_collection(collection, include_name, block = nil)
|
52
|
-
# Run custom include strategy if block given. Otherwise run default method
|
53
|
-
if block.present?
|
54
|
-
block.call(collection)
|
55
|
-
else
|
56
|
-
collection.map{ |res| res.public_send(include_name) }.flatten.reject(&:nil?).uniq{ |item| item.id }
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
51
|
def serializer(included_resource_name)
|
61
52
|
(serializer_namespace + included_resource_name.to_s.classify + 'Serializer').constantize
|
62
53
|
end
|
data/lib/abc_jsonapi/model.rb
CHANGED
@@ -48,7 +48,8 @@ module AbcJsonapi
|
|
48
48
|
rel_model = AbcJsonapi::Relationship.new(
|
49
49
|
model: model,
|
50
50
|
relationship: relationship[:name],
|
51
|
-
type: relationship[:type]
|
51
|
+
type: relationship[:type],
|
52
|
+
block: relationship[:block]
|
52
53
|
)
|
53
54
|
result[relationship[:name].to_sym] = rel_model.serializable_hash
|
54
55
|
end
|
@@ -1,11 +1,12 @@
|
|
1
1
|
module AbcJsonapi
|
2
2
|
class Relationship
|
3
|
-
attr_reader :model, :relationship, :type
|
3
|
+
attr_reader :model, :relationship, :type, :block
|
4
4
|
|
5
|
-
def initialize(model:, relationship:, type:)
|
5
|
+
def initialize(model:, relationship:, type:, block:)
|
6
6
|
@model = model
|
7
7
|
@relationship = relationship
|
8
8
|
@type = type
|
9
|
+
@block = block
|
9
10
|
end
|
10
11
|
|
11
12
|
def serializable_hash
|
@@ -31,7 +32,8 @@ module AbcJsonapi
|
|
31
32
|
end
|
32
33
|
|
33
34
|
def serialize_has_many
|
34
|
-
|
35
|
+
rels = block.present? ? block.call(model) : model.public_send(relationship)
|
36
|
+
data = rels.map do |relation|
|
35
37
|
{
|
36
38
|
id: relation.id.to_s,
|
37
39
|
type: Helpers.pluralize_if_necessary(relationship.to_s).to_sym
|
data/lib/abc_jsonapi/version.rb
CHANGED
File without changes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: abc_jsonapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zhmakin Evgeniy
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '13.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '13.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -144,6 +144,7 @@ extensions: []
|
|
144
144
|
extra_rdoc_files: []
|
145
145
|
files:
|
146
146
|
- ".gitignore"
|
147
|
+
- ".ruby-version"
|
147
148
|
- Gemfile
|
148
149
|
- Gemfile.lock
|
149
150
|
- LICENSE
|
@@ -180,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
180
181
|
- !ruby/object:Gem::Version
|
181
182
|
version: '0'
|
182
183
|
requirements: []
|
183
|
-
rubygems_version: 3.0.
|
184
|
+
rubygems_version: 3.0.3
|
184
185
|
signing_key:
|
185
186
|
specification_version: 4
|
186
187
|
summary: Json API serializer gem
|