readymade 0.1.5 → 0.1.6
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 +6 -0
- data/Gemfile.lock +1 -1
- data/lib/readymade/controller/serialization.rb +70 -0
- data/lib/readymade/instant_form.rb +0 -1
- data/lib/readymade/version.rb +1 -1
- data/lib/readymade.rb +1 -0
- data/readymade.gemspec +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: d3200170eaca31067b42086203dd8c87a137ebf61cd37e7619c698cb59518fa1
|
4
|
+
data.tar.gz: b39ad5ddedfda056fbffddb7fc9d9e2449aae85cf41cb62ec67f521b2dab41fa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f724c7a36056919214a775e22f7c11e0546bb5cc5efad9ffe6cc141d3df9efc169441d4cb3141704308d1607a067772150c13c6ee74ba616b37ddb751f09f678
|
7
|
+
data.tar.gz: 1b05d7f2797eaabfc128d1869b5d52218be2bd28713af743c05ce9ad02195ad825e4174d1a2920032c9d88ef06b33ed0b1fadbbed58c8834dfe2ca94e8160b43
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
|
3
|
+
module Readymade
|
4
|
+
module Controller
|
5
|
+
module Serialization
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
def record_response(record, *args)
|
9
|
+
options = args.extract_options!
|
10
|
+
return render_json({}, :not_found) if record.nil?
|
11
|
+
|
12
|
+
hash = serialize_record(record, options)
|
13
|
+
|
14
|
+
status = if record.errors.none?
|
15
|
+
options[:status] || :ok
|
16
|
+
else
|
17
|
+
hash[:errors] = record.errors.messages
|
18
|
+
:bad_request
|
19
|
+
end
|
20
|
+
render_json(hash, status)
|
21
|
+
end
|
22
|
+
|
23
|
+
def collection_response(collection, *args)
|
24
|
+
options = args.extract_options!
|
25
|
+
|
26
|
+
render_json(
|
27
|
+
{
|
28
|
+
items: serialize_collection(paginate(collection, options), options),
|
29
|
+
count: collection.count
|
30
|
+
},
|
31
|
+
options[:status] || :ok
|
32
|
+
)
|
33
|
+
end
|
34
|
+
|
35
|
+
def render_json(message, status)
|
36
|
+
render json: message, status: status
|
37
|
+
end
|
38
|
+
|
39
|
+
def serialize_collection(collection, options = {})
|
40
|
+
serializer = options.delete(:serializer) || "#{collection.klass.name}Serializer".constantize
|
41
|
+
serializer.render_as_hash(collection, options)
|
42
|
+
end
|
43
|
+
|
44
|
+
def serialize_record(record, options = {})
|
45
|
+
serializer = options.delete(:serializer) || "#{record.class.name}Serializer".constantize
|
46
|
+
serializer.render_as_hash(record, { root: :data }.merge!(options))
|
47
|
+
end
|
48
|
+
|
49
|
+
def operation_response(response_obj, options = {})
|
50
|
+
message, status = case response_obj.status.to_sym
|
51
|
+
when :success, :ok
|
52
|
+
[
|
53
|
+
if response_obj.data[:record].present?
|
54
|
+
serialize_record(response_obj.data[:record],
|
55
|
+
options)
|
56
|
+
else
|
57
|
+
{}
|
58
|
+
end,
|
59
|
+
:ok
|
60
|
+
]
|
61
|
+
when :validation_fail, :bad_request
|
62
|
+
[{ errors: response_obj.data[:errors] }, :bad_request]
|
63
|
+
else
|
64
|
+
[response_obj.status.to_sym, {}]
|
65
|
+
end
|
66
|
+
render_json(message, status)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/lib/readymade/version.rb
CHANGED
data/lib/readymade.rb
CHANGED
data/readymade.gemspec
CHANGED
@@ -25,6 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
26
26
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
27
27
|
end
|
28
|
+
spec.files << 'lib/readymade/controller/serialization.rb'
|
28
29
|
spec.bindir = 'exe'
|
29
30
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
30
31
|
spec.require_paths = ['lib']
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: readymade
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- OrestF
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-12-
|
11
|
+
date: 2021-12-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: byebug
|
@@ -73,6 +73,7 @@ files:
|
|
73
73
|
- bin/setup
|
74
74
|
- lib/readymade.rb
|
75
75
|
- lib/readymade/action.rb
|
76
|
+
- lib/readymade/controller/serialization.rb
|
76
77
|
- lib/readymade/form.rb
|
77
78
|
- lib/readymade/instant_form.rb
|
78
79
|
- lib/readymade/operation.rb
|
@@ -101,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
101
102
|
- !ruby/object:Gem::Version
|
102
103
|
version: '0'
|
103
104
|
requirements: []
|
104
|
-
rubygems_version: 3.1.
|
105
|
+
rubygems_version: 3.1.6
|
105
106
|
signing_key:
|
106
107
|
specification_version: 4
|
107
108
|
summary: Set of base classes for ABDI architecture
|