safe-pg-migrations 2.3.0 → 2.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2a0df9e7452f957e5b9d5bde43186d621c8b8b4dab8f0131e100c295f03876bf
4
- data.tar.gz: 461407396bd567c37f8f361dcc45386691aa502828913b0954cc8e3cbe305fff
3
+ metadata.gz: da23106f1db5b2a4f626e37170f2d26f8642f52ffda4775d972822b12156b301
4
+ data.tar.gz: 49ede8d6b233b0d0c9b26efc5d62be4be99e08111b39beec9c4904928ae31e72
5
5
  SHA512:
6
- metadata.gz: 28e27ecdfd15480ae55a49357200f9b5e0ed4af1ac943973925ca5ac091c7b61ce50dca8047b6a24fe42a736a1214bfb56a08a7f791e59dfbce14587c10e7585
7
- data.tar.gz: f70e209ad111bf97d7a0fa8aea884a3191bc5ee028b67d5e445a553549c00e86f01cd948368e7b3f93ee1713724877d9e67272f6e5729cc71b69cddbac62316d
6
+ metadata.gz: 79502033f2e447bea822504895d62ad31e3aa78957c164cfa63a4b857f0282f0e19e0e2a848eba25c8f02cb447fed06316c7c5a1cd2e9f5a021cb9b5a9e178f7
7
+ data.tar.gz: cd0fb8724abf3ddc17d818fc664e4445cb2b27e87b5644ccb22be5cbe106383792b23ae2ce32c4ad7a6641ad965a8412afe52758b87a9086d2f8cdd979c698cd
@@ -6,15 +6,12 @@ module SafePgMigrations
6
6
 
7
7
  ruby2_keywords def add_index(table_name, column_name, *args)
8
8
  options = args.last.is_a?(Hash) ? args.last : {}
9
-
10
9
  index_definition = index_definition(table_name, column_name, **options)
11
10
 
12
11
  return super unless index_name_exists?(index_definition.table, index_definition.name)
13
12
 
14
13
  if index_valid?(index_definition.name)
15
- Helpers::Logger.say <<~MESSAGE.squish, sub_item: true
16
- /!\\ Index '#{index_definition.name}' already exists in '#{table_name}'. Skipping statement.
17
- MESSAGE
14
+ log_message("/!\\ Index '#{index_definition.name}' already exists in '#{table_name}'. Skipping statement.")
18
15
  return
19
16
  end
20
17
 
@@ -23,19 +20,24 @@ module SafePgMigrations
23
20
  end
24
21
 
25
22
  ruby2_keywords def add_column(table_name, column_name, type, *)
26
- return super unless column_exists?(table_name, column_name)
23
+ if column_exists?(table_name, column_name) && !column_exists?(table_name, column_name, type)
24
+ error_message = "/!\\ Column '#{column_name}' already exists in '#{table_name}' with a different type"
25
+ raise error_message
26
+ end
27
27
 
28
- Helpers::Logger.say <<~MESSAGE.squish, sub_item: true
29
- /!\\ Column '#{column_name}' already exists in '#{table_name}'. Skipping statement.
28
+ return super unless column_exists?(table_name, column_name, type)
29
+
30
+ log_message(<<~MESSAGE.squish
31
+ /!\\ Column '#{column_name}' already exists in '#{table_name}' with the same type (#{type}).
32
+ Skipping statement.
30
33
  MESSAGE
34
+ )
31
35
  end
32
36
 
33
37
  ruby2_keywords def remove_column(table_name, column_name, type = nil, *)
34
38
  return super if column_exists?(table_name, column_name)
35
39
 
36
- Helpers::Logger.say <<~MESSAGE.squish, sub_item: true
37
- /!\\ Column '#{column_name}' not found on table '#{table_name}'. Skipping statement.
38
- MESSAGE
40
+ log_message("/!\\ Column '#{column_name}' not found on table '#{table_name}'. Skipping statement.")
39
41
  end
40
42
 
41
43
  ruby2_keywords def remove_index(table_name, *args)
@@ -44,9 +46,7 @@ module SafePgMigrations
44
46
 
45
47
  return super if index_name_exists?(table_name, index_name)
46
48
 
47
- Helpers::Logger.say <<~MESSAGE.squish, sub_item: true
48
- /!\\ Index '#{index_name}' not found on table '#{table_name}'. Skipping statement.
49
- MESSAGE
49
+ log_message("/!\\ Index '#{index_name}' not found on table '#{table_name}'. Skipping statement.")
50
50
  end
51
51
 
52
52
  ruby2_keywords def add_foreign_key(from_table, to_table, *args)
@@ -54,18 +54,14 @@ module SafePgMigrations
54
54
  sub_options = options.slice(:name, :column)
55
55
  return super unless foreign_key_exists?(from_table, sub_options.present? ? nil : to_table, **sub_options)
56
56
 
57
- Helpers::Logger.say <<~MESSAGE.squish, sub_item: true
58
- /!\\ Foreign key '#{from_table}' -> '#{to_table}' already exists. Skipping statement.
59
- MESSAGE
57
+ log_message("/!\\ Foreign key '#{from_table}' -> '#{to_table}' already exists. Skipping statement.")
60
58
  end
61
59
 
62
60
  def remove_foreign_key(from_table, to_table = nil, **options)
63
61
  return super if foreign_key_exists?(from_table, to_table, **options)
64
62
 
65
63
  reference_name = to_table || options[:to_table] || options[:column] || options[:name]
66
- Helpers::Logger.say <<~MESSAGE.squish, sub_item: true
67
- /!\\ Foreign key '#{from_table}' -> '#{reference_name}' does not exist. Skipping statement.
68
- MESSAGE
64
+ log_message("/!\\ Foreign key '#{from_table}' -> '#{reference_name}' does not exist. Skipping statement.")
69
65
  end
70
66
 
71
67
  ruby2_keywords def create_table(table_name, *args)
@@ -91,9 +87,7 @@ module SafePgMigrations
91
87
 
92
88
  return super if constraint_definition.nil?
93
89
 
94
- Helpers::Logger.say <<~MESSAGE.squish, sub_item: true
95
- /!\\ Constraint '#{constraint_definition.name}' already exists. Skipping statement.
96
- MESSAGE
90
+ log_message("/!\\ Constraint '#{constraint_definition.name}' already exists. Skipping statement.")
97
91
  end
98
92
 
99
93
  def change_column_null(table_name, column_name, null, *)
@@ -101,9 +95,7 @@ module SafePgMigrations
101
95
 
102
96
  return super if column.null != null
103
97
 
104
- Helpers::Logger.say <<~MESSAGE.squish, sub_item: true
105
- /!\\ Column '#{table_name}.#{column.name}' is already set to 'null: #{null}'. Skipping statement.
106
- MESSAGE
98
+ log_message("/!\\ Column '#{table_name}.#{column.name}' is already set to 'null: #{null}'. Skipping statement.")
107
99
  end
108
100
 
109
101
  def validate_check_constraint(table_name, **options)
@@ -111,14 +103,11 @@ module SafePgMigrations
111
103
 
112
104
  return super unless constraint_definition.validated?
113
105
 
114
- Helpers::Logger.say <<~MESSAGE.squish, sub_item: true
115
- /!\\ Constraint '#{constraint_definition.name}' already validated. Skipping statement.
116
- MESSAGE
106
+ log_message("/!\\ Constraint '#{constraint_definition.name}' already validated. Skipping statement.")
117
107
  end
118
108
 
119
109
  def change_column_default(table_name, column_name, default_or_changes)
120
110
  column = column_for(table_name, column_name)
121
-
122
111
  previous_alter_statement = change_column_default_for_alter(table_name, column_name, column.default)
123
112
  new_alter_statement = change_column_default_for_alter(table_name, column_name, default_or_changes)
124
113
 
@@ -127,16 +116,24 @@ module SafePgMigrations
127
116
 
128
117
  return super if new_alter_statement != previous_alter_statement
129
118
 
130
- Helpers::Logger.say <<~MESSAGE.squish, sub_item: true
131
- /!\\ Column '#{table_name}.#{column.name}' is already set to 'default: #{column.default}'. Skipping statement.
119
+ log_message(<<~MESSAGE.squish
120
+ /!\\ Column '#{table_name}.#{column.name}' is already set to 'default: #{column.default}'.
121
+ Skipping statement.
132
122
  MESSAGE
123
+ )
133
124
  end
134
125
 
135
126
  ruby2_keywords def drop_table(table_name, *)
136
127
  return super if table_exists?(table_name)
137
128
 
129
+ log_message("/!\\ Table '#{table_name} does not exist. Skipping statement.")
130
+ end
131
+
132
+ private
133
+
134
+ def log_message(message)
138
135
  Helpers::Logger.say <<~MESSAGE.squish, sub_item: true
139
- /!\\ Table '#{table_name} does not exist. Skipping statement.
136
+ #{message}
140
137
  MESSAGE
141
138
  end
142
139
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SafePgMigrations
4
- VERSION = '2.3.0'
4
+ VERSION = '2.3.1'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: safe-pg-migrations
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthieu Prat
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2023-08-02 00:00:00.000000000 Z
13
+ date: 2023-10-16 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
@@ -19,6 +19,9 @@ dependencies:
19
19
  - - ">="
20
20
  - !ruby/object:Gem::Version
21
21
  version: '6.0'
22
+ - - "<"
23
+ - !ruby/object:Gem::Version
24
+ version: 7.1.x
22
25
  type: :runtime
23
26
  prerelease: false
24
27
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,6 +29,9 @@ dependencies:
26
29
  - - ">="
27
30
  - !ruby/object:Gem::Version
28
31
  version: '6.0'
32
+ - - "<"
33
+ - !ruby/object:Gem::Version
34
+ version: 7.1.x
29
35
  - !ruby/object:Gem::Dependency
30
36
  name: activesupport
31
37
  requirement: !ruby/object:Gem::Requirement
@@ -33,6 +39,9 @@ dependencies:
33
39
  - - ">="
34
40
  - !ruby/object:Gem::Version
35
41
  version: '6.0'
42
+ - - "<"
43
+ - !ruby/object:Gem::Version
44
+ version: 7.1.x
36
45
  type: :runtime
37
46
  prerelease: false
38
47
  version_requirements: !ruby/object:Gem::Requirement
@@ -40,6 +49,9 @@ dependencies:
40
49
  - - ">="
41
50
  - !ruby/object:Gem::Version
42
51
  version: '6.0'
52
+ - - "<"
53
+ - !ruby/object:Gem::Version
54
+ version: 7.1.x
43
55
  description: Make your PG migrations safe.
44
56
  email:
45
57
  executables: []