brick 1.0.129 → 1.0.130
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 +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
|