restme 1.1.1 → 1.2.0
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/README.md +4 -0
- data/lib/restme/scope/field/attachable.rb +23 -7
- data/lib/restme/scope/field/rules.rb +2 -24
- data/lib/restme/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f3c9d79dc88d267a1198ec23b54f05d8af00367125b1cf1f3fcd6c458633b35
|
4
|
+
data.tar.gz: 48c79f664b0fb61dea85fdd4d2d56d63520f7389c6b31adbead1c41a6b945268
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 80455f1ab99ddec14145d9ed3229c491abfd48c1d2db0fae6532d56ca3304783749d2cba38216ef6529ed6a2985743ed41c3feb2e3fb72273eb8c1a87eae332a
|
7
|
+
data.tar.gz: e7033c0ded95c20fb3df221af86dff3801a67c80cd7b9f3ac4d070f4f64b979d385e01874bbceccdf0affac556752261ffc24e22acd485651d9163650083f8c8
|
data/README.md
CHANGED
@@ -215,6 +215,10 @@ module ProductsController::Field
|
|
215
215
|
},
|
216
216
|
category: {
|
217
217
|
table_name: :categories
|
218
|
+
},
|
219
|
+
producer: { # When a nested field can be nil, Restme will not return the primary model unless a LEFT JOIN is explicitly used.
|
220
|
+
table_name: :producers,
|
221
|
+
join_type: :left_joins # Use that so Restme will generate a LEFT JOIN instead of an INNER JOIN. This will
|
218
222
|
}
|
219
223
|
}.freeze
|
220
224
|
end
|
@@ -8,19 +8,35 @@ module Restme
|
|
8
8
|
def insert_attachments(scope)
|
9
9
|
unallowed_attachment_fields_error
|
10
10
|
|
11
|
-
return scope.
|
11
|
+
return scope.as_json(json_options) if attachment_fields_select.blank?
|
12
12
|
|
13
|
-
|
13
|
+
define_attachment_methods
|
14
14
|
|
15
|
-
scope.
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
scope.includes(attachment_fields_select_includes)
|
16
|
+
.as_json(json_options)
|
17
|
+
end
|
18
|
+
|
19
|
+
def json_options
|
20
|
+
{
|
21
|
+
include: valid_nested_fields_select,
|
22
|
+
methods: attachment_methods
|
23
|
+
}
|
24
|
+
end
|
19
25
|
|
20
|
-
|
26
|
+
def define_attachment_methods
|
27
|
+
attachment_fields_select.each do |attachment_field_name|
|
28
|
+
klass.class_eval do
|
29
|
+
define_method(:"#{attachment_field_name}_url") do
|
30
|
+
send(attachment_field_name).url
|
31
|
+
end
|
32
|
+
end
|
21
33
|
end
|
22
34
|
end
|
23
35
|
|
36
|
+
def attachment_methods
|
37
|
+
attachment_fields_select&.map { |field| "#{field}_url" }
|
38
|
+
end
|
39
|
+
|
24
40
|
def attachment_fields_select_includes
|
25
41
|
attachment_fields_select.map { |field| { "#{field}_attachment": :blob } }
|
26
42
|
end
|
@@ -22,23 +22,13 @@ module Restme
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def select_nested_scope(scoped)
|
25
|
-
scoped.
|
26
|
-
.left_joins(nested_fields_left_joins)
|
27
|
-
.preload(valid_nested_fields_select)
|
28
|
-
.select(nesteds_table)
|
25
|
+
scoped.preload(valid_nested_fields_select)
|
29
26
|
end
|
30
27
|
|
31
28
|
def select_any_field?
|
32
29
|
fields_select || nested_fields_select || attachment_fields_select
|
33
30
|
end
|
34
31
|
|
35
|
-
def nesteds_table
|
36
|
-
valid_nested_fields_select&.map do |field|
|
37
|
-
table = nested_selectable_fields_keys.dig(field, :table_name)
|
38
|
-
table.present? ? "#{table}::text AS #{field}" : nil
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
32
|
def model_fields_select
|
43
33
|
@model_fields_select ||= begin
|
44
34
|
fields = fields_select&.split(",")
|
@@ -51,22 +41,10 @@ module Restme
|
|
51
41
|
@model_attributes ||= klass.new.attributes.keys
|
52
42
|
end
|
53
43
|
|
54
|
-
def nested_fields_joins
|
55
|
-
@nested_fields_joins ||= valid_nested_fields_select.select do |field|
|
56
|
-
nested_selectable_fields_keys[field.to_sym][:join_type].blank?
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
def nested_fields_left_joins
|
61
|
-
@nested_fields_left_joins ||= valid_nested_fields_select.select do |field|
|
62
|
-
nested_selectable_fields_keys[field.to_sym][:join_type] == :left_joins
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
44
|
def valid_nested_fields_select
|
67
45
|
@valid_nested_fields_select ||=
|
68
46
|
nested_fields_select&.split(",")&.select do |field|
|
69
|
-
nested_selectable_fields_keys
|
47
|
+
nested_selectable_fields_keys.key?(field.to_sym)
|
70
48
|
end&.map(&:to_sym)
|
71
49
|
end
|
72
50
|
|
data/lib/restme/version.rb
CHANGED