activerecord-pg-format-db-structure 0.2.0 → 0.2.1

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: 2a0b4f6730ac7a280afddd46b476a8443e4cbbb3eac4004b92692223437f432c
4
- data.tar.gz: b23c3a6ed71d6c46efa516d21f4c546dbdd3d2638f7c60046af0ff015d576f4d
3
+ metadata.gz: 476baa5e7f08de7b010ef98240bf4dc9d5f92d8c381759682dfdcbdd33ba5723
4
+ data.tar.gz: 8a9337bff151ccadbfc77cb638aca3b1097831979206cf971d4e3af4b3258c7c
5
5
  SHA512:
6
- metadata.gz: f74568c5dcdecd2b0fe20d0823167e97a59da8593d534f877370b8e91b333a1a1c397c37913d5c81e91d8ccdfd254fc594f930ea1a0dab1ada589815ed8c38b5
7
- data.tar.gz: 0eec46264e79d1ff729e12bef71bf6fd90291dbaff13ed88ae259f4e26b15cf7584ddb91a581d05d00df6c5b1ce4add028b4dc5f1318b32f89ef34dbbb8b0ddb
6
+ metadata.gz: a6c728fe8aba0d6c943ff8ac5cf16d386099ea85f4a35c101eed701b899ab3ec266b9004313007bba2d5e2567273f5aedfff857567743ea64c1a2d5bdaa1961c
7
+ data.tar.gz: 17b9b5722ac383a92969640cf30a6a68aaee073eec784cbe8545eae6f85d983a5fc7a5b2bebd66755bcf097340a8e931a4e831cc298647759f039078b51663f4
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.2.1] - 2025-02-15
4
+
5
+ - Add transform to remove SET commands with default values
6
+
3
7
  ## [0.2.0] - 2025-02-15
4
8
 
5
9
  - Remove preprocessors (no longer relevant now that we don't reuse the source string in the output)
data/README.md CHANGED
@@ -265,6 +265,7 @@ If you want to configure which transforms to use, you can configure the library
265
265
  Rails.application.configure do
266
266
  config.activerecord_pg_format_db_structure.transforms = [
267
267
  ActiveRecordPgFormatDbStructure::Transforms::RemoveCommentsOnExtensions,
268
+ ActiveRecordPgFormatDbStructure::Transforms::RemoveDefaultsSetCommands,
268
269
  ActiveRecordPgFormatDbStructure::Transforms::SortSchemaMigrations,
269
270
  ActiveRecordPgFormatDbStructure::Transforms::InlinePrimaryKeys,
270
271
  # ActiveRecordPgFormatDbStructure::Transforms::InlineForeignKeys,
@@ -295,6 +296,27 @@ File.write("db/structure.sql", formatted)
295
296
 
296
297
  Remove COMMENT statement applied to extensions
297
298
 
299
+ ### RemoveDefaultsSetCommands
300
+
301
+ Remove SET commands that apply default values to postgres settings. By default, the following defaults are handled:
302
+
303
+ ```ruby
304
+ ActiveRecordPgFormatDbStructure::Transforms::RemoveDefaultsSetCommands.postgres_config_defaults = {
305
+ default_table_access_method: "heap",
306
+ default_with_oids: false,
307
+ idle_in_transaction_session_timeout: 0,
308
+ lock_timeout: 0,
309
+ statement_timeout: 0,
310
+ transaction_timeout: 0,
311
+ standard_conforming_strings: true,
312
+ xmloption: "content"
313
+ }
314
+ ```
315
+
316
+ Which are the default values since Postgres 9.1. You can make changes
317
+ to the above config in case you want to handle more cases.
318
+
319
+
298
320
  ### SortSchemaMigrations
299
321
 
300
322
  Sort schema_migrations inserts to be in chronological order, helps with reducing merge conflicts.
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "base"
4
+
5
+ module ActiveRecordPgFormatDbStructure
6
+ module Transforms
7
+ # Remove SET commands that apply default values to postgres settings
8
+ class RemoveDefaultsSetCommands < Base
9
+ class << self
10
+ attr_accessor :postgres_config_defaults
11
+ end
12
+
13
+ self.postgres_config_defaults = {
14
+ default_table_access_method: "heap",
15
+ default_with_oids: false,
16
+ idle_in_transaction_session_timeout: 0,
17
+ lock_timeout: 0,
18
+ statement_timeout: 0,
19
+ transaction_timeout: 0,
20
+ standard_conforming_strings: true,
21
+ xmloption: "content"
22
+ }
23
+
24
+ def transform!
25
+ raw_statements.delete_if do |raw_statement|
26
+ next unless raw_statement.stmt.to_h in variable_set_stmt: {kind: :VAR_SET_VALUE, name:, args: [{a_const:}]}
27
+
28
+ next unless self.class.postgres_config_defaults.key?(name.to_sym)
29
+
30
+ pattern = value_to_pattern(self.class.postgres_config_defaults[name.to_sym])
31
+
32
+ val_from_a_const(a_const) in ^pattern
33
+ end
34
+ end
35
+
36
+ private
37
+
38
+ def value_to_pattern(value)
39
+ case value
40
+ in false
41
+ Set.new(["false", "no", "off", 0])
42
+ in true
43
+ Set.new(["true", "yes", "on", 1])
44
+ else
45
+ value
46
+ end
47
+ end
48
+
49
+ def val_from_a_const(a_const)
50
+ case a_const
51
+ in ival:
52
+ ival.fetch(:ival, 0)
53
+ in sval:
54
+ sval.fetch(:sval, "").downcase
55
+ else
56
+ a_const.values.first
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveRecordPgFormatDbStructure
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
@@ -10,12 +10,14 @@ require_relative "activerecord-pg-format-db-structure/transforms/inline_foreign_
10
10
  require_relative "activerecord-pg-format-db-structure/transforms/move_indices_after_create_table"
11
11
  require_relative "activerecord-pg-format-db-structure/transforms/inline_constraints"
12
12
  require_relative "activerecord-pg-format-db-structure/transforms/group_alter_table_statements"
13
+ require_relative "activerecord-pg-format-db-structure/transforms/remove_defaults_set_commands"
13
14
  require_relative "activerecord-pg-format-db-structure/transforms/sort_schema_migrations"
14
15
  require_relative "activerecord-pg-format-db-structure/transforms/sort_table_columns"
15
16
 
16
17
  module ActiveRecordPgFormatDbStructure
17
18
  DEFAULT_TRANSFORMS = [
18
19
  Transforms::RemoveCommentsOnExtensions,
20
+ Transforms::RemoveDefaultsSetCommands,
19
21
  Transforms::SortSchemaMigrations,
20
22
  Transforms::InlinePrimaryKeys,
21
23
  # Transforms::InlineForeignKeys,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-pg-format-db-structure
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jell
@@ -52,6 +52,7 @@ files:
52
52
  - lib/activerecord-pg-format-db-structure/transforms/inline_serials.rb
53
53
  - lib/activerecord-pg-format-db-structure/transforms/move_indices_after_create_table.rb
54
54
  - lib/activerecord-pg-format-db-structure/transforms/remove_comments_on_extensions.rb
55
+ - lib/activerecord-pg-format-db-structure/transforms/remove_defaults_set_commands.rb
55
56
  - lib/activerecord-pg-format-db-structure/transforms/sort_schema_migrations.rb
56
57
  - lib/activerecord-pg-format-db-structure/transforms/sort_table_columns.rb
57
58
  - lib/activerecord-pg-format-db-structure/version.rb