pg_trunk 0.1.0 → 0.2.0

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.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +4 -15
  3. data/CHANGELOG.md +21 -0
  4. data/README.md +3 -1
  5. data/lib/pg_trunk/core/operation/attributes.rb +1 -1
  6. data/lib/pg_trunk/core/railtie/custom_types.rb +5 -6
  7. data/lib/pg_trunk/operations/check_constraints/add_check_constraint.rb +42 -33
  8. data/lib/pg_trunk/operations/check_constraints/drop_check_constraint.rb +51 -40
  9. data/lib/pg_trunk/operations/check_constraints/rename_check_constraint.rb +39 -30
  10. data/lib/pg_trunk/operations/check_constraints/validate_check_constraint.rb +28 -21
  11. data/lib/pg_trunk/operations/composite_types/change_composite_type.rb +59 -50
  12. data/lib/pg_trunk/operations/composite_types/create_composite_type.rb +23 -19
  13. data/lib/pg_trunk/operations/composite_types/drop_composite_type.rb +48 -43
  14. data/lib/pg_trunk/operations/composite_types/rename_composite_type.rb +15 -12
  15. data/lib/pg_trunk/operations/domains/change_domain.rb +53 -47
  16. data/lib/pg_trunk/operations/domains/create_domain.rb +28 -25
  17. data/lib/pg_trunk/operations/domains/drop_domain.rb +50 -41
  18. data/lib/pg_trunk/operations/domains/rename_domain.rb +17 -12
  19. data/lib/pg_trunk/operations/enums/change_enum.rb +37 -32
  20. data/lib/pg_trunk/operations/enums/create_enum.rb +23 -20
  21. data/lib/pg_trunk/operations/enums/drop_enum.rb +50 -39
  22. data/lib/pg_trunk/operations/enums/rename_enum.rb +17 -12
  23. data/lib/pg_trunk/operations/foreign_keys/add_foreign_key.rb +58 -49
  24. data/lib/pg_trunk/operations/foreign_keys/drop_foreign_key.rb +57 -48
  25. data/lib/pg_trunk/operations/foreign_keys/rename_foreign_key.rb +38 -29
  26. data/lib/pg_trunk/operations/functions/change_function.rb +53 -47
  27. data/lib/pg_trunk/operations/functions/create_function.rb +75 -64
  28. data/lib/pg_trunk/operations/functions/drop_function.rb +78 -65
  29. data/lib/pg_trunk/operations/functions/rename_function.rb +29 -22
  30. data/lib/pg_trunk/operations/materialized_views/change_materialized_view.rb +65 -55
  31. data/lib/pg_trunk/operations/materialized_views/create_materialized_view.rb +82 -71
  32. data/lib/pg_trunk/operations/materialized_views/drop_materialized_view.rb +59 -46
  33. data/lib/pg_trunk/operations/materialized_views/refresh_materialized_view.rb +29 -24
  34. data/lib/pg_trunk/operations/materialized_views/rename_materialized_view.rb +29 -22
  35. data/lib/pg_trunk/operations/procedures/change_procedure.rb +53 -46
  36. data/lib/pg_trunk/operations/procedures/create_procedure.rb +63 -52
  37. data/lib/pg_trunk/operations/procedures/drop_procedure.rb +56 -45
  38. data/lib/pg_trunk/operations/procedures/rename_procedure.rb +29 -22
  39. data/lib/pg_trunk/operations/rules/base.rb +77 -0
  40. data/lib/pg_trunk/operations/rules/create_rule.rb +155 -0
  41. data/lib/pg_trunk/operations/rules/drop_rule.rb +94 -0
  42. data/lib/pg_trunk/operations/rules/rename_rule.rb +62 -0
  43. data/lib/pg_trunk/operations/rules.rb +13 -0
  44. data/lib/pg_trunk/operations/sequences/base.rb +79 -0
  45. data/lib/pg_trunk/operations/sequences/change_sequence.rb +142 -0
  46. data/lib/pg_trunk/operations/sequences/create_sequence.rb +180 -0
  47. data/lib/pg_trunk/operations/sequences/drop_sequence.rb +82 -0
  48. data/lib/pg_trunk/operations/sequences/rename_sequence.rb +64 -0
  49. data/lib/pg_trunk/operations/sequences.rb +14 -0
  50. data/lib/pg_trunk/operations/statistics/create_statistics.rb +67 -56
  51. data/lib/pg_trunk/operations/statistics/drop_statistics.rb +64 -53
  52. data/lib/pg_trunk/operations/statistics/rename_statistics.rb +18 -13
  53. data/lib/pg_trunk/operations/triggers/change_trigger.rb +23 -18
  54. data/lib/pg_trunk/operations/triggers/create_trigger.rb +63 -54
  55. data/lib/pg_trunk/operations/triggers/drop_trigger.rb +55 -46
  56. data/lib/pg_trunk/operations/triggers/rename_trigger.rb +51 -48
  57. data/lib/pg_trunk/operations/views/change_view.rb +47 -38
  58. data/lib/pg_trunk/operations/views/create_view.rb +56 -45
  59. data/lib/pg_trunk/operations/views/drop_view.rb +59 -46
  60. data/lib/pg_trunk/operations/views/rename_view.rb +27 -20
  61. data/lib/pg_trunk/operations.rb +2 -0
  62. data/lib/pg_trunk/version.rb +1 -1
  63. data/pg_trunk.gemspec +0 -1
  64. data/spec/operations/rules/create_rule_spec.rb +119 -0
  65. data/spec/operations/rules/drop_rule_spec.rb +117 -0
  66. data/spec/operations/rules/rename_rule_spec.rb +148 -0
  67. data/spec/operations/sequences/change_sequence_spec.rb +134 -0
  68. data/spec/operations/sequences/create_sequence_spec.rb +156 -0
  69. data/spec/operations/sequences/drop_sequence_spec.rb +102 -0
  70. data/spec/operations/sequences/rename_sequence_spec.rb +100 -0
  71. metadata +22 -68
@@ -1,49 +1,54 @@
1
1
  # frozen_string_literal: false
2
2
 
3
- # @!method ActiveRecord::Migration#drop_composite_type(name, **options, &block)
4
- # Drop a composite type
5
- #
6
- # @param [#to_s] name (nil) The qualified name of the type
7
- # @option [Boolean] :if_exists (false) Suppress the error when the type is absent
8
- # @option [Symbol] :force (:restrict) How to process dependent objects (`:cascade` or `:restrict`)
9
- # @option [#to_s] :comment (nil) The comment describing the constraint
10
- # @yield [Proc] the block with the type's definition
11
- # @yieldparam The receiver of methods specifying the type
12
- #
13
- # The operation drops a composite_type type identified by its
14
- # qualified name (it can include a schema).
15
- #
16
- # For inversion use the same options as in the
17
- # `create_composite_type` operation.
18
- #
19
- # drop_composite_type "paint.colored_point" do |d|
20
- # d.column "x", "integer"
21
- # d.column "y", "integer"
22
- # d.column "color", "text", collation: "en_US"
23
- # d.comment <<~COMMENT
24
- # 2D point with color
25
- # COMMENT
3
+ # @!parse
4
+ # class ActiveRecord::Migration
5
+ # # Drop a composite type
6
+ # #
7
+ # # @param [#to_s] name (nil) The qualified name of the type
8
+ # # @option options [Boolean] :if_exists (false) Suppress the error when the type is absent
9
+ # # @option options [Symbol] :force (:restrict) How to process dependent objects (`:cascade` or `:restrict`)
10
+ # # @option options [#to_s] :comment (nil) The comment describing the constraint
11
+ # # @yield [t] the block with the type's definition
12
+ # # @yieldparam Object receiver of methods specifying the type
13
+ # # @return [void]
14
+ # #
15
+ # # The operation drops a composite_type type identified by its qualified name (it can include a schema).
16
+ # #
17
+ # # For inversion use the same options as in the `create_composite_type` operation.
18
+ # #
19
+ # # ```ruby
20
+ # # drop_composite_type "paint.colored_point" do |d|
21
+ # # d.column "x", "integer"
22
+ # # d.column "y", "integer"
23
+ # # d.column "color", "text", collation: "en_US"
24
+ # # d.comment <<~COMMENT
25
+ # # 2D point with color
26
+ # # COMMENT
27
+ # # end
28
+ # # ```
29
+ # #
30
+ # # Notice, that the composite type creation can use no attributes.
31
+ # # That's why dropping it is always reversible; though the reversion provides a type without columns:
32
+ # #
33
+ # # ```ruby
34
+ # # drop_composite_type "paint.colored_point"
35
+ # # ```
36
+ # #
37
+ # # With the `force: :cascade` option the operation removes all objects using the type.
38
+ # #
39
+ # # ```ruby
40
+ # # drop_composite_type "paint.colored_point", force: :cascade
41
+ # # ```
42
+ # #
43
+ # # With the `if_exists: true` option the operation won't fail even when the view was absent.
44
+ # #
45
+ # # ```ruby
46
+ # # drop_composite_type "paint.colored_point", if_exists: true
47
+ # # ```
48
+ # #
49
+ # # Both options make a migration irreversible due to uncertainty of the previous state of the database.
50
+ # def drop_composite_type(name, **options, &block); end
26
51
  # end
27
- #
28
- # Notice, that the composite type creation can use no attributes.
29
- # That's why dropping it is always reversible; though the reversion
30
- # would provide a type without columns:
31
- #
32
- # drop_composite_type "paint.colored_point"
33
- #
34
- # With the `force: :cascade` option the operation would remove
35
- # all objects using the type.
36
- #
37
- # drop_composite_type "paint.colored_point", force: :cascade
38
- #
39
- # With the `if_exists: true` option the operation won't fail
40
- # even when the view was absent in the database.
41
- #
42
- # drop_composite_type "paint.colored_point", if_exists: true
43
- #
44
- # Both options make a migration irreversible due to uncertainty
45
- # of the previous state of the database.
46
-
47
52
  module PGTrunk::Operations::CompositeTypes
48
53
  # @private
49
54
  class DropCompositeType < Base
@@ -1,17 +1,20 @@
1
1
  # frozen_string_literal: false
2
2
 
3
- # @!method ActiveRecord::Migration#rename_composite_type(name, to:)
4
- # Change the name and/or schema of a composite type
5
- #
6
- # @param [#to_s] name (nil) The qualified name of the type
7
- # @option [#to_s] :to (nil) The new qualified name for the type
8
- #
9
- # @example
10
- #
11
- # rename_composite_type "point", to: "paint.colored_point"
12
- #
13
- # The operation is always reversible.
14
-
3
+ # @!parse
4
+ # class ActiveRecord::Migration
5
+ # # Change the name and/or schema of a composite type
6
+ # #
7
+ # # @param [#to_s] name (nil) The qualified name of the type
8
+ # # @option options [#to_s] :to (nil) The new qualified name for the type
9
+ # # @return [void]
10
+ # #
11
+ # # ```ruby
12
+ # # rename_composite_type "point", to: "paint.colored_point"
13
+ # # ```
14
+ # #
15
+ # # The operation is always reversible.
16
+ # def rename_composite_type(name, to:); end
17
+ # end
15
18
  module PGTrunk::Operations::CompositeTypes
16
19
  # @private
17
20
  class RenameCompositeType < Base
@@ -1,53 +1,59 @@
1
1
  # frozen_string_literal: false
2
2
 
3
- # @!method ActiveRecord::Migration#change_domain(name, &block)
4
- # Modify a domain type
5
- #
6
- # @param [#to_s] name (nil) The qualified name of the type
7
- # @yield [Proc] the block with the type's definition
8
- # @yieldparam The receiver of methods specifying the type
9
- #
10
- # The operation can be used to add or remove constraints,
11
- # modify the default_sql value, or the description of the domain type.
12
- # Neither the underlying type nor the collation can be changed.
13
- #
14
- # change_domain "dict.us_postal_code" do |d|
15
- # d.null true # from: false
16
- # # check is added for inversion
17
- # d.drop_constraint "postal_code_length", check: <<~SQL
18
- # length(VALUE) > 3 AND length(VALUE) < 6
19
- # SQL
20
- # d.add_constraint <<~SQL, name: "postal_code_valid"
21
- # VALUE ~ '^\d{5}$' OR VALUE ~ '^\d{5}-\d{4}$'
22
- # SQL
23
- # d.default_sql "'00000'::text", from: "'0000'::text"
24
- # d.comment <<~COMMENT, from: <<~COMMENT
25
- # Supported currencies
26
- # COMMENT
27
- # Currencies
28
- # COMMENT
3
+ # @!parse
4
+ # class ActiveRecord::Migration
5
+ # # Modify a domain type
6
+ # #
7
+ # # @param [#to_s] name (nil) The qualified name of the type
8
+ # # @yield [d] the block with the type's definition
9
+ # # @yieldparam Object receiver of methods specifying the type
10
+ # # @return [void]
11
+ # #
12
+ # # The operation can be used to add or remove constraints,
13
+ # # modify the default_sql value, or the description of the domain type.
14
+ # # Neither the underlying type nor the collation can be changed.
15
+ # #
16
+ # # ```ruby
17
+ # # change_domain "dict.us_postal_code" do |d|
18
+ # # d.null true # from: false
19
+ # # # check is added for inversion
20
+ # # d.drop_constraint "postal_code_length", check: <<~SQL
21
+ # # length(VALUE) > 3 AND length(VALUE) < 6
22
+ # # SQL
23
+ # # d.add_constraint <<~SQL, name: "postal_code_valid"
24
+ # # VALUE ~ '^\d{5}$' OR VALUE ~ '^\d{5}-\d{4}$'
25
+ # # SQL
26
+ # # d.default_sql "'00000'::text", from: "'0000'::text"
27
+ # # d.comment <<~COMMENT, from: <<~COMMENT
28
+ # # Supported currencies
29
+ # # COMMENT
30
+ # # Currencies
31
+ # # COMMENT
32
+ # # end
33
+ # # ```
34
+ # #
35
+ # # Use blank string (not a `nil` value) to reset either a default_sql,
36
+ # # or the comment. `nil`-s here will be ignored.
37
+ # #
38
+ # # When dropping a constraint you can use a `check` expression.
39
+ # # In the same manner, use `from` option with `comment` or `default_sql`
40
+ # # to make the operation invertible.
41
+ # #
42
+ # # It is irreversible in case any `drop_constraint` clause
43
+ # # has `if_exists: true` or `force: :cascade` option -- due to
44
+ # # uncertainty of the previous state of the database:
45
+ # #
46
+ # # ```ruby
47
+ # # change_domain "dict.us_postal_code", force: :cascade do |d|
48
+ # # d.drop_constraint "postal_code_valid" # missed `:check` option
49
+ # # d.drop_constraint "postal_code_length"
50
+ # # d.drop_constraint "postal_code_format", if_exists: true
51
+ # # d.default_sql "'0000'::text" # missed `:from` option
52
+ # # d.comment "New comment" # missed `:from` option
53
+ # # end
54
+ # # ```
55
+ # def change_domain(name, &block); end
29
56
  # end
30
- #
31
- # Use blank string (not a `nil` value) to reset either a default_sql,
32
- # or the comment. `nil`-s here will be ignored.
33
- #
34
- # When dropping a constraint you can use a `check` expression.
35
- # In the same manner, use `from` option with `comment` or `default_sql`
36
- # to make the operation invertible.
37
- #
38
- # It is irreversible in case any `drop_constraint` clause
39
- # has `if_exists: true` or `force: :cascade` option -- due to
40
- # uncertainty of the previous state of the database:
41
- #
42
- # # Irreversible change
43
- # change_domain "dict.us_postal_code", force: :cascade do |d|
44
- # d.drop_constraint "postal_code_valid" # missed `:check` option
45
- # d.drop_constraint "postal_code_length"
46
- # d.drop_constraint "postal_code_format", if_exists: true
47
- # d.default_sql "'0000'::text" # missed `:from` option
48
- # d.comment "New comment" # missed `:from` option
49
- # end
50
-
51
57
  module PGTrunk::Operations::Domains
52
58
  # @private
53
59
  class ChangeDomain < Base
@@ -1,31 +1,34 @@
1
1
  # frozen_string_literal: false
2
2
 
3
- # @!method ActiveRecord::Migration#create_domain(name, **options, &block)
4
- # Create a domain type
5
- #
6
- # @param [#to_s] name (nil) The qualified name of the type
7
- # @option [#to_s] :as (nil) The base type for the domain (alias: :type)
8
- # @option [#to_s] :collation (nil) The collation
9
- # @option [Boolean] :null (true) If a value of this type can be NULL
10
- # @option [#to_s] :default_sql (nil) The snippet for the default value of the domain
11
- # @option [#to_s] :comment (nil) The comment describing the constraint
12
- # @yield [Proc] the block with the type's definition
13
- # @yieldparam The receiver of methods specifying the type
14
- #
15
- # @example:
16
- #
17
- # create_domain "dict.us_postal_code", as: "text" do |d|
18
- # d.collation "en_US"
19
- # d.default_sql "'0000'::text"
20
- # d.null false
21
- # d.constraint <<~SQL, name: "code_valid"
22
- # VALUE ~ '^\d{5}$' OR VALUE ~ '^\d{5}-\d{4}$'
23
- # SQL
24
- # d.comment "US postal code"
3
+ # @!parse
4
+ # class ActiveRecord::Migration
5
+ # # Create a domain type
6
+ # #
7
+ # # @param [#to_s] name (nil) The qualified name of the type
8
+ # # @option options [#to_s] :as (nil) The base type for the domain (alias: :type)
9
+ # # @option options [#to_s] :collation (nil) The collation
10
+ # # @option options [Boolean] :null (true) If a value of this type can be NULL
11
+ # # @option options [#to_s] :default_sql (nil) The snippet for the default value of the domain
12
+ # # @option options [#to_s] :comment (nil) The comment describing the constraint
13
+ # # @yield [d] the block with the type's definition
14
+ # # @yieldparam Object receiver of methods specifying the type
15
+ # # @return [void]
16
+ # #
17
+ # # ```ruby
18
+ # # create_domain "dict.us_postal_code", as: "text" do |d|
19
+ # # d.collation "en_US"
20
+ # # d.default_sql "'0000'::text"
21
+ # # d.null false
22
+ # # d.constraint <<~SQL, name: "code_valid"
23
+ # # VALUE ~ '^\d{5}$' OR VALUE ~ '^\d{5}-\d{4}$'
24
+ # # SQL
25
+ # # d.comment "US postal code"
26
+ # # end
27
+ # # ```
28
+ # #
29
+ # # It is always reversible.
30
+ # def create_domain(name, **options, &block); end
25
31
  # end
26
- #
27
- # It is always reversible.
28
-
29
32
  module PGTrunk::Operations::Domains
30
33
  # @private
31
34
  class CreateDomain < Base
@@ -1,47 +1,56 @@
1
1
  # frozen_string_literal: false
2
2
 
3
- # @!method ActiveRecord::Migration#drop_domain(name, **options, &block)
4
- # Drop a domain type by qualified name
5
- #
6
- # @param [#to_s] name (nil) The qualified name of the type
7
- # @option [Boolean] :if_exists (false) Suppress the error when the type is absent
8
- # @option [Symbol] :force (:restrict) How to process dependent objects (`:cascade` or `:restrict`)
9
- # @option [#to_s] :as (nil) The base type for the domain (alias: :type)
10
- # @option [#to_s] :collation (nil) The collation
11
- # @option [#to_s] :default_sql (nil) The snippet for the default value of the domain
12
- # @option [#to_s] :comment (nil) The comment describing the constraint
13
- # @yield [Proc] the block with the type's definition
14
- # @yieldparam The receiver of methods specifying the type
15
- #
16
- # @example:
17
- #
18
- # drop_domain "dict.us_postal_code"
19
- #
20
- # To make the operation invertible, use the same options
21
- # as in the `create_domain` operation.
22
- #
23
- # drop_domain "dict.us_postal_code", as: "string" do |d|
24
- # d.constraint <<~SQL, name: "code_valid"
25
- # VALUE ~ '^\d{5}$' OR VALUE ~ '^\d{5}-\d{4}$'
26
- # SQL
27
- # d.comment <<~COMMENT
28
- # US postal code
29
- # COMMENT
3
+ # @!parse
4
+ # class ActiveRecord::Migration
5
+ # # Drop a domain type by qualified name
6
+ # #
7
+ # # @param [#to_s] name (nil) The qualified name of the type
8
+ # # @option options [Boolean] :if_exists (false) Suppress the error when the type is absent
9
+ # # @option options [Symbol] :force (:restrict) How to process dependent objects (`:cascade` or `:restrict`)
10
+ # # @option options [#to_s] :as (nil) The base type for the domain (alias: :type)
11
+ # # @option options [#to_s] :collation (nil) The collation
12
+ # # @option options [#to_s] :default_sql (nil) The snippet for the default value of the domain
13
+ # # @option options [#to_s] :comment (nil) The comment describing the constraint
14
+ # # @yield [d] the block with the type's definition
15
+ # # @yieldparam Object receiver of methods specifying the type
16
+ # # @return [void]
17
+ # #
18
+ # # ```ruby
19
+ # # drop_domain "dict.us_postal_code"
20
+ # # ```
21
+ # #
22
+ # # To make the operation invertible, use the same options
23
+ # # as in the `create_domain` operation.
24
+ # #
25
+ # # ```ruby
26
+ # # drop_domain "dict.us_postal_code", as: "string" do |d|
27
+ # # d.constraint <<~SQL, name: "code_valid"
28
+ # # VALUE ~ '^\d{5}$' OR VALUE ~ '^\d{5}-\d{4}$'
29
+ # # SQL
30
+ # # d.comment <<~COMMENT
31
+ # # US postal code
32
+ # # COMMENT
33
+ # # end
34
+ # # ```
35
+ # #
36
+ # # With the `force: :cascade` option the operation would remove
37
+ # # all the objects that use the type.
38
+ # #
39
+ # # ```ruby
40
+ # # drop_domain "dict.us_postal_code", force: :cascade
41
+ # # ```
42
+ # #
43
+ # # With the `if_exists: true` option the operation won't fail
44
+ # # even when the view was absent in the database.
45
+ # #
46
+ # # ```ruby
47
+ # # drop_domain "dict.us_postal_code", if_exists: true
48
+ # # ```
49
+ # #
50
+ # # Both options make a migration irreversible due to uncertainty
51
+ # # of the previous state of the database.
52
+ # def drop_domain(name, **options, &block); end
30
53
  # end
31
- #
32
- # With the `force: :cascade` option the operation would remove
33
- # all the objects that use the type.
34
- #
35
- # drop_domain "dict.us_postal_code", force: :cascade
36
- #
37
- # With the `if_exists: true` option the operation won't fail
38
- # even when the view was absent in the database.
39
- #
40
- # drop_domain "dict.us_postal_code", if_exists: true
41
- #
42
- # Both options make a migration irreversible due to uncertainty
43
- # of the previous state of the database.
44
-
45
54
  module PGTrunk::Operations::Domains
46
55
  # @private
47
56
  class DropDomain < Base
@@ -1,17 +1,22 @@
1
1
  # frozen_string_literal: false
2
2
 
3
- # @!method ActiveRecord::Migration#rename_domain(name, to:)
4
- # Change the name and/or schema of a domain type
5
- #
6
- # @param [#to_s] :name (nil) The qualified name of the type
7
- # @option [#to_s] :to (nil) The new qualified name for the type
8
- #
9
- # A domain type can be both renamed and moved to another schema.
10
- #
11
- # rename_domain "us_code", to: "dict.us_postal_code"
12
- #
13
- # The operation is always reversible.
14
-
3
+ # @!parse
4
+ # class ActiveRecord::Migration
5
+ # # Change the name and/or schema of a domain type
6
+ # #
7
+ # # @param [#to_s] :name (nil) The qualified name of the type
8
+ # # @option options [#to_s] :to (nil) The new qualified name for the type
9
+ # # @return [void]
10
+ # #
11
+ # # A domain type can be both renamed and moved to another schema.
12
+ # #
13
+ # # ```ruby
14
+ # # rename_domain "us_code", to: "dict.us_postal_code"
15
+ # # ```
16
+ # #
17
+ # # The operation is always reversible.
18
+ # def rename_domain(name, to:); end
19
+ # end
15
20
  module PGTrunk::Operations::Domains
16
21
  # @private
17
22
  class RenameDomain < Base
@@ -1,38 +1,43 @@
1
1
  # frozen_string_literal: false
2
2
 
3
- # @!method ActiveRecord::Migration#change_enum(name, &block)
4
- # Modify an enumerated type
5
- #
6
- # @param [#to_s] name (nil) The qualified name of the type
7
- # @yield [Proc] the block with the type's definition
8
- # @yieldparam The receiver of methods specifying the type
9
- #
10
- # The operation can be used to rename or add values to the
11
- # enumerated type. The commend can be changed as well.
12
- #
13
- # change_enum "currencies" do |e|
14
- # e.add_value "EUR", after: "BTC"
15
- # e.add_value "GBP", before: "usd"
16
- # e.add_value "JPY" # to the end of the list
17
- # e.rename_value "usd", to: "USD"
18
- # e.comment <<~COMMENT, from: <<~COMMENT
19
- # Supported currencies
20
- # COMMENT
21
- # Currencies
22
- # COMMENT
3
+ # @!parse
4
+ # class ActiveRecord::Migration
5
+ # # Modify an enumerated type
6
+ # #
7
+ # # @param [#to_s] name (nil) The qualified name of the type
8
+ # # @yield [e] the block with the type's definition
9
+ # # @yieldparam Object receiver of methods specifying the type
10
+ # # @return [void]
11
+ # #
12
+ # # The operation can be used to rename or add values to the
13
+ # # enumerated type. The commend can be changed as well.
14
+ # #
15
+ # # ```ruby
16
+ # # change_enum "currencies" do |e|
17
+ # # e.add_value "EUR", after: "BTC"
18
+ # # e.add_value "GBP", before: "usd"
19
+ # # e.add_value "JPY" # to the end of the list
20
+ # # e.rename_value "usd", to: "USD"
21
+ # # e.comment <<~COMMENT, from: <<~COMMENT
22
+ # # Supported currencies
23
+ # # COMMENT
24
+ # # Currencies
25
+ # # COMMENT
26
+ # # end
27
+ # # ```
28
+ # #
29
+ # # Please, keep in mind that all values will be added before
30
+ # # the first rename. That's why you should use old values
31
+ # # (like the `usd` instead of the `USD` in the example above)
32
+ # # in `before` and `after` options.
33
+ # #
34
+ # # Also notice that PostgreSQL doesn't support value deletion,
35
+ # # that's why adding any value makes the migration irreversible.
36
+ # #
37
+ # # It is also irreversible if you changed the comment, but
38
+ # # not defined its previous value.
39
+ # def change_enum(name, &block); end
23
40
  # end
24
- #
25
- # Please, keep in mind that all values will be added before
26
- # the first rename. That's why you should use old values
27
- # (like the `usd` instead of the `USD` in the example above)
28
- # in `before` and `after` options.
29
- #
30
- # Also notice that PostgreSQL doesn't support value deletion,
31
- # that's why adding any value makes the migration irreversible.
32
- #
33
- # It is also irreversible if you changed the comment, but
34
- # not defined its previous value.
35
-
36
41
  module PGTrunk::Operations::Enums
37
42
  # @private
38
43
  class ChangeEnum < Base
@@ -1,26 +1,29 @@
1
1
  # frozen_string_literal: false
2
2
 
3
- # @!method ActiveRecord::Migration#create_enum(name, **options, &block)
4
- # Create an enumerated type by qualified name
5
- #
6
- # @param [#to_s] name (nil) The qualified name of the type
7
- # @option [Array<#to_s>] :values ([]) The list of values
8
- # @option [#to_s] :comment (nil) The comment describing the constraint
9
- # @yield [Proc] the block with the type's definition
10
- # @yieldparam The receiver of methods specifying the type
11
- #
12
- # @example
13
- #
14
- # create_enum "finances.currency" do |e|
15
- # e.values "BTC", "EUR", "GBP", "USD"
16
- # e.value "JPY" # the alternative way to add a value to the tail
17
- # e.comment <<~COMMENT
18
- # The list of values for supported currencies.
19
- # COMMENT
3
+ # @!parse
4
+ # class ActiveRecord::Migration
5
+ # # Create an enumerated type by qualified name
6
+ # #
7
+ # # @param [#to_s] name (nil) The qualified name of the type
8
+ # # @option options [Array<#to_s>] :values ([]) The list of values
9
+ # # @option options [#to_s] :comment (nil) The comment describing the constraint
10
+ # # @yield [e] the block with the type's definition
11
+ # # @yieldparam Object receiver of methods specifying the type
12
+ # # @return [void]
13
+ # #
14
+ # # ```ruby
15
+ # # create_enum "finances.currency" do |e|
16
+ # # e.values "BTC", "EUR", "GBP", "USD"
17
+ # # e.value "JPY" # the alternative way to add a value to the tail
18
+ # # e.comment <<~COMMENT
19
+ # # The list of values for supported currencies.
20
+ # # COMMENT
21
+ # # end
22
+ # # ```
23
+ # #
24
+ # # It is always reversible.
25
+ # def create_enum(name, **options, &block); end
20
26
  # end
21
- #
22
- # It is always reversible.
23
-
24
27
  module PGTrunk::Operations::Enums
25
28
  # @private
26
29
  class CreateEnum < Base