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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 28851d6c097ba72105793a5a26aed4eedd9ae413da24c802d02af1afbafa428b
4
- data.tar.gz: a5ffc5bc72948b77f3c0758b0cfe4b66520d1f429c3463d29067a79e2b469107
3
+ metadata.gz: 0773c986b92038986abeaf84a68311fe5a48aebdde49c00d768bfc1cc21a642d
4
+ data.tar.gz: 2f47f3fe4105bad3d02d505766a80ed024fc14ba2c623606fab5e773c2eb83c6
5
5
  SHA512:
6
- metadata.gz: db15834104004ab36312f8a547fd147dc81d825f65df98e6cb7301d3b20e5a9bb65aafd9624cbf2f7b967b7837184e2476c7340ddba1b1219aea3d37952082ae
7
- data.tar.gz: 037ec03650a94222c3a9f6ab003f63ce9168c6497018e50bc566ae7fe024c65b8a1cb8cd306fe106d3449cf715f0430ab1bc9eabaca64f0f570a6c5e42a44460
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.12)
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.3.5)
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: has_many_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[:association_type] == :has_many }.each do |_, value|
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 do |_k, v|
65
- v[:association_type] == :has_many
66
- end.reject { |_k, v| v[:source] == 'id' }.map do |key, value|
67
- table_name = @foreign_keys[key][0][:class_name].constantize.table_name
68
- "#{table_name}.#{value[:source]} AS #{value[:relation]}_#{value[:source]}"
69
- end
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[:association_type] == :has_many }.each do |_, 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 has_many_include
80
- associations.select { |_, v| v[:association_type] == :has_many }.map { |_, v| v[:include] }
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][:association_type] == :has_many)
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][:association_type] == :has_many)
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][:association_type] != :has_many)
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][:association_type] == :has_many)
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][:association_type] == :has_many
262
+ if association_is_has_many_or_one?(ax[c])
256
263
  c
257
264
  else
258
265
  "#{ax[c][:relation]}_#{ax[c][:source]}"
@@ -1,7 +1,7 @@
1
1
  module Xsdk
2
2
  module Scaffold
3
3
  module Rails
4
- VERSION = "0.1.12"
4
+ VERSION = "0.1.13"
5
5
  end
6
6
  end
7
7
  end
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.12
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: 2022-05-24 00:00:00.000000000 Z
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.3
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.