brick 1.0.68 → 1.0.69
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 +146 -41
- data/lib/brick/frameworks/rails/engine.rb +4 -2
- data/lib/brick/version_number.rb +1 -1
- data/lib/brick.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: 7399b8731b349e5c2a053956c5e6aa9998eb5a2010b5a0e7c081e87f9cac843e
|
4
|
+
data.tar.gz: bc3f65bb32230c05c63f7ef585a825de315ce2979d03b8db6efc6df0d0a5c143
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b8681ca78d035e6c727fcb6b60d17a5658841bb28e8a4f3dd7405563d5c7cb3e9739984cfe09ce741fd70d5334b949b786e929a1ce4232cf77568621c2813c9d
|
7
|
+
data.tar.gz: 39a9586ea23107b66ab3d461e93eed2defc459231b26d4b25961a7e2e4df9b04167ff620ac570ad07040681e19ad6b313969e822d6fdd8b492b5f4c1fded4c1c
|
data/lib/brick/extensions.rb
CHANGED
@@ -266,18 +266,27 @@ module ActiveRecord
|
|
266
266
|
quoted_table_name = table_name.split('.').map { |x| "\"#{x}\"" }.join('.')
|
267
267
|
order_by_txt = [] if is_do_txt
|
268
268
|
ordering = [ordering] if ordering && !ordering.is_a?(Array)
|
269
|
-
order_by = ordering&.
|
269
|
+
order_by = ordering&.each_with_object([]) do |ord_part, s| # %%% If a term is also used as an eqi-condition in the WHERE clause, it can be omitted from ORDER BY
|
270
270
|
case ord_part
|
271
271
|
when String
|
272
272
|
ord_expr = ord_part.gsub('^^^', quoted_table_name)
|
273
273
|
order_by_txt&.<<("Arel.sql(#{ord_expr})")
|
274
|
-
Arel.sql(ord_expr)
|
274
|
+
s << Arel.sql(ord_expr)
|
275
275
|
else # Expecting only Symbol
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
276
|
+
if _br_hm_counts.key?(ord_part)
|
277
|
+
ord_part = "\"b_r_#{ord_part}_ct\""
|
278
|
+
elsif !_br_bt_descrip.key?(ord_part) && !column_names.include?(ord_part.to_s)
|
279
|
+
# Disallow ordering by a bogus column
|
280
|
+
# %%% Note this bogus entry so that Javascript can remove any bogus _brick_order
|
281
|
+
# parameter from the querystring, pushing it into the browser history.
|
282
|
+
ord_part = nil
|
283
|
+
end
|
284
|
+
if ord_part
|
285
|
+
# Retain any reference to a bt_descrip as being a symbol
|
286
|
+
# Was: "#{quoted_table_name}.\"#{ord_part}\""
|
287
|
+
order_by_txt&.<<(_br_bt_descrip.key?(ord_part) ? ord_part : ord_part.inspect)
|
288
|
+
s << ord_part
|
289
|
+
end
|
281
290
|
end
|
282
291
|
end
|
283
292
|
[order_by, order_by_txt]
|
@@ -373,6 +382,7 @@ module ActiveRecord
|
|
373
382
|
end
|
374
383
|
|
375
384
|
def brick_select(params, selects = nil, order_by = nil, translations = {}, join_array = ::Brick::JoinArray.new)
|
385
|
+
is_postgres = ActiveRecord::Base.connection.adapter_name == 'PostgreSQL'
|
376
386
|
is_mysql = ActiveRecord::Base.connection.adapter_name == 'Mysql2'
|
377
387
|
is_distinct = nil
|
378
388
|
wheres = {}
|
@@ -401,10 +411,12 @@ module ActiveRecord
|
|
401
411
|
col_alias = " AS _#{col.name}" if (col_name = col.name) == 'class'
|
402
412
|
selects << if is_mysql
|
403
413
|
"`#{tbl_no_schema}`.`#{col_name}`#{col_alias}"
|
404
|
-
|
414
|
+
elsif is_postgres
|
405
415
|
# Postgres can not use DISTINCT with any columns that are XML, so for any of those just convert to text
|
406
416
|
cast_as_text = '::text' if is_distinct && Brick.relations[klass.table_name]&.[](:cols)&.[](col.name)&.first&.start_with?('xml')
|
407
417
|
"\"#{tbl_no_schema}\".\"#{col_name}\"#{cast_as_text}#{col_alias}"
|
418
|
+
else # Sqlite or Oracle
|
419
|
+
"#{tbl_no_schema}.#{col_name}#{col_alias}"
|
408
420
|
end
|
409
421
|
end
|
410
422
|
end
|
@@ -430,13 +442,15 @@ module ActiveRecord
|
|
430
442
|
# Postgres can not use DISTINCT with any columns that are XML, so for any of those just convert to text
|
431
443
|
is_xml = is_distinct && Brick.relations[sel_col.first.table_name]&.[](:cols)&.[](sel_col.last)&.first&.start_with?('xml')
|
432
444
|
# If it's not unique then also include the belongs_to association name before the column name
|
433
|
-
if used_col_aliases.key?(col_alias = "
|
434
|
-
col_alias = "
|
445
|
+
if used_col_aliases.key?(col_alias = "br_fk_#{v.first}__#{sel_col.last}")
|
446
|
+
col_alias = "br_fk_#{v.first}__#{v1[idx][-2..-1].map(&:to_s).join('__')}"
|
435
447
|
end
|
436
448
|
selects << if is_mysql
|
437
449
|
"`#{field_tbl_name}`.`#{sel_col.last}` AS `#{col_alias}`"
|
438
|
-
|
450
|
+
elsif is_postgres
|
439
451
|
"\"#{field_tbl_name}\".\"#{sel_col.last}\"#{'::text' if is_xml} AS \"#{col_alias}\""
|
452
|
+
else
|
453
|
+
"#{field_tbl_name}.#{sel_col.last} AS \"#{col_alias}\""
|
440
454
|
end
|
441
455
|
used_col_aliases[col_alias] = nil
|
442
456
|
v1[idx] << col_alias
|
@@ -447,9 +461,11 @@ module ActiveRecord
|
|
447
461
|
((id_col = k1.primary_key).is_a?(Array) ? id_col : [id_col]).each do |id_part|
|
448
462
|
id_for_tables[v.first] << if id_part
|
449
463
|
selects << if is_mysql
|
450
|
-
"#{"`#{tbl_name}`.`#{id_part}`"} AS `#{(id_alias = "
|
464
|
+
"#{"`#{tbl_name}`.`#{id_part}`"} AS `#{(id_alias = "br_fk_#{v.first}__#{id_part}")}`"
|
465
|
+
elsif is_postgres
|
466
|
+
"#{"\"#{tbl_name}\".\"#{id_part}\""} AS \"#{(id_alias = "br_fk_#{v.first}__#{id_part}")}\""
|
451
467
|
else
|
452
|
-
"#{"
|
468
|
+
"#{"#{tbl_name}.#{id_part}"} AS \"#{(id_alias = "br_fk_#{v.first}__#{id_part}")}\""
|
453
469
|
end
|
454
470
|
id_alias
|
455
471
|
end
|
@@ -479,9 +495,22 @@ module ActiveRecord
|
|
479
495
|
end
|
480
496
|
next unless count_column # %%% Would be able to remove this when multiple foreign keys to same destination becomes bulletproof
|
481
497
|
|
482
|
-
tbl_alias = is_mysql
|
498
|
+
tbl_alias = if is_mysql
|
499
|
+
"`b_r_#{hm.name}`"
|
500
|
+
elsif is_postgres
|
501
|
+
"\"b_r_#{hm.name}\""
|
502
|
+
else
|
503
|
+
"b_r_#{hm.name}"
|
504
|
+
end
|
483
505
|
pri_tbl = hm.active_record
|
484
506
|
pri_tbl_name = is_mysql ? "`#{pri_tbl.table_name}`" : "\"#{pri_tbl.table_name.gsub('.', '"."')}\""
|
507
|
+
pri_tbl_name = if is_mysql
|
508
|
+
"`#{pri_tbl.table_name}`"
|
509
|
+
elsif is_postgres
|
510
|
+
"\"#{pri_tbl.table_name.gsub('.', '"."')}\""
|
511
|
+
else
|
512
|
+
pri_tbl.table_name
|
513
|
+
end
|
485
514
|
on_clause = []
|
486
515
|
if fk_col.is_a?(Array) # Composite key?
|
487
516
|
fk_col.each_with_index { |fk_col_part, idx| on_clause << "#{tbl_alias}.#{fk_col_part} = #{pri_tbl_name}.#{pri_tbl.primary_key[idx]}" }
|
@@ -494,22 +523,29 @@ module ActiveRecord
|
|
494
523
|
selects << poly_type
|
495
524
|
on_clause << "#{tbl_alias}.#{poly_type} = '#{name}'"
|
496
525
|
end
|
497
|
-
hm_table_name = is_mysql
|
526
|
+
hm_table_name = if is_mysql
|
527
|
+
"`#{associative&.table_name || hm.klass.table_name}`"
|
528
|
+
elsif is_postgres
|
529
|
+
"\"#{(associative&.table_name || hm.klass.table_name).gsub('.', '"."')}\""
|
530
|
+
else
|
531
|
+
associative&.table_name || hm.klass.table_name
|
532
|
+
end
|
533
|
+
group_bys = ::Brick.is_oracle ? selects : (1..selects.length).to_a
|
498
534
|
join_clause = "LEFT OUTER
|
499
535
|
JOIN (SELECT #{selects.join(', ')}, COUNT(#{'DISTINCT ' if hm.options[:through]}#{count_column
|
500
|
-
}) AS
|
536
|
+
}) AS c_t_ FROM #{hm_table_name} GROUP BY #{group_bys.join(', ')}) #{tbl_alias}"
|
501
537
|
joins!("#{join_clause} ON #{on_clause.join(' AND ')}")
|
502
538
|
end
|
503
539
|
where!(wheres) unless wheres.empty?
|
504
540
|
# Must parse the order_by and see if there are any symbols which refer to BT associations
|
505
|
-
# as they must be expanded to find the corresponding
|
541
|
+
# as they must be expanded to find the corresponding b_r_model__column naming for each.
|
506
542
|
if order_by.present?
|
507
543
|
final_order_by = *order_by.each_with_object([]) do |v, s|
|
508
544
|
if v.is_a?(Symbol)
|
509
545
|
# Add the ordered series of columns derived from the BT based on its DSL
|
510
546
|
if (bt_cols = klass._br_bt_descrip[v])
|
511
547
|
bt_cols.values.each do |v1|
|
512
|
-
v1.each { |v2| s << v2.last if v2.length > 1 }
|
548
|
+
v1.each { |v2| s << "\"#{v2.last}\"" if v2.length > 1 }
|
513
549
|
end
|
514
550
|
else
|
515
551
|
s << v
|
@@ -1020,6 +1056,7 @@ class Object
|
|
1020
1056
|
table_name = ActiveSupport::Inflector.underscore(plural_class_name)
|
1021
1057
|
singular_table_name = ActiveSupport::Inflector.singularize(table_name)
|
1022
1058
|
pk = model&._brick_primary_key(relations.fetch(table_name, nil))
|
1059
|
+
is_postgres = ActiveRecord::Base.connection.adapter_name == 'PostgreSQL'
|
1023
1060
|
is_mysql = ActiveRecord::Base.connection.adapter_name == 'Mysql2'
|
1024
1061
|
|
1025
1062
|
namespace_name = "#{namespace.name}::" if namespace
|
@@ -1125,7 +1162,13 @@ class Object
|
|
1125
1162
|
# %%% Add custom HM count columns
|
1126
1163
|
# %%% What happens when the PK is composite?
|
1127
1164
|
counts = model._br_hm_counts.each_with_object([]) do |v, s|
|
1128
|
-
s <<
|
1165
|
+
s << if is_mysql
|
1166
|
+
"`b_r_#{v.first}`.c_t_ AS \"b_r_#{v.first}_ct\""
|
1167
|
+
elsif is_postgres
|
1168
|
+
"\"b_r_#{v.first}\".c_t_ AS \"b_r_#{v.first}_ct\""
|
1169
|
+
else
|
1170
|
+
"b_r_#{v.first}.c_t_ AS \"b_r_#{v.first}_ct\""
|
1171
|
+
end
|
1129
1172
|
end
|
1130
1173
|
instance_variable_set("@#{table_name}".to_sym, ar_relation.dup._select!(*selects, *counts))
|
1131
1174
|
if namespace && (idx = lookup_context.prefixes.index(table_name))
|
@@ -1357,6 +1400,11 @@ module ActiveRecord::ConnectionHandling
|
|
1357
1400
|
end
|
1358
1401
|
when 'Mysql2'
|
1359
1402
|
::Brick.default_schema = schema = ActiveRecord::Base.connection.current_database
|
1403
|
+
when 'OracleEnhanced'
|
1404
|
+
# ActiveRecord::Base.connection.current_database will be something like "XEPDB1"
|
1405
|
+
::Brick.default_schema = schema = ActiveRecord::Base.connection.raw_connection.username
|
1406
|
+
::Brick.db_schemas = {}
|
1407
|
+
execute_oracle("SELECT username FROM sys.all_users WHERE ORACLE_MAINTAINED != 'Y'").each { |s| ::Brick.db_schemas[s.first] = nil }
|
1360
1408
|
when 'SQLite'
|
1361
1409
|
sql = "SELECT m.name AS relation_name, UPPER(m.type) AS table_type,
|
1362
1410
|
p.name AS column_name, p.type AS data_type,
|
@@ -1415,9 +1463,31 @@ module ActiveRecord::ConnectionHandling
|
|
1415
1463
|
cols[col_name] = [r['data_type'], r['max_length'], measures&.include?(col_name), r['is_nullable'] == 'NO']
|
1416
1464
|
# puts "KEY! #{r['relation_name']}.#{col_name} #{r['key']} #{r['const']}" if r['key']
|
1417
1465
|
end
|
1418
|
-
else # MySQL2
|
1419
|
-
ActiveRecord::Base.
|
1420
|
-
|
1466
|
+
else # MySQL2 and OracleEnhanced act a little differently, bringing back an array for each row
|
1467
|
+
schema_and_tables = if ActiveRecord::Base.connection.adapter_name == 'OracleEnhanced'
|
1468
|
+
sql =
|
1469
|
+
"SELECT c.owner AS schema, c.table_name AS relation_name, 'BASE_TABLE' AS table_type,
|
1470
|
+
LOWER(c.column_name) AS column_name, c.data_type,
|
1471
|
+
COALESCE(c.data_length, c.data_precision) AS max_length,
|
1472
|
+
CASE ac.constraint_type WHEN 'P' THEN 'PRIMARY KEY' END AS const,
|
1473
|
+
ac.constraint_name AS \"key\",
|
1474
|
+
CASE c.nullable WHEN 'Y' THEN 'YES' ELSE 'NO' END AS is_nullable
|
1475
|
+
FROM all_tab_cols c
|
1476
|
+
LEFT OUTER JOIN all_cons_columns acc ON acc.owner = c.owner AND acc.table_name = c.table_name AND acc.column_name = c.column_name
|
1477
|
+
LEFT OUTER JOIN all_constraints ac ON ac.owner = acc.owner AND ac.table_name = acc.table_name AND ac.constraint_name = acc.constraint_name AND constraint_type = 'P'
|
1478
|
+
WHERE c.owner IN (#{::Brick.db_schemas.keys.map { |s| "'#{s}'" }.join(', ')})
|
1479
|
+
ORDER BY 1, 2, c.internal_column_id, acc.position"
|
1480
|
+
execute_oracle(sql, *ar_tables)
|
1481
|
+
else
|
1482
|
+
ActiveRecord::Base.retrieve_schema_and_tables(sql)
|
1483
|
+
end
|
1484
|
+
schema_and_tables.each do |r|
|
1485
|
+
next if r[1].index('$') # Oracle can have goofy table names with $
|
1486
|
+
|
1487
|
+
if (relation_name = r[1]) =~ /^[A-Z_]+$/
|
1488
|
+
relation_name.downcase!
|
1489
|
+
end
|
1490
|
+
relation = relations[relation_name] # here relation represents a table or view from the database
|
1421
1491
|
relation[:isView] = true if r[2] == 'VIEW' # table_type
|
1422
1492
|
col_name = r[3]
|
1423
1493
|
key = case r[6] # constraint type
|
@@ -1474,32 +1544,53 @@ module ActiveRecord::ConnectionHandling
|
|
1474
1544
|
AND kcu2.ORDINAL_POSITION = kcu1.ORDINAL_POSITION#{"
|
1475
1545
|
WHERE kcu1.CONSTRAINT_SCHEMA = COALESCE(current_setting('SEARCH_PATH'), 'public')" if is_postgres && schema }"
|
1476
1546
|
# AND kcu2.TABLE_NAME = ?;", Apartment::Tenant.current, table_name
|
1547
|
+
fk_references = ActiveRecord::Base.execute_sql(sql)
|
1477
1548
|
when 'SQLite'
|
1478
1549
|
sql = "SELECT m.name, fkl.\"from\", fkl.\"table\", m.name || '_' || fkl.\"from\" AS constraint_name
|
1479
1550
|
FROM sqlite_master m
|
1480
1551
|
INNER JOIN pragma_foreign_key_list(m.name) fkl ON m.type = 'table'
|
1481
1552
|
ORDER BY m.name, fkl.seq"
|
1553
|
+
fk_references = ActiveRecord::Base.execute_sql(sql)
|
1554
|
+
when 'OracleEnhanced'
|
1555
|
+
schemas = ::Brick.db_schemas.keys.map { |s| "'#{s}'" }.join(', ')
|
1556
|
+
sql =
|
1557
|
+
"SELECT -- fk
|
1558
|
+
ac.owner AS constraint_schema, acc_fk.table_name, LOWER(acc_fk.column_name),
|
1559
|
+
-- referenced pk
|
1560
|
+
ac.r_owner AS primary_schema, acc_pk.table_name AS primary_table, acc_fk.constraint_name AS constraint_schema_fk
|
1561
|
+
-- , LOWER(acc_pk.column_name)
|
1562
|
+
FROM all_cons_columns acc_fk
|
1563
|
+
INNER JOIN all_constraints ac ON acc_fk.owner = ac.owner
|
1564
|
+
AND acc_fk.constraint_name = ac.constraint_name
|
1565
|
+
INNER JOIN all_cons_columns acc_pk ON ac.r_owner = acc_pk.owner
|
1566
|
+
AND ac.r_constraint_name = acc_pk.constraint_name
|
1567
|
+
WHERE ac.constraint_type = 'R'
|
1568
|
+
AND ac.owner IN (#{schemas})
|
1569
|
+
AND ac.r_owner IN (#{schemas})"
|
1570
|
+
fk_references = ActiveRecord::Base.execute_oracle(sql)
|
1482
1571
|
else
|
1572
|
+
binding.pry
|
1483
1573
|
end
|
1484
|
-
if
|
1485
|
-
|
1486
|
-
|
1487
|
-
|
1488
|
-
|
1489
|
-
|
1490
|
-
|
1491
|
-
|
1492
|
-
|
1493
|
-
|
1494
|
-
|
1495
|
-
|
1496
|
-
|
1497
|
-
|
1498
|
-
|
1499
|
-
|
1500
|
-
end
|
1501
|
-
::Brick._add_bt_and_hm(fk, relations)
|
1574
|
+
::Brick.is_oracle = true if ActiveRecord::Base.connection.adapter_name == 'OracleEnhanced'
|
1575
|
+
# ::Brick.default_schema ||= schema ||= 'public' if ActiveRecord::Base.connection.adapter_name == 'PostgreSQL'
|
1576
|
+
fk_references&.each do |fk|
|
1577
|
+
fk = fk.values unless fk.is_a?(Array)
|
1578
|
+
# Multitenancy makes things a little more general overall, except for non-tenanted tables
|
1579
|
+
if apartment_excluded&.include?(fk[1].singularize.camelize)
|
1580
|
+
fk[0] = Apartment.default_schema
|
1581
|
+
elsif is_postgres && (fk[0] == 'public' || (is_multitenant && fk[0] == schema)) ||
|
1582
|
+
!is_postgres && ['mysql', 'performance_schema', 'sys'].exclude?(fk[0])
|
1583
|
+
fk[0] = nil
|
1584
|
+
end
|
1585
|
+
if apartment_excluded&.include?(fk[4].singularize.camelize)
|
1586
|
+
fk[3] = Apartment.default_schema
|
1587
|
+
elsif is_postgres && (fk[3] == 'public' || (is_multitenant && fk[3] == schema)) ||
|
1588
|
+
!is_postgres && ['mysql', 'performance_schema', 'sys'].exclude?(fk[3])
|
1589
|
+
fk[3] = nil
|
1502
1590
|
end
|
1591
|
+
fk[1].downcase! if ::Brick.is_oracle && fk[1] =~ /^[A-Z_]+$/
|
1592
|
+
fk[4].downcase! if ::Brick.is_oracle && fk[4] =~ /^[A-Z_]+$/
|
1593
|
+
::Brick._add_bt_and_hm(fk, relations)
|
1503
1594
|
end
|
1504
1595
|
end
|
1505
1596
|
|
@@ -1560,13 +1651,27 @@ module ActiveRecord::ConnectionHandling
|
|
1560
1651
|
-- AND t.table_type IN ('VIEW') -- 'BASE TABLE', 'FOREIGN TABLE'
|
1561
1652
|
AND t.table_name NOT IN ('pg_stat_statements', ?, ?)
|
1562
1653
|
ORDER BY 1, t.table_type DESC, 2, c.ordinal_position"
|
1654
|
+
ActiveRecord::Base.execute_sql(sql, *ar_tables)
|
1655
|
+
end
|
1656
|
+
|
1657
|
+
def ar_tables
|
1563
1658
|
ar_smtn = if ActiveRecord::Base.respond_to?(:schema_migrations_table_name)
|
1564
1659
|
ActiveRecord::Base.schema_migrations_table_name
|
1565
1660
|
else
|
1566
1661
|
'schema_migrations'
|
1567
1662
|
end
|
1568
1663
|
ar_imtn = ActiveRecord.version >= ::Gem::Version.new('5.0') ? ActiveRecord::Base.internal_metadata_table_name : ''
|
1569
|
-
|
1664
|
+
[ar_smtn, ar_imtn]
|
1665
|
+
end
|
1666
|
+
|
1667
|
+
def execute_oracle(*sql_args)
|
1668
|
+
cursor = ActiveRecord::Base.execute_sql(*sql_args)
|
1669
|
+
result = []
|
1670
|
+
while row = cursor.fetch()
|
1671
|
+
result << row
|
1672
|
+
end
|
1673
|
+
cursor.close
|
1674
|
+
result
|
1570
1675
|
end
|
1571
1676
|
end
|
1572
1677
|
|
@@ -145,7 +145,7 @@ module Brick
|
|
145
145
|
'nil'
|
146
146
|
else
|
147
147
|
# Postgres column names are limited to 63 characters
|
148
|
-
"#{obj_name}.#{"
|
148
|
+
"#{obj_name}.#{"b_r_#{assoc_name}_ct"[0..62]} || 0"
|
149
149
|
end
|
150
150
|
", #{set_ct}, #{path_keys(hm_assoc, hm_fk_name, obj_name, pk)}"
|
151
151
|
end
|
@@ -1096,7 +1096,9 @@ flatpickr(\".timepicker\", {enableTime: true, noCalendar: true});
|
|
1096
1096
|
gErd.setAttribute(\"class\", \"relatedModel\");
|
1097
1097
|
gErd.addEventListener(\"click\",
|
1098
1098
|
function (evt) {
|
1099
|
-
location.href = changeout(changeout(
|
1099
|
+
location.href = changeout(changeout(
|
1100
|
+
changeout(location.href, '_brick_order', null), // Remove any ordering
|
1101
|
+
-1, cbs[this.id]), \"_brick_erd\", \"1\");
|
1100
1102
|
}
|
1101
1103
|
);
|
1102
1104
|
}
|
data/lib/brick/version_number.rb
CHANGED
data/lib/brick.rb
CHANGED
@@ -123,7 +123,7 @@ module Brick
|
|
123
123
|
end
|
124
124
|
|
125
125
|
class << self
|
126
|
-
attr_accessor :default_schema, :db_schemas, :routes_done
|
126
|
+
attr_accessor :default_schema, :db_schemas, :routes_done, :is_oracle
|
127
127
|
|
128
128
|
def set_db_schema(params)
|
129
129
|
schema = params['_brick_schema'] || 'public'
|
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.69
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lorin Thwaits
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-09-
|
11
|
+
date: 2022-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|