brick 1.0.197 → 1.0.199
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 +6 -6
- data/lib/brick/frameworks/rails/engine.rb +1 -8
- data/lib/brick/frameworks/rails/form_tags.rb +2 -2
- data/lib/brick/route_mapper.rb +1 -1
- data/lib/brick/version_number.rb +1 -1
- data/lib/brick.rb +1 -1
- data/lib/generators/brick/migration_builder.rb +49 -27
- data/lib/generators/brick/salesforce_migrations_generator.rb +1 -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: 45f0082e1fac37af74b7ee802123ba84b8f670596fbd6f47c704ce6e660a6a2e
|
4
|
+
data.tar.gz: aad9255dbb59fda237d733508268f817666158984633b5e2965ed2fcfa909d9b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1ec256df47b3091bf23ad128ae74e3e3baef71052fc6353fa24fefe2744bf8d28bf8ba1aea595c583049745c7addf26a5cbd992b91406a5b457a4e6e6a4e2e7
|
7
|
+
data.tar.gz: e6c9cc621f4cd184be0da3c924b3e529f2964b1125c518aeb93f9c1fd1a7e55c94ab278d1573522a01f5b9f5969c044685659f2ffb4656dce0fd001df759990d
|
data/lib/brick/extensions.rb
CHANGED
@@ -438,7 +438,7 @@ module ActiveRecord
|
|
438
438
|
when String
|
439
439
|
ord_expr = _br_quoted_name(ord_part.gsub('^^^', table_name))
|
440
440
|
s << Arel.sql(ord_expr)
|
441
|
-
order_by_txt&.<<(ord_expr.index('.') ? "Arel.sql(#{ord_expr.inspect})" :
|
441
|
+
order_by_txt&.<<(ord_expr.index('.') ? "Arel.sql(#{ord_expr.inspect})" : ord_part.inspect)
|
442
442
|
else # Expecting only Symbol
|
443
443
|
ord_part = ord_part.to_s
|
444
444
|
if ord_part[0] == '-' # First char '-' means descending order
|
@@ -3050,8 +3050,8 @@ ORDER BY 1, 2, c.internal_column_id, acc.position"
|
|
3050
3050
|
colliding_thing ||= klass
|
3051
3051
|
end
|
3052
3052
|
v[:class_name] = proposed_name_parts.join('::')
|
3053
|
-
# Was: v[:resource] = v[:class_name].underscore.tr('/', '.')
|
3054
|
-
v[:resource] = proposed_name_parts.last.underscore
|
3053
|
+
# Was: v[:resource] = v[:class_name].underscore.tr('/', '.')
|
3054
|
+
v[:resource] = proposed_name_parts.last.underscore
|
3055
3055
|
if colliding_thing
|
3056
3056
|
message_start = if colliding_thing.is_a?(Module) && Object.const_defined?(:Rails) &&
|
3057
3057
|
colliding_thing.constants.find { |c| colliding_thing.const_get(c) < Rails::Application }
|
@@ -3470,11 +3470,11 @@ module Brick
|
|
3470
3470
|
res_name << '.' if res_name
|
3471
3471
|
(res_name ||= +'') << (relation ||= ::Brick.relations.fetch(tbl_name, nil))&.fetch(:resource, nil) || tbl_name_parts.last
|
3472
3472
|
|
3473
|
-
res_parts = ((mode == :singular) ?
|
3473
|
+
res_parts = ((mode == :singular) ? res_name.singularize : res_name).split('.')
|
3474
3474
|
res_parts.shift if ::Brick.apartment_multitenant && res_parts.length > 1 && res_parts.first == ::Brick.apartment_default_tenant
|
3475
|
-
if (aps = relation&.fetch(:auto_prefixed_schema, nil)) && res_parts.last.start_with?(aps)
|
3476
|
-
last_part = res_parts.last[aps.length..-1]
|
3475
|
+
if (aps = relation&.fetch(:auto_prefixed_schema, nil)) # && res_parts.last.start_with?(aps)
|
3477
3476
|
aps = aps[0..-2] if aps[-1] == '_'
|
3477
|
+
last_part = res_parts.last # [aps.length..-1]
|
3478
3478
|
res_parts[-1] = aps
|
3479
3479
|
res_parts << last_part
|
3480
3480
|
end
|
@@ -788,13 +788,6 @@ window.addEventListener(\"popstate\", linkSchemas);
|
|
788
788
|
next if rel.first.blank? || rel.last[:cols].empty? ||
|
789
789
|
::Brick.config.exclude_tables.include?(rel.first)
|
790
790
|
|
791
|
-
tbl_parts = rel.first.split('.')
|
792
|
-
if (aps = rel.last.fetch(:auto_prefixed_schema, nil))
|
793
|
-
tbl_parts << tbl_parts.last[aps.length..-1]
|
794
|
-
aps = aps[0..-2] if aps[-1] == '_'
|
795
|
-
tbl_parts[-2] = aps
|
796
|
-
end
|
797
|
-
tbl_parts.shift if tbl_parts.first == apartment_default_schema
|
798
791
|
# %%% When table_name_prefixes are use then during rendering empty non-TNP
|
799
792
|
# entries get added at some point when an attempt is made to find the table.
|
800
793
|
# Will have to hunt that down at some point.
|
@@ -1623,7 +1616,7 @@ end %>#{"
|
|
1623
1616
|
<td><%= link_to_brick(
|
1624
1617
|
::Brick::Rails::AA_PNG.html_safe,
|
1625
1618
|
{ show_proc: Proc.new do |aa_model, relation|
|
1626
|
-
path_helper = \"#\{ns}_#\{relation.fetch(:auto_prefixed_schema, nil)}#\{
|
1619
|
+
path_helper = \"#\{ns}_#\{relation.fetch(:auto_prefixed_schema, nil)}#\{aa_model.model_name.singular_route_key}_path\".to_sym
|
1627
1620
|
send(path_helper, obj) if respond_to?(path_helper)
|
1628
1621
|
end,
|
1629
1622
|
title: \"#\{page_title} in ActiveAdmin\" }
|
@@ -73,7 +73,7 @@ module Brick::Rails::FormTags
|
|
73
73
|
<td>#{link_to_brick(
|
74
74
|
::Brick::Rails::AA_PNG.html_safe,
|
75
75
|
{ index_proc: Proc.new do |aa_model, relation|
|
76
|
-
path_helper = "#{ns}_#{relation.fetch(:auto_prefixed_schema, nil)}#{
|
76
|
+
path_helper = "#{ns}_#{relation.fetch(:auto_prefixed_schema, nil)}#{aa_model.model_name.route_key}_path".to_sym
|
77
77
|
send(path_helper) if respond_to?(path_helper)
|
78
78
|
end,
|
79
79
|
title: "#{klass.name} in ActiveAdmin" }
|
@@ -137,7 +137,7 @@ module Brick::Rails::FormTags
|
|
137
137
|
options[col[1].inheritance_column] = col[1].name unless col[1] == col[1].base_class
|
138
138
|
x_order = " x-order=\"#{col_name}\"" if true
|
139
139
|
s << "#{x_order}>#{col[2]} "
|
140
|
-
s << (col.first ?
|
140
|
+
s << (col.first ? col[3].to_s : "#{link_to(col[3], send("#{col[1]._brick_index}_path", options))}")
|
141
141
|
elsif cust_cols.key?(col_name) # Custom column
|
142
142
|
x_order = " x-order=\"#{col_name}\"" if true
|
143
143
|
s << "#{x_order}>#{col_name}"
|
data/lib/brick/route_mapper.rb
CHANGED
@@ -77,7 +77,7 @@ module Brick
|
|
77
77
|
resource_name = v.fetch(:resource, nil) || k
|
78
78
|
next if !resource_name ||
|
79
79
|
existing_controllers.key?(
|
80
|
-
|
80
|
+
"#{controller_prefix}#{schema_prefix&.tr('.', '/')}#{resource_name}".pluralize
|
81
81
|
)
|
82
82
|
|
83
83
|
object_name = k.split('.').last # Take off any first schema part
|
data/lib/brick/version_number.rb
CHANGED
data/lib/brick.rb
CHANGED
@@ -224,7 +224,7 @@ module Brick
|
|
224
224
|
if !a.polymorphic? && (a.belongs_to? || (through && (thr = a.through_reflection))) &&
|
225
225
|
!((kls = thr&.klass || a.klass) && ::Brick.config.exclude_tables.exclude?(kls.table_name) &&
|
226
226
|
(!a.belongs_to? ||
|
227
|
-
((fk_type = a.foreign_key.is_a?(Array) ? a.foreign_key.map { |fk_part| model_cols[fk_part.to_s].type } : model_cols[a.foreign_key.to_s]
|
227
|
+
((fk_type = a.foreign_key.is_a?(Array) ? a.foreign_key.map { |fk_part| model_cols[fk_part.to_s].type } : model_cols[a.foreign_key.to_s]&.type) &&
|
228
228
|
(primary_cols = primary_klass.columns_hash) &&
|
229
229
|
(pk_type = a_pk.is_a?(Array) ? a_pk.map { |pk_part| primary_cols[pk_part.to_s].type } : primary_cols[a_pk].type) &&
|
230
230
|
(same_type = (pk_type == fk_type))
|
@@ -93,7 +93,10 @@ module Brick
|
|
93
93
|
relations = ::Brick.relations, do_fks_last: nil, do_schema_migrations: true)
|
94
94
|
if do_fks_last.nil?
|
95
95
|
puts 'Would you like for the foreign keys to be built inline inside of each migration file, or as a final migration?'
|
96
|
-
|
96
|
+
options = ['Inline', 'Separate final migration for all FKs']
|
97
|
+
options << 'Create "additional_references" entries in brick.rb that emulate foreign keys'
|
98
|
+
do_fks = gets_list(list: options).split(' ').first
|
99
|
+
do_fks_last = do_fks unless do_fks == 'Inline'
|
97
100
|
end
|
98
101
|
|
99
102
|
is_sqlite = ActiveRecord::Base.connection.adapter_name == 'SQLite'
|
@@ -138,10 +141,10 @@ module Brick
|
|
138
141
|
end
|
139
142
|
end).present?
|
140
143
|
fringe.each do |tbl|
|
141
|
-
mig = gen_migration_columns(relations, tbl, (tbl_parts = tbl.split('.')), (add_fks = []),
|
144
|
+
mig = gen_migration_columns(relations, tbl, (tbl_parts = tbl.split('.')), (add_fks = []), built_schemas, mig_path, current_mig_time,
|
142
145
|
key_type, is_4x_rails, ar_version, do_fks_last)
|
143
146
|
after_fks.concat(add_fks) if do_fks_last
|
144
|
-
versions_to_create << migration_file_write(mig_path, ::Brick._brick_index(
|
147
|
+
versions_to_create << migration_file_write(mig_path, "create_#{::Brick._brick_index(tbl, nil, 'x')}", current_mig_time += 1.minute, ar_version, mig)
|
145
148
|
end
|
146
149
|
done.concat(fringe)
|
147
150
|
chosen -= done
|
@@ -150,46 +153,65 @@ module Brick
|
|
150
153
|
if do_fks_last
|
151
154
|
# Write out any more tables that haven't been done yet
|
152
155
|
chosen.each do |tbl|
|
153
|
-
mig = gen_migration_columns(relations, tbl, (tbl_parts = tbl.split('.')), (add_fks = []),
|
156
|
+
mig = gen_migration_columns(relations, tbl, (tbl_parts = tbl.split('.')), (add_fks = []), built_schemas, mig_path, current_mig_time,
|
154
157
|
key_type, is_4x_rails, ar_version, do_fks_last)
|
155
158
|
after_fks.concat(add_fks)
|
156
|
-
migration_file_write(mig_path, ::Brick._brick_index(
|
159
|
+
migration_file_write(mig_path, "create_#{::Brick._brick_index(tbl, nil, 'x')}", current_mig_time += 1.minute, ar_version, mig)
|
157
160
|
end
|
158
161
|
done.concat(chosen)
|
159
162
|
chosen.clear
|
160
163
|
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
164
|
+
case do_fks_last
|
165
|
+
when 'Separate' # Add a final migration to create all the foreign keys
|
166
|
+
mig = +" def change\n"
|
167
|
+
after_fks.each do |add_fk|
|
168
|
+
next unless add_fk[2] # add_fk[2] holds the inverse relation
|
165
169
|
|
166
|
-
|
167
|
-
|
168
|
-
|
170
|
+
unless (pk = add_fk[2][:pkey].values.flatten&.first)
|
171
|
+
# No official PK, but if coincidentally there's a column of the same name, take a chance on it
|
172
|
+
pk = (add_fk[2][:cols].key?(add_fk[1]) && add_fk[1]) || '???'
|
173
|
+
end
|
174
|
+
mig << " add_foreign_key #{add_fk[3]}, " # The tbl_code
|
175
|
+
# to_table column
|
176
|
+
mig << "#{add_fk[0]}, column: :#{add_fk[1]}, primary_key: :#{pk}\n"
|
169
177
|
end
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
if after_fks.length > 500
|
175
|
-
minutes = (after_fks.length + 1000) / 1500
|
176
|
-
mig << " if ActiveRecord::Base.connection.adapter_name == 'PostgreSQL'\n"
|
177
|
-
mig << " puts 'NOTE: It could take around #{minutes} #{'minute'.pluralize(minutes)} on a FAST machine for Postgres to do all the final processing for these foreign keys. Please be patient!'\n"
|
178
|
+
if after_fks.length > 500
|
179
|
+
minutes = (after_fks.length + 1000) / 1500
|
180
|
+
mig << " if ActiveRecord::Base.connection.adapter_name == 'PostgreSQL'\n"
|
181
|
+
mig << " puts 'NOTE: It could take around #{minutes} #{'minute'.pluralize(minutes)} on a FAST machine for Postgres to do all the final processing for these foreign keys. Please be patient!'\n"
|
178
182
|
|
179
|
-
|
183
|
+
mig << " # Vacuum takes only about ten seconds when all the tables are empty,
|
180
184
|
# and about 2 minutes when the tables are fairly full.
|
181
185
|
execute('COMMIT')
|
182
186
|
execute('VACUUM FULL')
|
183
187
|
execute('BEGIN TRANSACTION')
|
184
188
|
end\n"
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
puts "Have written out a final migration called 'create_brick_fks.rbx' which creates #{after_fks.length} foreign keys.
|
189
|
+
end
|
190
|
+
mig << +" end\n"
|
191
|
+
migration_file_write(mig_path, 'create_brick_fks.rbx', current_mig_time += 1.minute, ar_version, mig)
|
192
|
+
puts "Have written out a final migration called 'create_brick_fks.rbx' which creates #{after_fks.length} foreign keys.
|
190
193
|
This file extension (.rbx) will cause it not to run yet when you do a 'rails db:migrate'.
|
191
194
|
The idea here is to do all data loading first, and then rename that migration file back
|
192
195
|
into having a .rb extension, and run a final db:migrate to put the foreign keys in place."
|
196
|
+
|
197
|
+
when 'Create' # Show additional_references entries that can be added into brick.rb
|
198
|
+
puts 'Place this block into your brick.rb file:'
|
199
|
+
puts ' ::Brick.additional_references = ['
|
200
|
+
after_fks.each do |add_fk|
|
201
|
+
next unless add_fk[2] # add_fk[2] holds the inverse relation
|
202
|
+
|
203
|
+
unless (pk = add_fk[2][:pkey].values.flatten&.first)
|
204
|
+
# No official PK, but if coincidentally there's a column of the same name, take a chance on it
|
205
|
+
pk = (add_fk[2][:cols].key?(add_fk[1]) && add_fk[1]) || '???'
|
206
|
+
end
|
207
|
+
from_table = add_fk[3]
|
208
|
+
from_table = "'#{from_table[1..-1]}'" if from_table[0] == ':'
|
209
|
+
to_table = add_fk[0]
|
210
|
+
to_table = "'#{to_table[1..-1]}'" if to_table[0] == ':'
|
211
|
+
puts " [#{from_table}, #{add_fk[1].inspect}, #{to_table}],"
|
212
|
+
end
|
213
|
+
puts ' ]'
|
214
|
+
end
|
193
215
|
end
|
194
216
|
|
195
217
|
stuck_counts = Hash.new { |h, k| h[k] = 0 }
|
@@ -232,7 +254,7 @@ module Brick
|
|
232
254
|
|
233
255
|
private
|
234
256
|
|
235
|
-
def gen_migration_columns(relations, tbl, tbl_parts, add_fks,
|
257
|
+
def gen_migration_columns(relations, tbl, tbl_parts, add_fks, built_schemas, mig_path, current_mig_time,
|
236
258
|
key_type, is_4x_rails, ar_version, do_fks_last)
|
237
259
|
return unless (relation = relations.fetch(tbl, nil))&.fetch(:cols, nil)&.present?
|
238
260
|
|
@@ -74,7 +74,7 @@ module Brick
|
|
74
74
|
end
|
75
75
|
# Build but do not have foreign keys established yet, and do not put version entries info the schema_migrations table
|
76
76
|
::Brick::MigrationBuilder.generate_migrations(chosen, mig_path, is_insert_versions, is_delete_versions, relations,
|
77
|
-
do_fks_last:
|
77
|
+
do_fks_last: 'Separate', do_schema_migrations: false)
|
78
78
|
end
|
79
79
|
parser = Nokogiri::XML::SAX::Parser.new(::Brick::SalesforceSchema.new(end_document_proc))
|
80
80
|
# The WSDL file must have a .xml extension, and can be in any folder in the project
|
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.199
|
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-01-
|
11
|
+
date: 2024-01-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|