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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 977737d8dec8900c82e2a973060dca56ae7897e281557e43e1c0696012521270
4
- data.tar.gz: 8a005ecab292cbfdaf94b29476d4db56e9f5b71a46a5f71ca6fd049550ed4cff
3
+ metadata.gz: 7399b8731b349e5c2a053956c5e6aa9998eb5a2010b5a0e7c081e87f9cac843e
4
+ data.tar.gz: bc3f65bb32230c05c63f7ef585a825de315ce2979d03b8db6efc6df0d0a5c143
5
5
  SHA512:
6
- metadata.gz: c3cfaf5cdcdf67038ba5969306f49b73c09977b9e1dec078ad3ca3d6f6e7d16b5b0d18eb16a982568966ac91cabdcb96e82362cce4906485581b36ce2e2410da
7
- data.tar.gz: 50f38455e43528478fe694f08bfcc50a8968536c9e4e6d8ab0c1713ff621e2153454a541d8e5940f584f2bd9e06549c4d3db047ac11fbdedaf5bc536d0ac7cd1
6
+ metadata.gz: b8681ca78d035e6c727fcb6b60d17a5658841bb28e8a4f3dd7405563d5c7cb3e9739984cfe09ce741fd70d5334b949b786e929a1ce4232cf77568621c2813c9d
7
+ data.tar.gz: 39a9586ea23107b66ab3d461e93eed2defc459231b26d4b25961a7e2e4df9b04167ff620ac570ad07040681e19ad6b313969e822d6fdd8b492b5f4c1fded4c1c
@@ -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&.map do |ord_part| # %%% If a term is also used as an eqi-condition in the WHERE clause, it can be omitted from ORDER BY
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
- ord_part = "_br_#{ord_part}_ct" if _br_hm_counts.key?(ord_part)
277
- # Retain any reference to a bt_descrip as being a symbol
278
- # Was: "#{quoted_table_name}.\"#{ord_part}\""
279
- order_by_txt&.<<(_br_bt_descrip.key?(ord_part) ? ord_part : ord_part.inspect)
280
- ord_part
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
- else
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 = "_brfk_#{v.first}__#{sel_col.last}")
434
- col_alias = "_brfk_#{v.first}__#{v1[idx][-2..-1].map(&:to_s).join('__')}"
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
- else
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 = "_brfk_#{v.first}__#{id_part}")}`"
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
- "#{"\"#{tbl_name}\".\"#{id_part}\""} AS \"#{(id_alias = "_brfk_#{v.first}__#{id_part}")}\""
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 ? "`_br_#{hm.name}`" : "\"_br_#{hm.name}\""
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 ? "`#{associative&.table_name || hm.klass.table_name}`" : "\"#{(associative&.table_name || hm.klass.table_name).gsub('.', '"."')}\""
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 _ct_ FROM #{hm_table_name} GROUP BY #{(1..selects.length).to_a.join(', ')}) AS #{tbl_alias}"
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 _br_model__column naming for each.
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 << (is_mysql ? "`_br_#{v.first}`._ct_ AS \"_br_#{v.first}_ct\"" : "\"_br_#{v.first}\"._ct_ AS \"_br_#{v.first}_ct\"")
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 acts a little differently, bringing back an array for each row
1419
- ActiveRecord::Base.retrieve_schema_and_tables(sql).each do |r|
1420
- relation = relations[(relation_name = r[1])] # here relation represents a table or view from the database
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 sql
1485
- # ::Brick.default_schema ||= schema ||= 'public' if ActiveRecord::Base.connection.adapter_name == 'PostgreSQL'
1486
- ActiveRecord::Base.execute_sql(sql).each do |fk|
1487
- fk = fk.values unless fk.is_a?(Array)
1488
- # Multitenancy makes things a little more general overall, except for non-tenanted tables
1489
- if apartment_excluded&.include?(fk[1].singularize.camelize)
1490
- fk[0] = Apartment.default_schema
1491
- elsif is_postgres && (fk[0] == 'public' || (is_multitenant && fk[0] == schema)) ||
1492
- !is_postgres && ['mysql', 'performance_schema', 'sys'].exclude?(fk[0])
1493
- fk[0] = nil
1494
- end
1495
- if apartment_excluded&.include?(fk[4].singularize.camelize)
1496
- fk[3] = Apartment.default_schema
1497
- elsif is_postgres && (fk[3] == 'public' || (is_multitenant && fk[3] == schema)) ||
1498
- !is_postgres && ['mysql', 'performance_schema', 'sys'].exclude?(fk[3])
1499
- fk[3] = nil
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
- ActiveRecord::Base.execute_sql(sql, ar_smtn, ar_imtn)
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}.#{"_br_#{assoc_name}_ct"[0..62]} || 0"
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(location.href, -1, cbs[this.id]), \"_brick_erd\", \"1\");
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
  }
@@ -5,7 +5,7 @@ module Brick
5
5
  module VERSION
6
6
  MAJOR = 1
7
7
  MINOR = 0
8
- TINY = 68
8
+ TINY = 69
9
9
 
10
10
  # PRE is nil unless it's a pre-release (beta, RC, etc.)
11
11
  PRE = nil
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.68
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-04 00:00:00.000000000 Z
11
+ date: 2022-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord