brick 1.0.96 → 1.0.98
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 +165 -178
- data/lib/brick/frameworks/rails/controller.rb +1 -1
- data/lib/brick/frameworks/rails/engine.rb +269 -197
- data/lib/brick/frameworks/rails/form_tags.rb +219 -0
- data/lib/brick/version_number.rb +1 -1
- data/lib/brick.rb +30 -31
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4285ef6fb81d75bd90ceffc7d66c7fa096f04fb998da590f291f28fc9dfb45d
|
4
|
+
data.tar.gz: 2d031b156fd9c82d19af9b7818387eaecdd8cfadf939cbcf3b3b479474a77b54
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5967ede119f86cd92f88abb0f43bd2049eda4272c14ae7fa1c3f9ecc54c813c4c227be2d99aaa501363e42ef34a3eb5d0a0924ac4e540ab668e40a9a9d28311e
|
7
|
+
data.tar.gz: ab01005e485b9335c67ba48bb01a13db78fed3ce31293122fae8fbf1317b3bc0c3197adb087ec4b125e2ff7153e52fb55d8b7fc675b1e7759233cf8d42769ac7
|
data/lib/brick/extensions.rb
CHANGED
@@ -540,7 +540,11 @@ module ActiveRecord
|
|
540
540
|
tbl_name = "\"#{tbl_name}\"" if ::Brick.is_oracle && rel_dupe.brick_links.values.include?(tbl_name)
|
541
541
|
field_tbl_name = nil
|
542
542
|
v1.map { |x| [x[0..-2].map(&:to_s).join('.'), x.last] }.each_with_index do |sel_col, idx|
|
543
|
-
|
543
|
+
# %%% Strangely in Rails 7.1 on a slower system then very rarely brick_link comes back nil...
|
544
|
+
brick_link = rel_dupe.brick_links[sel_col.first]
|
545
|
+
field_tbl_name = brick_link&.split('.')&.last ||
|
546
|
+
# ... so here's a best-effort guess for what the table name might be.
|
547
|
+
rel_dupe.klass.reflect_on_association(sel_col.first).klass.table_name
|
544
548
|
# If it's Oracle, quote any AREL aliases that had been applied
|
545
549
|
field_tbl_name = "\"#{field_tbl_name}\"" if ::Brick.is_oracle && rel_dupe.brick_links.values.include?(field_tbl_name)
|
546
550
|
|
@@ -825,80 +829,9 @@ JOIN (SELECT #{hm_selects.map { |s| "#{'br_t0.' if from_clause}#{s}" }.join(', '
|
|
825
829
|
end
|
826
830
|
|
827
831
|
if Object.const_defined?('ActionView')
|
832
|
+
require 'brick/frameworks/rails/form_tags'
|
828
833
|
module ActionView::Helpers::FormTagHelper
|
829
|
-
|
830
|
-
return unless ::Brick.config.mode == :on
|
831
|
-
|
832
|
-
text = (args.first.is_a?(String) && args.first) || args[1]
|
833
|
-
klass_or_obj = ((args.first.is_a?(ActiveRecord::Relation) ||
|
834
|
-
args.first.is_a?(ActiveRecord::Base) ||
|
835
|
-
args.first.is_a?(Class)) &&
|
836
|
-
args.first) ||
|
837
|
-
@_brick_model
|
838
|
-
# If not provided, do a best-effort to automatically determine the resource class or object
|
839
|
-
filter_parts = []
|
840
|
-
klass_or_obj ||= begin
|
841
|
-
klass, sti_type = ::Brick.ctrl_to_klass(controller_path)
|
842
|
-
if klass
|
843
|
-
type_col = klass.inheritance_column # Usually 'type'
|
844
|
-
filter_parts << "#{type_col}=#{sti_type}" if sti_type && klass.column_names.include?(type_col)
|
845
|
-
path_params = request.path_parameters.dup
|
846
|
-
path_params.delete(:controller)
|
847
|
-
path_params.delete(:action)
|
848
|
-
pk = (klass.primary_key || ActiveRecord::Base.primary_key).to_sym
|
849
|
-
# Used to also have this but it's a bit too permissive to identify a primary key: (path_params.length == 1 && path_params.values.first) ||
|
850
|
-
if ((id = (path_params[pk] || path_params[:id] || path_params["#{klass.name.underscore}_id".to_sym])) && (obj = klass.find_by(pk => id))) ||
|
851
|
-
(['show', 'edit', 'update', 'destroy'].include?(action_name) && (obj = klass.first))
|
852
|
-
obj
|
853
|
-
else
|
854
|
-
# %%% If there is a HMT that refers to some ___id then try to identify an appropriate filter
|
855
|
-
# %%% If there is a polymorphic association that might relate to stuff in the path_params,
|
856
|
-
# try to identify an appropriate ___able_id and ___able_type filter
|
857
|
-
((klass.column_names - [pk.to_s]) & path_params.keys.map(&:to_s)).each do |path_param|
|
858
|
-
filter_parts << "#{path_param}=#{path_params[path_param.to_sym]}"
|
859
|
-
end
|
860
|
-
klass
|
861
|
-
end
|
862
|
-
end
|
863
|
-
rescue
|
864
|
-
end
|
865
|
-
if klass_or_obj
|
866
|
-
if klass_or_obj.is_a?(ActiveRecord::Relation)
|
867
|
-
klass_or_obj.where_values_hash.each do |whr|
|
868
|
-
filter_parts << "#{whr.first}=#{whr.last}" if whr.last && !whr.last.is_a?(Array)
|
869
|
-
end
|
870
|
-
klass_or_obj = klass_or_obj.klass
|
871
|
-
type_col = klass_or_obj.inheritance_column
|
872
|
-
if klass_or_obj.column_names.include?(type_col) && klass_or_obj.name != klass_or_obj.base_class.name
|
873
|
-
filter_parts << "#{type_col}=#{klass_or_obj.name}"
|
874
|
-
end
|
875
|
-
elsif klass_or_obj.is_a?(ActiveRecord::Base) && klass_or_obj.new_record?
|
876
|
-
klass_or_obj = klass_or_obj.class
|
877
|
-
end
|
878
|
-
filter = "?#{filter_parts.join('&')}" if filter_parts.present?
|
879
|
-
if (klass_or_obj&.is_a?(Class) && klass_or_obj < ActiveRecord::Base) ||
|
880
|
-
(klass_or_obj&.is_a?(ActiveRecord::Base) && klass_or_obj.new_record? && (klass_or_obj = klass_or_obj.class))
|
881
|
-
lt_args = [text || "Index for #{klass_or_obj.name.pluralize}",
|
882
|
-
"#{send("#{klass_or_obj._brick_index}_path")}#{filter}"]
|
883
|
-
else
|
884
|
-
# If there are multiple incoming parameters then last one is probably the actual ID, and first few might be some nested tree of stuff leading up to it
|
885
|
-
lt_args = [text || "Show this #{klass_or_obj.class.name}",
|
886
|
-
"#{send("#{klass_or_obj.class._brick_index(:singular)}_path", klass_or_obj)}#{filter}"]
|
887
|
-
end
|
888
|
-
link_to(*lt_args, **kwargs)
|
889
|
-
else
|
890
|
-
# puts "Warning: link_to_brick could not find a class for \"#{controller_path}\" -- consider setting @_brick_model within that controller."
|
891
|
-
# if (hits = res_names.keys & instance_variables.map { |v| v.to_s[1..-1] }).present?
|
892
|
-
links = instance_variables.each_with_object([]) do |name, s|
|
893
|
-
iv_name = name.to_s[1..-1]
|
894
|
-
case (val = instance_variable_get(name))
|
895
|
-
when ActiveRecord::Relation, ActiveRecord::Base
|
896
|
-
s << link_to_brick(val, iv_name) if val
|
897
|
-
end
|
898
|
-
end
|
899
|
-
links.join(' ').html_safe
|
900
|
-
end
|
901
|
-
end
|
834
|
+
include ::Brick::Rails::FormTags
|
902
835
|
end
|
903
836
|
end
|
904
837
|
|
@@ -1002,6 +935,7 @@ Module.class_exec do
|
|
1002
935
|
end
|
1003
936
|
class_name = ::Brick.namify(requested)
|
1004
937
|
relations = ::Brick.relations
|
938
|
+
# CONTROLLER
|
1005
939
|
result = if ::Brick.enable_controllers? &&
|
1006
940
|
is_controller && (plural_class_name = class_name[0..-11]).length.positive?
|
1007
941
|
# Otherwise now it's up to us to fill in the gaps
|
@@ -1020,6 +954,8 @@ Module.class_exec do
|
|
1020
954
|
# if it's a controller and no match or a model doesn't really use the same table name, eager load all models and try to find a model class of the right name.
|
1021
955
|
Object.send(:build_controller, self, class_name, plural_class_name, model, relations)
|
1022
956
|
end
|
957
|
+
|
958
|
+
# MODULE
|
1023
959
|
elsif (::Brick.enable_models? || ::Brick.enable_controllers?) && # Schema match?
|
1024
960
|
base_module == Object && # %%% This works for Person::Person -- but also limits us to not being able to allow more than one level of namespacing
|
1025
961
|
(schema_name = [(singular_table_name = class_name.underscore),
|
@@ -1036,6 +972,50 @@ Module.class_exec do
|
|
1036
972
|
|
1037
973
|
[built_module, "module #{schema_name}; end\n"]
|
1038
974
|
# # %%% Perhaps an option to use the first module just as schema, and additional modules as namespace with a table name prefix applied
|
975
|
+
|
976
|
+
# AVO Resource
|
977
|
+
elsif base_module == Object && Object.const_defined?('Avo') && requested.end_with?('Resource') &&
|
978
|
+
['MotorResource'].exclude?(requested) # Expect that anything called MotorResource could be from that administrative gem
|
979
|
+
if (model = Object.const_get(requested[0..-9]))
|
980
|
+
require 'generators/avo/resource_generator'
|
981
|
+
field_generator = Generators::Avo::ResourceGenerator.new([''])
|
982
|
+
field_generator.instance_variable_set(:@model, model)
|
983
|
+
fields = field_generator.send(:generate_fields).split("\n")
|
984
|
+
.each_with_object([]) do |f, s|
|
985
|
+
if (f = f.strip).start_with?('field ')
|
986
|
+
f = f[6..-1].split(',')
|
987
|
+
s << [f.first[1..-1].to_sym, [f[1][1..-1].split(': :').map(&:to_sym)].to_h]
|
988
|
+
end
|
989
|
+
end
|
990
|
+
built_resource = Class.new(Avo::BaseResource) do |new_resource_class|
|
991
|
+
self.model_class = model
|
992
|
+
self.title = :brick_descrip
|
993
|
+
self.includes = []
|
994
|
+
if (!model.is_view? && mod_pk = model.primary_key)
|
995
|
+
field((mod_pk.is_a?(Array) ? mod_pk.first : mod_pk).to_sym, { as: :id })
|
996
|
+
end
|
997
|
+
# Create a call such as: field :name, as: :text
|
998
|
+
fields.each do |f|
|
999
|
+
# Add proper types if this is a polymorphic belongs_to
|
1000
|
+
if f.last == { as: :belongs_to } &&
|
1001
|
+
(fk = ::Brick.relations[model.table_name][:fks].find { |k, v| v[:assoc_name] == f.first.to_s }) &&
|
1002
|
+
fk.last.fetch(:polymorphic, nil)
|
1003
|
+
poly_types = fk.last.fetch(:inverse_table, nil)&.each_with_object([]) do |poly_table, s|
|
1004
|
+
s << Object.const_get(::Brick.relations[poly_table][:class_name])
|
1005
|
+
end
|
1006
|
+
if poly_types.present?
|
1007
|
+
f.last[:polymorphic_as] = f.first
|
1008
|
+
f.last[:types] = poly_types
|
1009
|
+
end
|
1010
|
+
end
|
1011
|
+
self.send(:field, *f)
|
1012
|
+
end
|
1013
|
+
end
|
1014
|
+
Object.const_set(requested.to_sym, built_resource)
|
1015
|
+
[built_resource, nil]
|
1016
|
+
end
|
1017
|
+
|
1018
|
+
# MODEL
|
1039
1019
|
elsif ::Brick.enable_models?
|
1040
1020
|
# Custom inheritable Brick base model?
|
1041
1021
|
class_name = (inheritable_name = class_name)[5..-1] if class_name.start_with?('Brick')
|
@@ -1397,14 +1377,19 @@ class Object
|
|
1397
1377
|
end
|
1398
1378
|
|
1399
1379
|
def build_controller(namespace, class_name, plural_class_name, model, relations)
|
1380
|
+
if (is_avo = (namespace.name == 'Avo' && Object.const_defined?('Avo')))
|
1381
|
+
# Basic Avo functionality is available via its own generic controller.
|
1382
|
+
# (More information on https://docs.avohq.io/2.0/controllers.html)
|
1383
|
+
controller_base = Avo::ResourcesController
|
1384
|
+
end
|
1400
1385
|
table_name = ActiveSupport::Inflector.underscore(plural_class_name)
|
1401
1386
|
singular_table_name = ActiveSupport::Inflector.singularize(table_name)
|
1402
1387
|
pk = model&._brick_primary_key(relations.fetch(table_name, nil))
|
1403
1388
|
is_postgres = ActiveRecord::Base.connection.adapter_name == 'PostgreSQL'
|
1404
1389
|
is_mysql = ActiveRecord::Base.connection.adapter_name == 'Mysql2'
|
1405
1390
|
|
1406
|
-
code = +"class #{class_name} < ApplicationController\n"
|
1407
|
-
built_controller = Class.new(ActionController::Base) do |new_controller_class|
|
1391
|
+
code = +"class #{class_name} < #{controller_base&.name || 'ApplicationController'}\n"
|
1392
|
+
built_controller = Class.new(controller_base || ActionController::Base) do |new_controller_class|
|
1408
1393
|
(namespace || Object).const_set(class_name.to_sym, new_controller_class)
|
1409
1394
|
|
1410
1395
|
# Brick-specific pages
|
@@ -1501,118 +1486,120 @@ class Object
|
|
1501
1486
|
end
|
1502
1487
|
|
1503
1488
|
self.protect_from_forgery unless: -> { self.request.format.js? }
|
1504
|
-
|
1505
|
-
|
1506
|
-
|
1507
|
-
|
1508
|
-
|
1509
|
-
|
1510
|
-
|
1511
|
-
|
1489
|
+
unless is_avo
|
1490
|
+
self.define_method :index do
|
1491
|
+
if (is_openapi || request.env['REQUEST_PATH'].start_with?(::Brick.api_root)) &&
|
1492
|
+
!params&.key?('_brick_schema') &&
|
1493
|
+
(referrer_params = request.env['HTTP_REFERER']&.split('?')&.last&.split('&')&.map { |x| x.split('=') }).present?
|
1494
|
+
if params
|
1495
|
+
referrer_params.each { |k, v| params.send(:parameters)[k] = v }
|
1496
|
+
else
|
1497
|
+
api_params = referrer_params&.to_h
|
1498
|
+
end
|
1512
1499
|
end
|
1513
|
-
|
1514
|
-
|
1515
|
-
|
1516
|
-
|
1517
|
-
|
1518
|
-
|
1519
|
-
|
1520
|
-
|
1521
|
-
|
1522
|
-
|
1523
|
-
|
1524
|
-
|
1525
|
-
|
1526
|
-
|
1527
|
-
|
1528
|
-
|
1529
|
-
|
1530
|
-
|
1531
|
-
|
1532
|
-
|
1533
|
-
|
1534
|
-
|
1535
|
-
|
1536
|
-
|
1537
|
-
|
1538
|
-
|
1539
|
-
|
1540
|
-
}
|
1541
|
-
}
|
1542
|
-
|
1543
|
-
s["#{::Brick.config.api_root}#{relation.first.tr('.', '/')}/{id}"] = {
|
1544
|
-
'patch': {
|
1545
|
-
'summary': "update a #{relation.first.singularize}",
|
1546
|
-
'description': table_description,
|
1547
|
-
'parameters': relation.last[:cols].reject { |k, v| Brick.config.metadata_columns.include?(k) }.map do |k, v|
|
1548
|
-
param = { 'name' => k, 'schema': { 'type': v.first } }
|
1549
|
-
if (col_descrip = relation.last.fetch(:col_descrips, nil)&.fetch(k, nil))
|
1550
|
-
param['description'] = col_descrip
|
1551
|
-
end
|
1552
|
-
param
|
1553
|
-
end,
|
1554
|
-
'responses': { '200': { 'description': 'successful' } }
|
1500
|
+
_schema, @_is_show_schema_list = ::Brick.set_db_schema(params || api_params)
|
1501
|
+
|
1502
|
+
if is_openapi
|
1503
|
+
json = { 'openapi': '3.0.1', 'info': { 'title': Rswag::Ui.config.config_object[:urls].last&.fetch(:name, 'API documentation'), 'version': ::Brick.config.api_version },
|
1504
|
+
'servers': [
|
1505
|
+
{ 'url': '{scheme}://{defaultHost}', 'variables': {
|
1506
|
+
'scheme': { 'default': request.env['rack.url_scheme'] },
|
1507
|
+
'defaultHost': { 'default': request.env['HTTP_HOST'] }
|
1508
|
+
} }
|
1509
|
+
]
|
1510
|
+
}
|
1511
|
+
json['paths'] = relations.inject({}) do |s, relation|
|
1512
|
+
unless ::Brick.config.enable_api == false
|
1513
|
+
table_description = relation.last[:description]
|
1514
|
+
s["#{::Brick.config.api_root}#{relation.first.tr('.', '/')}"] = {
|
1515
|
+
'get': {
|
1516
|
+
'summary': "list #{relation.first}",
|
1517
|
+
'description': table_description,
|
1518
|
+
'parameters': relation.last[:cols].map do |k, v|
|
1519
|
+
param = { 'name' => k, 'schema': { 'type': v.first } }
|
1520
|
+
if (col_descrip = relation.last.fetch(:col_descrips, nil)&.fetch(k, nil))
|
1521
|
+
param['description'] = col_descrip
|
1522
|
+
end
|
1523
|
+
param
|
1524
|
+
end,
|
1525
|
+
'responses': { '200': { 'description': 'successful' } }
|
1526
|
+
}
|
1555
1527
|
}
|
1556
|
-
|
1557
|
-
|
1528
|
+
|
1529
|
+
s["#{::Brick.config.api_root}#{relation.first.tr('.', '/')}/{id}"] = {
|
1530
|
+
'patch': {
|
1531
|
+
'summary': "update a #{relation.first.singularize}",
|
1532
|
+
'description': table_description,
|
1533
|
+
'parameters': relation.last[:cols].reject { |k, v| Brick.config.metadata_columns.include?(k) }.map do |k, v|
|
1534
|
+
param = { 'name' => k, 'schema': { 'type': v.first } }
|
1535
|
+
if (col_descrip = relation.last.fetch(:col_descrips, nil)&.fetch(k, nil))
|
1536
|
+
param['description'] = col_descrip
|
1537
|
+
end
|
1538
|
+
param
|
1539
|
+
end,
|
1540
|
+
'responses': { '200': { 'description': 'successful' } }
|
1541
|
+
}
|
1542
|
+
} unless relation.last.fetch(:isView, nil)
|
1543
|
+
s
|
1544
|
+
end
|
1558
1545
|
end
|
1546
|
+
render inline: json.to_json, content_type: request.format
|
1547
|
+
return
|
1559
1548
|
end
|
1560
|
-
render inline: json.to_json, content_type: request.format
|
1561
|
-
return
|
1562
|
-
end
|
1563
1549
|
|
1564
|
-
|
1565
|
-
|
1566
|
-
|
1567
|
-
|
1550
|
+
if request.format == :csv # Asking for a template?
|
1551
|
+
require 'csv'
|
1552
|
+
exported_csv = CSV.generate(force_quotes: false) do |csv_out|
|
1553
|
+
model.df_export(model.brick_import_template).each { |row| csv_out << row }
|
1554
|
+
end
|
1555
|
+
render inline: exported_csv, content_type: request.format
|
1556
|
+
return
|
1557
|
+
elsif request.format == :js || request.path.start_with?('/api/') # Asking for JSON?
|
1558
|
+
data = (model.is_view? || !Object.const_defined?('DutyFree')) ? model.limit(1000) : model.df_export(model.brick_import_template)
|
1559
|
+
render inline: data.to_json, content_type: request.format == '*/*' ? 'application/json' : request.format
|
1560
|
+
return
|
1568
1561
|
end
|
1569
|
-
render inline: exported_csv, content_type: request.format
|
1570
|
-
return
|
1571
|
-
elsif request.format == :js || request.path.start_with?('/api/') # Asking for JSON?
|
1572
|
-
data = (model.is_view? || !Object.const_defined?('DutyFree')) ? model.limit(1000) : model.df_export(model.brick_import_template)
|
1573
|
-
render inline: data.to_json, content_type: request.format == '*/*' ? 'application/json' : request.format
|
1574
|
-
return
|
1575
|
-
end
|
1576
1562
|
|
1577
|
-
|
1578
|
-
|
1579
|
-
|
1580
|
-
|
1581
|
-
|
1582
|
-
|
1583
|
-
|
1584
|
-
|
1585
|
-
|
1586
|
-
|
1587
|
-
|
1588
|
-
|
1589
|
-
|
1590
|
-
|
1591
|
-
|
1592
|
-
|
1593
|
-
|
1594
|
-
|
1595
|
-
|
1596
|
-
|
1597
|
-
|
1598
|
-
|
1599
|
-
|
1600
|
-
|
1601
|
-
|
1602
|
-
|
1603
|
-
|
1604
|
-
|
1605
|
-
|
1606
|
-
|
1563
|
+
# Normal (not swagger or CSV) request
|
1564
|
+
|
1565
|
+
# %%% Allow params to define which columns to use for order_by
|
1566
|
+
# Overriding the default by providing a querystring param?
|
1567
|
+
ordering = params['_brick_order']&.split(',')&.map(&:to_sym) || Object.send(:default_ordering, table_name, pk)
|
1568
|
+
order_by, _ = model._brick_calculate_ordering(ordering, true) # Don't do the txt part
|
1569
|
+
|
1570
|
+
ar_relation = ActiveRecord.version < Gem::Version.new('4') ? model.preload : model.all
|
1571
|
+
@_brick_params = ar_relation.brick_select(params, (selects = []), order_by,
|
1572
|
+
translations = {},
|
1573
|
+
join_array = ::Brick::JoinArray.new)
|
1574
|
+
# %%% Add custom HM count columns
|
1575
|
+
# %%% What happens when the PK is composite?
|
1576
|
+
counts = model._br_hm_counts.each_with_object([]) do |v, s|
|
1577
|
+
s << if is_mysql
|
1578
|
+
"`b_r_#{v.first}`.c_t_ AS \"b_r_#{v.first}_ct\""
|
1579
|
+
elsif is_postgres
|
1580
|
+
"\"b_r_#{v.first}\".c_t_ AS \"b_r_#{v.first}_ct\""
|
1581
|
+
else
|
1582
|
+
"b_r_#{v.first}.c_t_ AS \"b_r_#{v.first}_ct\""
|
1583
|
+
end
|
1584
|
+
end
|
1585
|
+
ar_select = ar_relation.respond_to?(:_select!) ? ar_relation.dup._select!(*selects, *counts) : ar_relation.select(selects + counts)
|
1586
|
+
instance_variable_set("@#{table_name.pluralize}".to_sym, ar_select)
|
1587
|
+
if namespace && (idx = lookup_context.prefixes.index(table_name))
|
1588
|
+
lookup_context.prefixes[idx] = "#{namespace.name.underscore}/#{lookup_context.prefixes[idx]}"
|
1589
|
+
end
|
1590
|
+
@_brick_excl = session[:_brick_exclude]&.split(',')&.each_with_object([]) do |excl, s|
|
1591
|
+
if (excl_parts = excl.split('.')).first == table_name
|
1592
|
+
s << excl_parts.last
|
1593
|
+
end
|
1607
1594
|
end
|
1608
|
-
|
1609
|
-
|
1610
|
-
|
1611
|
-
|
1612
|
-
|
1595
|
+
@_brick_bt_descrip = model._br_bt_descrip
|
1596
|
+
@_brick_hm_counts = model._br_hm_counts
|
1597
|
+
@_brick_join_array = join_array
|
1598
|
+
@_brick_erd = params['_brick_erd']&.to_i
|
1599
|
+
end
|
1613
1600
|
end
|
1614
1601
|
|
1615
|
-
unless is_openapi
|
1602
|
+
unless is_openapi || is_avo
|
1616
1603
|
_, order_by_txt = model._brick_calculate_ordering(default_ordering(table_name, pk)) if pk
|
1617
1604
|
code << " def index\n"
|
1618
1605
|
code << " @#{table_name.pluralize} = #{model.name}#{pk&.present? ? ".order(#{order_by_txt.join(', ')})" : '.all'}\n"
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Brick
|
4
4
|
module Rails
|
5
5
|
# Extensions to rails controllers. Provides convenient ways to pass certain
|
6
|
-
# information to the model layer, with `controller_info
|
6
|
+
# information to the model layer, with `controller_info`.
|
7
7
|
# Also includes a convenient on/off switch,
|
8
8
|
# `brick_enabled_for_controller`.
|
9
9
|
module Controller
|