brick 1.0.196 → 1.0.198
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9de3c9df6786000fb662d7aa133a5c53b2ed5d06a114edd3165dfd0acd3ebe7c
|
4
|
+
data.tar.gz: 7750790ca7698e8291ebd2843692009ef29795aab60c5691911698a835808bda
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dcb14263731745917eba2172d838b7eeb11910a1bab8c93dbe5d27b8923f98e16b24c08b74c52c550f75bc900cb61af1d1783d010ae9ed3000e03043749f47d8
|
7
|
+
data.tar.gz: ec2111be292b26489b972782478151f1468c2d02c6c84dc144c09bd4a8c0e34104fcb392c0ebdc9758eda6061ed62db982e4751e2e885edd282c4ba42c144bed
|
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 }
|
@@ -3468,9 +3468,9 @@ module Brick
|
|
3468
3468
|
separator ||= '_'
|
3469
3469
|
res_name = (tbl_name_parts = tbl_name.split('.'))[0..-2].first
|
3470
3470
|
res_name << '.' if res_name
|
3471
|
-
(res_name ||= +'') << (relation
|
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) ? tbl_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
3475
|
if (aps = relation&.fetch(:auto_prefixed_schema, nil)) && res_parts.last.start_with?(aps)
|
3476
3476
|
last_part = res_parts.last[aps.length..-1]
|
@@ -3487,7 +3487,7 @@ module Brick
|
|
3487
3487
|
index = index.tr('_', 'x') if separator == 'x'
|
3488
3488
|
# Rails applies an _index suffix to that route when the resource name isn't something plural
|
3489
3489
|
index << '_index' if mode != :singular && separator == '_' &&
|
3490
|
-
index == (path_prefix + [
|
3490
|
+
index == (path_prefix + [relation[:class_name]&.underscore&.tr('/', '_') || '_']).join(separator)
|
3491
3491
|
index
|
3492
3492
|
end
|
3493
3493
|
|
data/lib/brick/route_mapper.rb
CHANGED
@@ -74,15 +74,15 @@ module Brick
|
|
74
74
|
schema_prefix = "#{schema_name}."
|
75
75
|
end
|
76
76
|
|
77
|
-
resource_name = v.fetch(:resource, nil)
|
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
|
84
84
|
|
85
|
-
full_schema_prefix = if (
|
85
|
+
full_schema_prefix = if (aps = v.fetch(:auto_prefixed_schema, nil))
|
86
86
|
aps = aps[0..-2] if aps[-1] == '_'
|
87
87
|
(schema_prefix&.dup || +'') << "#{aps}."
|
88
88
|
else
|
@@ -90,7 +90,6 @@ module Brick
|
|
90
90
|
end
|
91
91
|
|
92
92
|
# Track routes being built
|
93
|
-
resource_name = v.fetch(:resource, nil) || k
|
94
93
|
if (class_name = v.fetch(:class_name, nil))
|
95
94
|
if v.key?(:isView)
|
96
95
|
view_class_length = class_name.length if class_name.length > view_class_length
|
@@ -98,7 +97,7 @@ module Brick
|
|
98
97
|
else
|
99
98
|
table_class_length = class_name.length if class_name.length > table_class_length
|
100
99
|
tables
|
101
|
-
end << [class_name, aps, "#{"#{schema_name}/" if schema_name}#{resource_name
|
100
|
+
end << [class_name, aps, "#{"#{schema_name}/" if schema_name}#{resource_name}"]
|
102
101
|
end
|
103
102
|
|
104
103
|
options = {}
|
data/lib/brick/version_number.rb
CHANGED
@@ -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'
|
@@ -141,7 +144,7 @@ module Brick
|
|
141
144
|
mig = gen_migration_columns(relations, tbl, (tbl_parts = tbl.split('.')), (add_fks = []),
|
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
|
@@ -153,43 +156,59 @@ module Brick
|
|
153
156
|
mig = gen_migration_columns(relations, tbl, (tbl_parts = tbl.split('.')), (add_fks = []),
|
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 column to_table
|
208
|
+
puts " [#{add_fk[3].to_s.inspect}, #{add_fk[1].inspect}, #{add_fk[0].to_s.inspect}]"
|
209
|
+
end
|
210
|
+
puts ' ]'
|
211
|
+
end
|
193
212
|
end
|
194
213
|
|
195
214
|
stuck_counts = Hash.new { |h, k| h[k] = 0 }
|
@@ -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.198
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lorin Thwaits
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|