brick 1.0.209 → 1.0.210
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 +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
         |