xsdk-scaffold-rails 0.1.12 → 0.1.13

Sign up to get free protection for your applications and to get access to all the features.
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.