xsdk-scaffold-rails 0.1.12 → 0.1.13
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/Gemfile.lock +2 -2
- data/lib/xsdk/scaffold/rails/base_datatable.rb +23 -16
- data/lib/xsdk/scaffold/rails/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0773c986b92038986abeaf84a68311fe5a48aebdde49c00d768bfc1cc21a642d
|
4
|
+
data.tar.gz: 2f47f3fe4105bad3d02d505766a80ed024fc14ba2c623606fab5e773c2eb83c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5a844c4703046e60dd417fe92e0188095789e045d11e006be79ed6342e096b54146e29f22ca2c324ac4ac7471878f01eae592da802255640d4a66ab477dc6420
|
7
|
+
data.tar.gz: '098c71e282d0920f48d24da5b7551fc9c1e79ac65a5a5e54f83d5eb69d7103fd51d60d082828f205e441f23d1b5507d48ee89f7f6a8f9db2fb831ca327cf214b'
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
xsdk-scaffold-rails (0.1.
|
4
|
+
xsdk-scaffold-rails (0.1.13)
|
5
5
|
activerecord (>= 6.0.0)
|
6
6
|
pg (>= 1.1)
|
7
7
|
|
@@ -42,7 +42,7 @@ GEM
|
|
42
42
|
parallel (1.20.1)
|
43
43
|
parser (3.0.1.1)
|
44
44
|
ast (~> 2.4.1)
|
45
|
-
pg (1.
|
45
|
+
pg (1.4.6)
|
46
46
|
racc (1.5.2)
|
47
47
|
rack (2.2.3)
|
48
48
|
rainbow (3.0.0)
|
@@ -36,7 +36,7 @@ module Xsdk
|
|
36
36
|
data.order(order_string).as_json(
|
37
37
|
methods: methods + enum_methods,
|
38
38
|
except: keys_to_exclude,
|
39
|
-
include:
|
39
|
+
include: associations_include
|
40
40
|
)
|
41
41
|
end
|
42
42
|
|
@@ -56,28 +56,33 @@ module Xsdk
|
|
56
56
|
@clazz.all
|
57
57
|
end
|
58
58
|
|
59
|
+
def association_is_has_many_or_one?(v)
|
60
|
+
v[:association_type] == :has_many || v[:association_type] == :has_one
|
61
|
+
end
|
62
|
+
|
59
63
|
def get_data
|
60
64
|
data = get_raw_data
|
61
|
-
associations.reject { |_k, v| v
|
65
|
+
associations.reject { |_k, v| association_is_has_many_or_one?(v) }.each do |_, value|
|
62
66
|
data = data.send(value[:join_type] || :joins, value[:relation])
|
63
67
|
end
|
64
|
-
to_select = associations.reject
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
68
|
+
to_select = associations.reject{ |_k, v| association_is_has_many_or_one?(v) }
|
69
|
+
.reject { |_k, v| v[:source] == 'id' }
|
70
|
+
.map do |key, value|
|
71
|
+
table_name = @foreign_keys[key][0][:class_name].constantize.table_name
|
72
|
+
"#{table_name}.#{value[:source]} AS #{value[:relation]}_#{value[:source]}"
|
73
|
+
end
|
74
|
+
|
70
75
|
data = data.select("#{@clazz.table_name}.*", *to_select)
|
71
76
|
|
72
|
-
associations.select { |_k, v| v
|
77
|
+
associations.select { |_k, v| association_is_has_many_or_one?(v) }.each do |_, v|
|
73
78
|
data = data.includes(v[:join]).references(v[:join])
|
74
79
|
end
|
75
80
|
|
76
81
|
data
|
77
82
|
end
|
78
83
|
|
79
|
-
def
|
80
|
-
associations.select
|
84
|
+
def associations_include
|
85
|
+
associations.select{ |_, v| association_is_has_many_or_one?(v) }.map { |_, v| v[:include] }
|
81
86
|
end
|
82
87
|
|
83
88
|
def get_if_can_show_new_record(key)
|
@@ -125,7 +130,7 @@ module Xsdk
|
|
125
130
|
def get_subschema(c)
|
126
131
|
subschema = nil
|
127
132
|
ax = associations.with_indifferent_access
|
128
|
-
if ax.key?(c) && (ax[c]
|
133
|
+
if ax.key?(c) && association_is_has_many_or_one?(ax[c])
|
129
134
|
child_options = { options: {}.to_json }
|
130
135
|
child_options = { options: ax[c][:options].to_json } if ax[c][:options].present?
|
131
136
|
begin
|
@@ -205,7 +210,7 @@ module Xsdk
|
|
205
210
|
ax = associations.with_indifferent_access
|
206
211
|
if @foreign_keys.key?(c)
|
207
212
|
@foreign_keys[c][0][:class_name].constantize.table_name
|
208
|
-
elsif ax.key?(c) && (ax[c]
|
213
|
+
elsif ax.key?(c) && association_is_has_many_or_one?(ax[c])
|
209
214
|
ax[c][:clazz].table_name
|
210
215
|
else
|
211
216
|
@clazz.table_name
|
@@ -214,7 +219,7 @@ module Xsdk
|
|
214
219
|
|
215
220
|
def get_source(c)
|
216
221
|
ax = associations.with_indifferent_access
|
217
|
-
if ax.key?(c) && (ax[c]
|
222
|
+
if ax.key?(c) && !association_is_has_many_or_one?(ax[c])
|
218
223
|
ax[c][:source]
|
219
224
|
else
|
220
225
|
c
|
@@ -225,7 +230,7 @@ module Xsdk
|
|
225
230
|
ax = associations.with_indifferent_access
|
226
231
|
if @foreign_keys.key?(c)
|
227
232
|
@foreign_keys[c][0][:class_name].constantize.model_name.human.capitalize
|
228
|
-
elsif ax.key?(c) && (ax[c]
|
233
|
+
elsif ax.key?(c) && association_is_has_many_or_one?(ax[c])
|
229
234
|
ax[c][:clazz].model_name.human.capitalize
|
230
235
|
elsif transient_columns.key?(c)
|
231
236
|
transient_columns[c][:text]
|
@@ -240,6 +245,8 @@ module Xsdk
|
|
240
245
|
'foreign_key'
|
241
246
|
elsif ax.key?(c) && (ax[c][:association_type] == :has_many)
|
242
247
|
'has_many'
|
248
|
+
elsif ax.key?(c) && (ax[c][:association_type] == :has_one)
|
249
|
+
'has_one'
|
243
250
|
elsif @clazz.defined_enums.key?(c)
|
244
251
|
'enum'
|
245
252
|
elsif transient_columns.key?(c)
|
@@ -252,7 +259,7 @@ module Xsdk
|
|
252
259
|
def get_table_value(c)
|
253
260
|
ax = associations.with_indifferent_access
|
254
261
|
if ax.key?(c)
|
255
|
-
if ax[c]
|
262
|
+
if association_is_has_many_or_one?(ax[c])
|
256
263
|
c
|
257
264
|
else
|
258
265
|
"#{ax[c][:relation]}_#{ax[c][:source]}"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xsdk-scaffold-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Davide Croci
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-04-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -124,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
126
|
requirements: []
|
127
|
-
rubygems_version: 3.2.
|
127
|
+
rubygems_version: 3.2.33
|
128
128
|
signing_key:
|
129
129
|
specification_version: 4
|
130
130
|
summary: Gem for automatic scaffolding by Ermes-x.
|