brick 1.0.129 → 1.0.130
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/brick/extensions.rb +18 -8
- data/lib/brick/frameworks/rails/engine.rb +3 -1
- data/lib/brick/version_number.rb +1 -1
- data/lib/brick.rb +2 -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: 902948e0d502bc9c1b604f3e99b975ab8c7d42c378888280d84dac6aef2aa7d0
|
4
|
+
data.tar.gz: 82988754dcae3ccc67eb5997531b3fa218ecf364f076ecf221fac201412baff0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 780184ebc02c020389bc2239e115e885df056fa6895ed32bd35b5315f2e55f86deb679f2966e7290118bc54f4d50478b4240d7d77470d27a5902af22948d83f1
|
7
|
+
data.tar.gz: 39c37a9db2c7c392209491e1609f8ab4c2b64d27371452b60310d326bd462b5e653196697d0faf8f4bf801793400e073bf73f2ed72a38e9c66bd9b8e98d1e778
|
data/lib/brick/extensions.rb
CHANGED
@@ -148,7 +148,8 @@ module ActiveRecord
|
|
148
148
|
translations[parts[0..-2].join('.')] = klass
|
149
149
|
end
|
150
150
|
if klass&.column_names.exclude?(parts.last) &&
|
151
|
-
(klass = (orig_class = klass).reflect_on_association(possible_dsl = parts.
|
151
|
+
(klass = (orig_class = klass).reflect_on_association(possible_dsl = parts.last&.to_sym)&.klass)
|
152
|
+
parts.pop
|
152
153
|
if prefix.empty? # Custom columns start with an empty prefix
|
153
154
|
prefix << parts.shift until parts.empty?
|
154
155
|
end
|
@@ -162,6 +163,7 @@ module ActiveRecord
|
|
162
163
|
if emit_dsl
|
163
164
|
dsl3 << "[#{prefix[1..-1].map { |p| "#{p.to_s}." }.join if prefix.length > 1}#{bracket_name}]"
|
164
165
|
end
|
166
|
+
parts[-1] = column_names.first if parts[-1].nil? # No primary key to be found? Grab something to display!
|
165
167
|
members << parts
|
166
168
|
end
|
167
169
|
end
|
@@ -231,7 +233,8 @@ module ActiveRecord
|
|
231
233
|
if this_obj.is_a?(ActiveRecord::Base) && (obj_descrip = this_obj.class.brick_descrip(this_obj))
|
232
234
|
this_obj = obj_descrip
|
233
235
|
end
|
234
|
-
if
|
236
|
+
if Object.const_defined?('ActiveStorage') && this_obj.is_a?(::ActiveStorage::Filename) &&
|
237
|
+
this_obj.instance_variable_get(:@filename).nil?
|
235
238
|
this_obj.instance_variable_set(:@filename, '')
|
236
239
|
end
|
237
240
|
this_obj&.to_s || ''
|
@@ -741,12 +744,20 @@ module ActiveRecord
|
|
741
744
|
end
|
742
745
|
else
|
743
746
|
fk_col = (inv = hm.inverse_of)&.foreign_key || hm.foreign_key
|
744
|
-
|
747
|
+
# %%% Might only need hm.type and not the first part :)
|
748
|
+
poly_type = inv&.foreign_type || hm.type if hm.options.key?(:as)
|
745
749
|
pk = hm.klass.primary_key
|
746
750
|
(pk.is_a?(Array) ? pk.first : pk) || '*'
|
747
751
|
end
|
748
752
|
next unless count_column # %%% Would be able to remove this when multiple foreign keys to same destination becomes bulletproof
|
749
753
|
|
754
|
+
pri_tbl = hm.active_record
|
755
|
+
pri_key = hm.options[:primary_key] || pri_tbl.primary_key
|
756
|
+
unless hm.klass.column_names.include?(pri_key)
|
757
|
+
nix << k
|
758
|
+
next
|
759
|
+
end
|
760
|
+
|
750
761
|
tbl_alias = if is_mysql
|
751
762
|
"`b_r_#{hm.name}`"
|
752
763
|
elsif is_postgres
|
@@ -754,7 +765,6 @@ module ActiveRecord
|
|
754
765
|
else
|
755
766
|
"b_r_#{hm.name}"
|
756
767
|
end
|
757
|
-
pri_tbl = hm.active_record
|
758
768
|
pri_tbl_name = is_mysql ? "`#{pri_tbl.table_name}`" : "\"#{pri_tbl.table_name.gsub('.', '"."')}\""
|
759
769
|
pri_tbl_name = if is_mysql
|
760
770
|
"`#{pri_tbl.table_name}`"
|
@@ -765,10 +775,10 @@ module ActiveRecord
|
|
765
775
|
end
|
766
776
|
on_clause = []
|
767
777
|
hm_selects = if fk_col.is_a?(Array) # Composite key?
|
768
|
-
fk_col.each_with_index { |fk_col_part, idx| on_clause << "#{tbl_alias}.#{fk_col_part} = #{pri_tbl_name}.#{
|
778
|
+
fk_col.each_with_index { |fk_col_part, idx| on_clause << "#{tbl_alias}.#{fk_col_part} = #{pri_tbl_name}.#{pri_key[idx]}" }
|
769
779
|
fk_col.dup
|
770
780
|
else
|
771
|
-
on_clause << "#{tbl_alias}.#{fk_col} = #{pri_tbl_name}.#{
|
781
|
+
on_clause << "#{tbl_alias}.#{fk_col} = #{pri_tbl_name}.#{pri_key}"
|
772
782
|
[fk_col]
|
773
783
|
end
|
774
784
|
if poly_type
|
@@ -1869,7 +1879,7 @@ class Object
|
|
1869
1879
|
# Convert any Filename objects with nil into an empty string so that #encode can be called on them
|
1870
1880
|
new_obj.serializable_hash.each do |k, v|
|
1871
1881
|
new_obj.send("#{k}=", ActiveStorage::Filename.new('')) if v.is_a?(ActiveStorage::Filename) && !v.instance_variable_get(:@filename)
|
1872
|
-
end
|
1882
|
+
end if Object.const_defined?('ActiveStorage')
|
1873
1883
|
end
|
1874
1884
|
instance_variable_set("@#{singular_table_name}".to_sym, new_obj)
|
1875
1885
|
end
|
@@ -2441,7 +2451,7 @@ ORDER BY 1, 2, c.internal_column_id, acc.position"
|
|
2441
2451
|
singular = rel_name.last
|
2442
2452
|
end
|
2443
2453
|
name_parts = if (tnp = ::Brick.config.table_name_prefixes
|
2444
|
-
|
2454
|
+
&.find { |k1, _v1| singular.start_with?(k1) && singular.length > k1.length }
|
2445
2455
|
).present?
|
2446
2456
|
v[:auto_prefixed_schema] = tnp.first
|
2447
2457
|
v[:resource] = rel_name.last[(tnp_length = tnp.first.length)..-1]
|
@@ -652,7 +652,9 @@ window.addEventListener(\"popstate\", linkSchemas);
|
|
652
652
|
else
|
653
653
|
hm_assoc.active_record.name
|
654
654
|
end
|
655
|
-
|
655
|
+
# %%% Might only need hm_assoc.type and not the first part :)
|
656
|
+
type_col = hm_assoc.inverse_of&.foreign_type || hm_assoc.type
|
657
|
+
keys << [type_col, poly_type]
|
656
658
|
end
|
657
659
|
keys.to_h
|
658
660
|
end
|
data/lib/brick/version_number.rb
CHANGED
data/lib/brick.rb
CHANGED
@@ -1661,7 +1661,8 @@ module ActiveRecord
|
|
1661
1661
|
relation.brick_links[link_path] = if child.table.is_a?(Arel::Nodes::TableAlias)
|
1662
1662
|
child.table.right
|
1663
1663
|
else
|
1664
|
-
result.first&.left&.table_alias || child.table_name
|
1664
|
+
# Was: result.first&.left&.table_alias || child.table_name
|
1665
|
+
child.table.table_alias || child.table_name
|
1665
1666
|
end
|
1666
1667
|
end
|
1667
1668
|
result
|
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.130
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lorin Thwaits
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-04-
|
11
|
+
date: 2023-04-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|