brick 1.0.57 → 1.0.58

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: 930370b67a72b31db99cc8d50afa80d4c3be0d07e727155eb20ac5a7628bb1bb
4
- data.tar.gz: f2d7964c79172a438800b3c69c63e62b26a4984357ca5d6c7ff9e2ef72e5308f
3
+ metadata.gz: 508d41fa8b75089e0467ece56ab53fc78b651f3951eabe62d108a62fa8b0f35e
4
+ data.tar.gz: dcd419560d850fb2014aab3076a6a80f5a555320ac2c2183e3381a916d94dbc8
5
5
  SHA512:
6
- metadata.gz: 03e7ba018c426517060aa6312d14a9f1e0877d82b376782ea46b4b1506433bbe3e9e4d2c3d88aaf3d5fb356c68a129fd975b1718d7b2ac826b241efab3f2cee6
7
- data.tar.gz: 645c6b750dd870180e312ffddff1d199bb84e92cdde0309f253ec8c927f3ba5304b84ae95b066c260d0523048c607b28148d1b577a479ec661b94de05248813a
6
+ metadata.gz: 49c90c7fbb1845e151f91b9df7f3b639d587e6239dae5e7f31306807a2b4dc7ac83436d78d46839accfea7c614fd2a94f2460443ea3daae424d280fae17cac77
7
+ data.tar.gz: 7dd02fd9ab902cfe6359b6be95101ec3a89c47d8b7bc71692ab4537f5ffeb3a24a4ee73063fc10b3d4197ce59fd5c94380f7534f66647d8c03dd512c6ef0c334
@@ -5,7 +5,7 @@ module Brick
5
5
  module VERSION
6
6
  MAJOR = 1
7
7
  MINOR = 0
8
- TINY = 57
8
+ TINY = 58
9
9
 
10
10
  # PRE is nil unless it's a pre-release (beta, RC, etc.)
11
11
  PRE = nil
@@ -84,8 +84,14 @@ module Brick
84
84
 
85
85
  # Generate a list of tables that can be chosen
86
86
  chosen = gets_list(list: tables, chosen: tables.dup)
87
+ schemas = chosen.each_with_object({}) do |v, s|
88
+ schema = if v.split('.').length > 1
89
+ v.first
90
+ end
91
+ s[schema] = nil if schema && [::Brick.default_schema, 'public'].exclude?(schema)
92
+ end
87
93
  # Start the timestamps back the same number of minutes from now as expected number of migrations to create
88
- current_mig_time = Time.now - chosen.length.minutes
94
+ current_mig_time = Time.now - (schemas.length + chosen.length).minutes
89
95
  done = []
90
96
  fks = {}
91
97
  stuck = {}
@@ -124,9 +130,14 @@ module Brick
124
130
  tbl_parts.first
125
131
  end
126
132
  end
133
+ unless built_schemas.key?(schema)
134
+ mig = +" def change\n create_schema(:#{schema}) unless schema_exists?(:#{schema})\n end\n"
135
+ migration_file_write(mig_path, "create_db_schema_#{schema}", current_mig_time += 1.minute, ar_version, mig)
136
+ built_schemas[schema] = nil
137
+ end
138
+
127
139
  # %%% For the moment we're skipping polymorphics
128
140
  fkey_cols = relation[:fks].values.select { |assoc| assoc[:is_bt] && !assoc[:polymorphic] }
129
- mig = +"class Create#{(full_table_name = tbl_parts.join('_')).camelize} < ActiveRecord::Migration#{ar_version}\n"
130
141
  # If the primary key is also used as a foreign key, will need to do id: false and then build out
131
142
  # a column definition which includes :primary_key -- %%% also using a data type of bigserial or serial
132
143
  # if this one has come in as bigint or integer.
@@ -163,8 +174,7 @@ module Brick
163
174
  end
164
175
  # Refer to this table name as a symbol or dotted string as appropriate
