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 +4 -4
- data/CHANGELOG.md +14 -0
- data/lib/dynamic_migrations/postgres/server/database/connection.rb +16 -4
- data/lib/dynamic_migrations/postgres/server/database/schema/table/validation.rb +7 -1
- data/lib/dynamic_migrations/version.rb +1 -1
- data/sig/dynamic_migrations/postgres/server/database/connection.rbs +1 -0
- data/sig/dynamic_migrations/postgres/server/database/schema/table/validation.rbs +3 -0
- 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: 2641592d2902b2b4db711882300e45157cf45df12d3f19ceea84ff97e13f6fab
|
4
|
+
data.tar.gz: d6eb83a0f1d0631acc1474d18305e0828688210f7008dbddb460dc1b2cfaf668
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
-
|
48
|
-
|
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
|
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.
|
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-
|
11
|
+
date: 2023-10-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pg
|