brick 1.0.209 → 1.0.210
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 +46 -34
- data/lib/brick/version_number.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 803d4790408a0b789ff8086b5b81346581071b260cbc528039fd8cfa8894b7ac
|
4
|
+
data.tar.gz: 4503e1b9feba62d33e83f3fadc25a34b70bf9c661dc750187a3c391e3b24d5e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1fe28c2a9ca30ef663f28fe79e65e1b2787686c6fce6d5738d9b6addd6070437411d5210e1ba641b28eae5215fb37756f3faa80f246d823d5d553c9db990a427
|
7
|
+
data.tar.gz: daa9bb88c21467075717062c1ede0ab38af4207bf96d9a2495ce84f99850a4d0cb09f4c1c95017cb3862ef915fab85036397375d43518f7bee2d7bd6f1255aed
|
data/lib/brick/extensions.rb
CHANGED
@@ -72,7 +72,7 @@ module ActiveRecord
|
|
72
72
|
|
73
73
|
def real_model(params)
|
74
74
|
if params && (sub_model = params.fetch(type_col = inheritance_column, nil))
|
75
|
-
sub_model = sub_model.first if sub_model.is_a?(Array) # Support the params style that gets returned from #
|
75
|
+
sub_model = sub_model.first if sub_model.is_a?(Array) # Support the params style that gets returned from #_brick_querying
|
76
76
|
# Make sure the chosen model is really the same or a subclass of this model
|
77
77
|
(possible_model = sub_model.constantize) <= self ? possible_model : self
|
78
78
|
else
|
@@ -491,17 +491,12 @@ module ActiveRecord
|
|
491
491
|
[order_by, order_by_txt]
|
492
492
|
end
|
493
493
|
|
494
|
-
def self.brick_select(*args,
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
args
|
501
|
-
end
|
502
|
-
(relation = all).brick_select(selects, *other_args,
|
503
|
-
params: params, brick_col_names: brick_col_names, **kwargs)
|
504
|
-
relation.select(selects)
|
494
|
+
def self.brick_select(*args, **kwargs)
|
495
|
+
all.brick_select(*args, **kwargs)
|
496
|
+
end
|
497
|
+
|
498
|
+
def self.brick_pluck(*args, withhold_ids: true, **kwargs)
|
499
|
+
all.brick_pluck(*args, withhold_ids: withhold_ids, **kwargs)
|
505
500
|
end
|
506
501
|
|
507
502
|
def self.brick_where(*args)
|
@@ -559,7 +554,7 @@ module ActiveRecord
|
|
559
554
|
# If it's a CollectionProxy (which inherits from Relation) then need to dig
|
560
555
|
# out the core Relation object which is found in the association scope.
|
561
556
|
brick_rel = is_a?(ActiveRecord::Associations::CollectionProxy) ? scope : self
|
562
|
-
brick_rel = brick_rel.dup if do_dup
|
557
|
+
brick_rel = (@_brick_rel_dup ||= brick_rel.dup) if do_dup
|
563
558
|
# Start out with a hash that has only the root table name
|
564
559
|
brick_rel.instance_variable_set(:@_brick_links, bl = { '' => table_name })
|
565
560
|
brick_rel.arel.ast if do_dup # Walk the AST tree in order to capture all the other correlation names
|
@@ -567,10 +562,22 @@ module ActiveRecord
|
|
567
562
|
end
|
568
563
|
end
|
569
564
|
|
570
|
-
def brick_select(*args,
|
571
|
-
|
572
|
-
|
573
|
-
|
565
|
+
def brick_select(*args, **kwargs)
|
566
|
+
selects = args[0].is_a?(Array) ? args[0] : args
|
567
|
+
_brick_querying(selects, **kwargs)
|
568
|
+
select(selects)
|
569
|
+
end
|
570
|
+
|
571
|
+
def brick_pluck(*args, withhold_ids: true, **kwargs)
|
572
|
+
selects = args[0].is_a?(Array) ? args[0] : args
|
573
|
+
_brick_querying(selects, withhold_ids: withhold_ids, **kwargs)
|
574
|
+
pluck(selects)
|
575
|
+
end
|
576
|
+
|
577
|
+
def _brick_querying(*args, withhold_ids: nil, params: {}, order_by: nil, translations: {},
|
578
|
+
join_array: ::Brick::JoinArray.new,
|
579
|
+
cust_col_override: nil,
|
580
|
+
brick_col_names: nil)
|
574
581
|
selects = args[0].is_a?(Array) ? args[0] : args
|
575
582
|
if selects.present? && cust_col_override.nil? # See if there's any fancy ones in the select list
|
576
583
|
idx = 0
|
@@ -654,13 +661,13 @@ module ActiveRecord
|
|
654
661
|
"'<#{typ.end_with?('_TYP') ? typ[0..-5] : typ}>' AS #{col.name}"
|
655
662
|
end
|
656
663
|
end
|
657
|
-
|
664
|
+
elsif !withhold_ids # Having some select columns chosen, add any missing always_load_fields for this model ...
|
658
665
|
this_model = klass
|
659
666
|
loop do
|
660
667
|
::Brick.config.always_load_fields.fetch(this_model.name, nil)&.each do |alf|
|
661
668
|
selects << alf unless selects.include?(alf)
|
662
669
|
end
|
663
|
-
# ... plus any and all STI superclasses it may inherit from
|
670
|
+
# ... plus ALF fields from any and all STI superclasses it may inherit from
|
664
671
|
break if (this_model = this_model.superclass).abstract_class? || this_model == ActiveRecord::Base
|
665
672
|
end
|
666
673
|
end
|
@@ -673,15 +680,16 @@ module ActiveRecord
|
|
673
680
|
end
|
674
681
|
end
|
675
682
|
|
676
|
-
core_selects = selects.dup
|
683
|
+
# core_selects = selects.dup
|
677
684
|
id_for_tables = Hash.new { |h, k| h[k] = [] }
|
678
685
|
field_tbl_names = Hash.new { |h, k| h[k] = {} }
|
679
686
|
used_col_aliases = {} # Used to make sure there is not a name clash
|
680
687
|
|
681
688
|
# CUSTOM COLUMNS
|
682
689
|
# ==============
|
683
|
-
(cust_col_override || klass._br_cust_cols)
|
684
|
-
|
690
|
+
(cust_col_override || (!withhold_ids && klass._br_cust_cols))&.each do |k, cc|
|
691
|
+
brick_links # Intentionally create a relation duplicate
|
692
|
+
if @_brick_rel_dup.respond_to?(k) # Name already taken?
|
685
693
|
# %%% Use ensure_unique here in this kind of fashion:
|
686
694
|
# cnstr_name = ensure_unique(+"(brick) #{for_tbl}_#{pri_tbl}", nil, bts, hms)
|
687
695
|
# binding.pry
|
@@ -730,12 +738,14 @@ module ActiveRecord
|
|
730
738
|
selects << "#{_br_quoted_name(tbl_name)}.#{_br_quoted_name(cc_part.last)} AS #{_br_quoted_name(col_alias)}"
|
731
739
|
cc_part << col_alias
|
732
740
|
end
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
741
|
+
unless withhold_ids
|
742
|
+
# Add a key column unless we've already got it
|
743
|
+
if key_alias && !used_col_aliases.key?(key_alias)
|
744
|
+
selects << "#{_br_quoted_name(key_tbl_name)}.#{_br_quoted_name(dest_pk)} AS #{_br_quoted_name(key_alias)}"
|
745
|
+
used_col_aliases[key_alias] = nil
|
746
|
+
end
|
747
|
+
cc[2] = key_alias ? [key_klass, key_alias] : nil
|
737
748
|
end
|
738
|
-
cc[2] = key_alias ? [key_klass, key_alias] : nil
|
739
749
|
end
|
740
750
|
|
741
751
|
# LEFT OUTER JOINs
|
@@ -751,7 +761,7 @@ module ActiveRecord
|
|
751
761
|
# %%% Strangely in Rails 7.1 on a slower system then very rarely brick_link comes back nil...
|
752
762
|
brick_link = brick_links[sel_col.first]
|
753
763
|
field_tbl_name = brick_link&.split('.')&.last ||
|
754
|
-
# ... so here's a best-effort guess
|
764
|
+
# ... so if it is nil then here's a best-effort guess as to what the table name might be.
|
755
765
|
klass.reflect_on_association(sel_col.first)&.klass&.table_name
|
756
766
|
# If it's Oracle, quote any AREL aliases that had been applied
|
757
767
|
field_tbl_name = "\"#{field_tbl_name}\"" if ::Brick.is_oracle && brick_links.values.include?(field_tbl_name)
|
@@ -1022,9 +1032,10 @@ JOIN (SELECT #{hm_selects.map { |s| _br_quoted_name("#{'br_t0.' if from_clause}#
|
|
1022
1032
|
selects << 'customer_id' if klass.name == 'Pay::Subscription' && Pay::Subscription.columns_hash.key?('customer_id')
|
1023
1033
|
|
1024
1034
|
pieces, my_dsl = klass.brick_parse_dsl(join_array = ::Brick::JoinArray.new, [], translations = {}, false, nil, true)
|
1025
|
-
|
1035
|
+
_brick_querying(
|
1026
1036
|
selects, where_values_hash, nil, translations: translations, join_array: join_array,
|
1027
|
-
cust_col_override: { '_br' => (descrip_cols = [pieces, my_dsl]) }
|
1037
|
+
cust_col_override: { '_br' => (descrip_cols = [pieces, my_dsl]) },
|
1038
|
+
brick_col_names: true
|
1028
1039
|
)
|
1029
1040
|
order_values = "#{_br_quoted_name(klass.table_name)}.#{_br_quoted_name(klass.primary_key)}"
|
1030
1041
|
[self.select(selects), descrip_cols]
|
@@ -2246,9 +2257,10 @@ class Object
|
|
2246
2257
|
|
2247
2258
|
ar_relation = ActiveRecord.version < Gem::Version.new('4') ? real_model.preload : real_model.all
|
2248
2259
|
params['_brick_is_api'] = true if (is_api = request.format == :js || current_api_root)
|
2249
|
-
@_brick_params = ar_relation.
|
2250
|
-
|
2251
|
-
|
2260
|
+
@_brick_params = ar_relation._brick_querying((selects ||= []), params: params, order_by: order_by,
|
2261
|
+
translations: (translations = {}),
|
2262
|
+
join_array: (join_array = ::Brick::JoinArray.new),
|
2263
|
+
brick_col_names: true)
|
2252
2264
|
|
2253
2265
|
if is_api # Asking for JSON?
|
2254
2266
|
# Apply column renaming
|
@@ -2342,7 +2354,7 @@ class Object
|
|
2342
2354
|
_, order_by_txt = model._brick_calculate_ordering(default_ordering(table_name, pk, true)) if pk
|
2343
2355
|
code << " def index\n"
|
2344
2356
|
code << " @#{plural_table_name} = #{model.name}#{pk&.present? ? ".order(#{order_by_txt.join(', ')})" : '.all'}\n"
|
2345
|
-
code << " @#{plural_table_name}.
|
2357
|
+
code << " @#{plural_table_name}._brick_querying(params, brick_col_names: true)\n"
|
2346
2358
|
code << " end\n"
|
2347
2359
|
|
2348
2360
|
is_pk_string = nil
|
data/lib/brick/version_number.rb
CHANGED
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.210
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lorin Thwaits
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-03-
|
11
|
+
date: 2024-03-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -285,7 +285,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
285
285
|
- !ruby/object:Gem::Version
|
286
286
|
version: 1.3.6
|
287
287
|
requirements: []
|
288
|
-
rubygems_version: 3.
|
288
|
+
rubygems_version: 3.1.6
|
289
289
|
signing_key:
|
290
290
|
specification_version: 4
|
291
291
|
summary: Create a Rails app from data alone
|