165
176
  tbl_code = tbl_parts.length == 1 ? ":#{tbl_parts.first}" : "'#{tbl}'"
166
- mig << " def change\n return unless reverting? || !table_exists?(#{tbl_code})\n\n"
167
- mig << " create_schema :#{schema} unless reverting? || schema_exists?(:#{schema})\n" if schema
177
+ mig = +" def change\n return unless reverting? || !table_exists?(#{tbl_code})\n\n"
168
178
  mig << " create_table #{tbl_code}#{id_option} do |t|\n"
169
179
  possible_ts = [] # Track possible generic timestamps
170
180
  add_fks = [] # Track foreign keys to add after table creation
@@ -217,7 +227,11 @@ module Brick
217
227
  possible_ts.each { |ts| emit_column('timestamp', ts.first, nil) }
218
228
  end
219
229
  mig << " end\n"
220
- mig << " execute('ALTER TABLE #{tbl} ADD PRIMARY KEY (#{pk_is_also_fk});')\n" if pk_is_also_fk
230
+ if pk_is_also_fk
231
+ mig << " reversible do |dir|\n"
232
+ mig << " dir.up { execute('ALTER TABLE #{tbl} ADD PRIMARY KEY (#{pk_is_also_fk})') }\n"
233
+ mig << " end\n"
234
+ end
221
235
  add_fks.each do |add_fk|
222
236
  is_commented = false
223
237
  # add_fk[2] holds the inverse relation
@@ -227,21 +241,16 @@ module Brick
227
241
  # No official PK, but if coincidentally there's a column of the same name, take a chance on it
228
242
  pk = (add_fk[2][:cols].key?(add_fk[1]) && add_fk[1]) || '???'
229
243
  end
230
- # to_table column
244
+ # to_table column
231
245
  mig << " #{'# ' if is_commented}add_foreign_key #{tbl_code}, #{add_fk[0]}, column: :#{add_fk[1]}, primary_key: :#{pk}\n"
232
246
  end
233
- unless built_schemas.key?(schema)
234
- mig << " drop_schema :#{schema} if reverting? && schema_exists?(:#{schema})\n"
235
- built_schemas[schema] = nil
236
- end
237
- mig << " end\nend\n"
238
- current_mig_time += 1.minute
239
- versions_to_create << (version = current_mig_time.strftime('%Y%m%d%H%M00')).split('_').first
240
- File.open("#{mig_path}/#{version}_create_#{full_table_name}.rb", "w") { |f| f.write mig }
247
+ mig << " end\n"
248
+ versions_to_create << migration_file_write(mig_path, "create_#{tbl_parts.join('_')}", current_mig_time += 1.minute, ar_version, mig)
241
249
  end
242
250
  done.concat(fringe)
243
251
  chosen -= done
244
252
  end
253
+
245
254
  stuck_counts = Hash.new { |h, k| h[k] = 0 }
246
255
  chosen.each do |leftover|
247
256
  puts "Can't do #{leftover} because:\n #{stuck[leftover].map do |snag|
@@ -285,5 +294,14 @@ module Brick
285
294
  def emit_column(type, name, suffix)
286
295
  " t.#{type.start_with?('numeric') ? 'decimal' : type} :#{name}#{suffix}\n"
287
296
  end
297
+
298
+ def migration_file_write(mig_path, name, current_mig_time, ar_version, mig)
299
+ File.open("#{mig_path}/#{version = current_mig_time.strftime('%Y%m%d%H%M00')}_#{name}.rb", "w") do |f|
300
+ f.write "class #{name.camelize} < ActiveRecord::Migration#{ar_version}\n"
301
+ f.write mig
302
+ f.write "end\n"
303
+ end
304
+ version
305
+ end
288
306
  end
289
307
  end
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.57
4
+ version: 1.0.58
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-08-11 00:00:00.000000000 Z
11
+ date: 2022-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord