dynamic_migrations 3.8.0 → 3.8.2

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: 437a84189a939e185f89db2de8395bc1fb8dc9f159b3948a97dcc5b04c4fedb7
4
- data.tar.gz: 6e1df320ac06c0b0ca9d6aeb3abf684e47b9daac4ee1def93180de801f73125b
3
+ metadata.gz: 2641592d2902b2b4db711882300e45157cf45df12d3f19ceea84ff97e13f6fab
4
+ data.tar.gz: d6eb83a0f1d0631acc1474d18305e0828688210f7008dbddb460dc1b2cfaf668
5
5
  SHA512:
6
- metadata.gz: c2ce93a8d273abfb0c2ede80b7564216a8409bcd8a43b8fe6c85043eed83d750f8a2b2e53996afdc241e13db9f6cdf2c3f52034a5e93965663684bc121237b54
7
- data.tar.gz: bb3378cc475e8e3c16dd2d3a9a5754484da539d3ba1feb4839d2312c1f24cb147ea11534ba3a9bfbcda827bee4bc5ae18cc2c7a2b23bdd67c84a23503fc4fcab
6
+ metadata.gz: 48130e442efa9a4e2ab9763fe8e0cb1f35bca56691361e0d3c350813e89c31e1445f59ff76b981e560eb521e8dfb72822ac80c04c738203b62237ccc9690ecc1
7
+ data.tar.gz: 0a40ea04a41e2f072fe0f8ae9a163a1989c0e8c752b7078491ae5b75bbe18cfc3d3eebd777a61de2b4372297e78c54539d3a449b11a76771c19a86370d5fe588
data/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [3.8.2](https://github.com/craigulliott/dynamic_migrations/compare/v3.8.1...v3.8.2) (2023-10-06)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * fetch_normalized_check_clause_and_column_names was using column names from the validation instead of the table it belonged to ([5157205](https://github.com/craigulliott/dynamic_migrations/commit/5157205fc52cfbf062d61054bf12c117a5df5b57))
9
+
10
+ ## [3.8.1](https://github.com/craigulliott/dynamic_migrations/compare/v3.8.0...v3.8.1) (2023-10-06)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * reusing exiting connection when with_connection is called (it was trying to open a new connection and caused an error) ([840a5cd](https://github.com/craigulliott/dynamic_migrations/commit/840a5cda04d6bc49d73160d2bad7271780027c84))
16
+
3
17
  ## [3.8.0](https://github.com/craigulliott/dynamic_migrations/compare/v3.7.0...v3.8.0) (2023-10-04)
4
18
 
5
19
 
@@ -33,19 +33,31 @@ module DynamicMigrations
33
33
  end
34
34
  end
35
35
 
36
+ def connected?
37
+ !@connection.nil?
38
+ end
39
+
36
40
  # Opens a connection to the database server, and yields the provided block
37
41
  # before automatically closing the connection again. This is useful for
38
42
  # executing one time queries against the database server.
39
43
  def with_connection &block
40
- # create a temporary connection to the server
41
- connect
44
+ # create a temporary connection to the server (unless we are already connected)
45
+ already_connected = connected?
46
+ unless already_connected
47
+ connect
48
+ end
49
+
42
50
  # perform work with the connection
43
51
  # todo: `yield connection` would have been preferred, but rbs/steep doesnt understand that syntax
44
52
  if block.is_a? Proc
45
53
  result = block.call connection
46
54
  end
47
- # close the connection
48
- disconnect
55
+
56
+ # close the connection (unless we were already connected)
57
+ if already_connected
58
+ disconnect
59
+ end
60
+
49
61
  # return whever was returned from within the block
50
62
  result
51
63
  end
@@ -14,6 +14,9 @@ module DynamicMigrations
14
14
  class ExpectedArrayOfColumnsError < StandardError
15
15
  end
16
16
 
17
+ class ExpectedTableColumnsError < StandardError
18
+ end
19
+
17
20
  class DuplicateColumnError < StandardError
18
21
  end
19
22
 
@@ -122,6 +125,9 @@ module DynamicMigrations
122
125
  end
123
126
 
124
127
  def fetch_normalized_check_clause_and_column_names
128
+ if table.columns.empty?
129
+ raise ExpectedTableColumnsError, "Can not normalize check clause or validation columnns because the table has no columns"
130
+ end
125
131
  result = table.schema.database.with_connection do |connection|
126
132
  # wrapped in a transaction just in case something here fails, because
127
133
  # we don't want the temporary table to be persisted
@@ -130,7 +136,7 @@ module DynamicMigrations
130
136
  # create the temp table and add the expected columns and constraint
131
137
  connection.exec(<<~SQL)
132
138
  CREATE TEMP TABLE validation_normalized_check_clause_temp_table (
133
- #{columns.map { |column| '"' + column.name.to_s + '" ' + column.temp_table_data_type.to_s }.join(", ")},
139
+ #{table.columns.map { |column| '"' + column.name.to_s + '" ' + column.temp_table_data_type.to_s }.join(", ")},
134
140
  CONSTRAINT #{name} CHECK (#{check_clause})
135
141
  );
136
142
  SQL
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DynamicMigrations
4
- VERSION = "3.8.0"
4
+ VERSION = "3.8.2"
5
5
  end
@@ -7,6 +7,7 @@ module DynamicMigrations
7
7
 
8
8
  def connect: -> PG::Connection
9
9
  def connection: -> PG::Connection
10
+ def connected?: -> bool
10
11
  def disconnect: -> void
11
12
  def with_connection: -> untyped
12
13
 
@@ -36,6 +36,9 @@ module DynamicMigrations
36
36
  class ExpectedArrayOfColumnsError < StandardError
37
37
  end
38
38
 
39
+ class ExpectedTableColumnsError < StandardError
40
+ end
41
+
39
42
  class DuplicateColumnError < StandardError
40
43
  end
41
44
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamic_migrations
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.8.0
4
+ version: 3.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Craig Ulliott
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-04 00:00:00.000000000 Z
11
+ date: 2023-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg