brick 1.0.90 → 1.0.91
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/lib/brick/extensions.rb +32 -3
- data/lib/brick/frameworks/rails/engine.rb +12 -2
- data/lib/brick/version_number.rb +1 -1
- data/lib/generators/brick/install_generator.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81eaa518a99452286bdaf1e5ed33b83962ede9f9c6509f0b472fd0fe19a8eceb
|
4
|
+
data.tar.gz: 06f5653ce40eb6ee1568b380cf3063073ac7735add8aab6c5873a343e8018a70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e0a678885c927a7a80c8758d265c2ff351f67ea44e8e1b2c128e123df441f4f72a62f775b9785615eeacbdbff99427e9d1590890bdffd06165ae7b2339fe1af
|
7
|
+
data.tar.gz: 7bd3e424225e435bab4517fb14aeaa3ca128041a746aaf413ecdb17a771444c3413f058ff28cc5e303d074fdd7cc7d21ff66f842667c14226d1849e96d4b3a98
|
data/lib/brick/extensions.rb
CHANGED
@@ -309,9 +309,15 @@ module ActiveRecord
|
|
309
309
|
def self._brick_calculate_bts_hms(translations, join_array)
|
310
310
|
# Add any custom columns
|
311
311
|
::Brick.config.custom_columns&.fetch(table_name, nil)&.each do |k, cc|
|
312
|
+
if cc.is_a?(Array)
|
313
|
+
fk_col = cc.last unless cc.last.blank?
|
314
|
+
cc = cc.first
|
315
|
+
else
|
316
|
+
fk_col = true
|
317
|
+
end
|
312
318
|
# false = not polymorphic, and true = yes -- please emit_dsl
|
313
319
|
pieces, my_dsl = brick_parse_dsl(join_array, [], translations, false, cc, true)
|
314
|
-
_br_cust_cols[k] = [pieces, my_dsl]
|
320
|
+
_br_cust_cols[k] = [pieces, my_dsl, fk_col]
|
315
321
|
end
|
316
322
|
bts, hms, associatives = ::Brick.get_bts_and_hms(self)
|
317
323
|
bts.each do |_k, bt|
|
@@ -557,6 +563,10 @@ module ActiveRecord
|
|
557
563
|
next
|
558
564
|
end
|
559
565
|
|
566
|
+
key_klass = nil
|
567
|
+
key_tbl_name = nil
|
568
|
+
dest_pk = nil
|
569
|
+
key_alias = nil
|
560
570
|
cc.first.each do |cc_part|
|
561
571
|
dest_klass = cc_part[0..-2].inject(klass) { |kl, cc_part_term| kl.reflect_on_association(cc_part_term).klass }
|
562
572
|
tbl_name = (field_tbl_names[k][cc_part.last] ||= shift_or_first(chains[dest_klass])).split('.').last
|
@@ -569,10 +579,29 @@ module ActiveRecord
|
|
569
579
|
used_col_aliases.key?(col_alias)
|
570
580
|
cc_part_idx -= 1
|
571
581
|
end
|
582
|
+
used_col_aliases[col_alias] = nil
|
583
|
+
# Set up custom column links by preparing key_klass and key_alias
|
584
|
+
# (If there are multiple different tables referenced in the DSL, we end up creating a link to the last one)
|
585
|
+
if cc[2] && (dest_pk = dest_klass.primary_key)
|
586
|
+
key_klass = dest_klass
|
587
|
+
key_tbl_name = tbl_name
|
588
|
+
cc_part_idx = cc_part.length - 1
|
589
|
+
while cc_part_idx > 0 &&
|
590
|
+
(key_alias = "br_cc_#{k}__#{(cc_part[cc_part_idx..-2] + [dest_pk]).map(&:to_s).join('__')}") &&
|
591
|
+
key_alias != col_alias && # We break out if this key alias does exactly match the col_alias
|
592
|
+
used_col_aliases.key?(key_alias)
|
593
|
+
cc_part_idx -= 1
|
594
|
+
end
|
595
|
+
end
|
572
596
|
selects << "#{tbl_name}.#{cc_part.last} AS #{col_alias}"
|
573
597
|
cc_part << col_alias
|
574
|
-
used_col_aliases[col_alias] = nil
|
575
598
|
end
|
599
|
+
# Add a key column unless we've already got it
|
600
|
+
if key_alias && !used_col_aliases.key?(key_alias)
|
601
|
+
selects << "#{key_tbl_name}.#{dest_pk} AS #{key_alias}"
|
602
|
+
used_col_aliases[key_alias] = nil
|
603
|
+
end
|
604
|
+
cc[2] = key_alias ? [key_klass, key_alias] : nil
|
576
605
|
end
|
577
606
|
|
578
607
|
klass._br_bt_descrip.each do |v|
|
@@ -1167,7 +1196,7 @@ class Object
|
|
1167
1196
|
if (base_model = ::Brick.sti_models[full_model_name]&.fetch(:base, nil) || ::Brick.existing_stis[full_model_name]&.constantize)
|
1168
1197
|
is_sti = true
|
1169
1198
|
else
|
1170
|
-
base_model = ::Brick.config.models_inherit_from
|
1199
|
+
base_model = ::Brick.config.models_inherit_from
|
1171
1200
|
end
|
1172
1201
|
hmts = nil
|
1173
1202
|
code = +"class #{full_name} < #{base_model.name}\n"
|
@@ -19,7 +19,12 @@ module Brick
|
|
19
19
|
::Brick.exclude_tables = app.config.brick.fetch(:exclude_tables, [])
|
20
20
|
|
21
21
|
# Class for auto-generated models to inherit from
|
22
|
-
::Brick.models_inherit_from = app.config.brick.fetch(:models_inherit_from,
|
22
|
+
::Brick.models_inherit_from = app.config.brick.fetch(:models_inherit_from, nil) ||
|
23
|
+
begin
|
24
|
+
::ApplicationRecord
|
25
|
+
rescue StandardError => ex
|
26
|
+
::ActiveRecord::Base
|
27
|
+
end
|
23
28
|
|
24
29
|
# When table names have specific prefixes, automatically place them in their own module with a table_name_prefix.
|
25
30
|
::Brick.table_name_prefixes = app.config.brick.fetch(:table_name_prefixes, [])
|
@@ -985,7 +990,12 @@ erDiagram
|
|
985
990
|
%><%= display_value(col_type || col&.sql_type, val) %><%
|
986
991
|
elsif cust_col
|
987
992
|
data = cust_col.first.map { |cc_part| #{obj_name}.send(cc_part.last) }
|
988
|
-
|
993
|
+
cust_txt = #{model_name}.brick_descrip(cust_col[-2], data)
|
994
|
+
if (link_id = #{obj_name}.send(cust_col.last[1]) if cust_col.last)
|
995
|
+
%><%= link_to(cust_txt, send(\"#\{cust_col.last.first._brick_index(:singular)}_path\", link_id)) %><%
|
996
|
+
else
|
997
|
+
%><%= cust_txt %><%
|
998
|
+
end
|
989
999
|
else # Bad column name!
|
990
1000
|
%>?<%
|
991
1001
|
end
|
data/lib/brick/version_number.rb
CHANGED
@@ -139,7 +139,7 @@ module Brick
|
|
139
139
|
# Settings for the Brick gem
|
140
140
|
# (By default this auto-creates models, controllers, views, and routes on-the-fly.)
|
141
141
|
|
142
|
-
if
|
142
|
+
if ActiveRecord::Base.respond_to?(:brick_select)
|
143
143
|
# Mode -- generally :on or :off, or only in :development. Also available is :diag_env which enables only
|
144
144
|
# when the environment variable BRICK is set.
|
145
145
|
Brick.mode = :development
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brick
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.91
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lorin Thwaits
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-11-
|
11
|
+
date: 2022-11-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|