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,45 +1,56 @@
1
1
  # frozen_string_literal: false
2
2
 
3
- # @!method ActiveRecord::Migration#drop_enum(name, **options, &block)
4
- # Drop an enumerated 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 [Array<#to_s>] :values ([]) The list of values
10
- # @option [#to_s] :comment (nil) The comment describing the constraint
11
- # @yield [Proc] the block with the type's definition
12
- # @yieldparam The receiver of methods specifying the type
13
- #
14
- # The operation drops a enumerated type identified by its
15
- # qualified name (it can include a schema).
16
- #
17
- # drop_enum "finances.currency"
18
- #
19
- # To make the operation invertible, use the same options
20
- # as in the `create_enum` operation.
21
- #
22
- # drop_enum "finances.currency" do |e|
23
- # e.values "BTC", "EUR", "GBP", "USD"
24
- # e.value "JPY" # the alternative way to add a value
25
- # e.comment <<~COMMENT
26
- # The list of values for supported currencies.
27
- # COMMENT
3
+ # @!parse
4
+ # class ActiveRecord::Migration
5
+ # # Drop an enumerated 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 [Array<#to_s>] :values ([]) The list of values
11
+ # # @option options [#to_s] :comment (nil) The comment describing the constraint
12
+ # # @yield [e] the block with the type's definition
13
+ # # @yieldparam Object receiver of methods specifying the type
14
+ # # @return [void]
15
+ # #
16
+ # # The operation drops a enumerated type identified by its
17
+ # # qualified name (it can include a schema).
18
+ # #
19
+ # # ```ruby
20
+ # # drop_enum "finances.currency"
21
+ # # ```
22
+ # #
23
+ # # To make the operation invertible, use the same options
24
+ # # as in the `create_enum` operation.
25
+ # #
26
+ # # ```ruby
27
+ # # drop_enum "finances.currency" do |e|
28
+ # # e.values "BTC", "EUR", "GBP", "USD"
29
+ # # e.value "JPY" # the alternative way to add a value
30
+ # # e.comment <<~COMMENT
31
+ # # The list of values for supported currencies.
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_enum "finances.currency", 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_enum "finances.currency", 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_enum(name, **options, &block); end
28
53
  # end
29
- #
30
- # With the `force: :cascade` option the operation would remove
31
- # all the objects that use the type.
32
- #
33
- # drop_enum "finances.currency", force: :cascade
34
- #
35
- # With the `if_exists: true` option the operation won't fail
36
- # even when the view was absent in the database.
37
- #
38
- # drop_enum "finances.currency", if_exists: true
39
- #
40
- # Both options make a migration irreversible due to uncertainty
41
- # of the previous state of the database.
42
-
43
54
  module PGTrunk::Operations::Enums
44
55
  # @private
45
56
  class DropEnum < Base
@@ -1,17 +1,22 @@
1
1
  # frozen_string_literal: false
2
2
 
3
- # @!method ActiveRecord::Migration#rename_enum(name, to:)
4
- # Change the name and/or schema of an enumerated 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_enum "currencies", to: "finances.currency"
12
- #
13
- # The operation is always reversible.
14
-
3
+ # @!parse
4
+ # class ActiveRecord::Migration
5
+ # # Change the name and/or schema of an enumerated 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
+ # # @example:
12
+ # #
13
+ # # ```ruby
14
+ # # rename_enum "currencies", to: "finances.currency"
15
+ # # ```
16
+ # #
17
+ # # The operation is always reversible.
18
+ # def rename_enum(name, to:); end
19
+ # end
15
20
  module PGTrunk::Operations::Enums
16
21
  # @private
17
22
  class RenameEnum < Base
@@ -1,55 +1,64 @@
1
1
  # frozen_string_literal: false
2
2
 
3
- # @!method ActiveRecord::Migration#add_foreign_key(table, reference, **options, &block)
4
- # Create a foreign key constraint
5
- #
6
- # @param [#to_s] table (nil) The qualified name of the table
7
- # @param [#to_s] reference (nil) The qualified name of the reference table
8
- # @option [#to_s] :name (nil) The current name of the foreign key
9
- # @option [#to_s] :to (nil) The new name for the foreign key
10
- # @option [Array<#to_s>] :columns ([]) The list of columns of the table
11
- # @option [#to_s] :column (nil) An alias for :columns for the case of single-column keys
12
- # @option [Array<#to_s>] :primary_key ([]) The list of columns of the reference table
13
- # @option [Symbol] :match (:full) Define how to match rows
14
- # Supported values: :full (default), :partial, :simple
15
- # @option [Symbol] :on_delete (:restrict)
16
- # Define how to handle the deletion of the referred row.
17
- # Supported values: :restrict (default), :cascade, :nullify, :reset
18
- # @option [Symbol] :on_update (:restrict)
19
- # Define how to handle the update of the referred row.
20
- # Supported values: :restrict (default), :cascade, :nullify, :reset
21
- # @yield [Proc] the block with the key's definition
22
- # @yieldparam The receiver of methods specifying the foreign key
23
- #
24
- # The table and reference of the new key must be set explicitly.
25
- # All the rest (including the name) can be generated by default:
26
- #
27
- # # same as `..., column: 'role_id', primary_key: 'id'`
28
- # add_foreign_key :users, :roles
29
- #
30
- # The block syntax can be used for any argument:
31
- #
32
- # add_foreign_key do |c|
33
- # c.table "users"
34
- # c.reference "roles"
35
- # c.column "role_id" # (generated by default from reference and pk)
36
- # c.primary_key "id" # (default)
37
- # c.on_update :cascade # :restrict (default)
38
- # c.on_delete :cascade # :restrict (default)
39
- # c.name "user_roles_fk" # can be generated
40
- # c.comment "Phone is 10+ chars long"
3
+ # @!parse
4
+ # class ActiveRecord::Migration
5
+ # # Create a foreign key constraint
6
+ # #
7
+ # # @param [#to_s] table (nil) The qualified name of the table
8
+ # # @param [#to_s] reference (nil) The qualified name of the reference table
9
+ # # @option options [#to_s] :name (nil) The current name of the foreign key
10
+ # # @option options [#to_s] :to (nil) The new name for the foreign key
11
+ # # @option options [Array<#to_s>] :columns ([]) The list of columns of the table
12
+ # # @option options [#to_s] :column (nil) An alias for :columns for the case of single-column keys
13
+ # # @option options [Array<#to_s>] :primary_key ([]) The list of columns of the reference table
14
+ # # @option options [Symbol] :match (:full) Define how to match rows
15
+ # # Supported values: :full (default), :partial, :simple
16
+ # # @option options [Symbol] :on_delete (:restrict)
17
+ # # Define how to handle the deletion of the referred row.
18
+ # # Supported values: :restrict (default), :cascade, :nullify, :reset
19
+ # # @option options [Symbol] :on_update (:restrict)
20
+ # # Define how to handle the update of the referred row.
21
+ # # Supported values: :restrict (default), :cascade, :nullify, :reset
22
+ # # @yield [k] the block with the key's definition
23
+ # # @yieldparam Object receiver of methods specifying the foreign key
24
+ # # @return [void]
25
+ # #
26
+ # # The table and reference of the new key must be set explicitly.
27
+ # # All the rest (including the name) can be generated by default:
28
+ # #
29
+ # # ```ruby
30
+ # # # same as `..., column: 'role_id', primary_key: 'id'`
31
+ # # add_foreign_key :users, :roles
32
+ # # ```
33
+ # #
34
+ # # The block syntax can be used for any argument:
35
+ # #
36
+ # # ```ruby
37
+ # # add_foreign_key do |k|
38
+ # # k.table "users"
39
+ # # k.reference "roles"
40
+ # # k.column "role_id" # (generated by default from reference and pk)
41
+ # # k.primary_key "id" # (default)
42
+ # # k.on_update :cascade # :restrict (default)
43
+ # # k.on_delete :cascade # :restrict (default)
44
+ # # k.name "user_roles_fk" # can be generated
45
+ # # k.comment "Phone is 10+ chars long"
46
+ # # end
47
+ # # ```
48
+ # #
49
+ # # Composite foreign keys are supported as well:
50
+ # #
51
+ # # ```ruby
52
+ # # add_foreign_key "users", "roles" do |k|
53
+ # # k.columns %w[role_name role_id]
54
+ # # k.primary_key %w[name id] # Requires unique index
55
+ # # k.match :full # :partial, :simple (default)
56
+ # # end
57
+ # # ```
58
+ # #
59
+ # # The operation is always invertible.
60
+ # def add_foreign_key(table, reference, **options, &block); end
41
61
  # end
42
- #
43
- # Composite foreign keys are supported as well:
44
- #
45
- # add_foreign_key "users", "roles" do |c|
46
- # c.columns %w[role_name role_id]
47
- # c.primary_key %w[name id] # Requires unique index
48
- # c.match :full # :partial, :simple (default)
49
- # end
50
- #
51
- # The operation is always invertible.
52
-
53
62
  module PGTrunk::Operations::ForeignKeys
54
63
  # @private
55
64
  class AddForeignKey < Base
@@ -1,54 +1,63 @@
1
1
  # frozen_string_literal: false
2
2
 
3
- # @!method ActiveRecord::Migration#drop_foreign_key(table, reference, **options, &block)
4
- # Drops a foreign key constraint
5
- #
6
- # @param [#to_s] table (nil) The qualified name of the table
7
- # @param [#to_s] reference (nil) The qualified name of the reference table
8
- # @option [#to_s] :name (nil) The current name of the foreign key
9
- # @option [Boolean] :if_exists (false) Suppress the error when the constraint is absent
10
- # @option [#to_s] :to (nil) The new name for the foreign key
11
- # @option [Array<#to_s>] :columns ([]) The list of columns of the table
12
- # @option [#to_s] :column (nil) An alias for :columns for the case of single-column keys
13
- # @option [Array<#to_s>] :primary_key ([]) The list of columns of the reference table
14
- # @option [Symbol] :match (:full) Define how to match rows
15
- # Supported values: :full (default), :partial, :simple
16
- # @option [Symbol] :on_delete (:restrict)
17
- # Define how to handle the deletion of the referred row.
18
- # Supported values: :restrict (default), :cascade, :nullify, :reset
19
- # @option [Symbol] :on_update (:restrict)
20
- # Define how to handle the update of the referred row.
21
- # Supported values: :restrict (default), :cascade, :nullify, :reset
22
- # @yield [Proc] the block with the key's definition
23
- # @yieldparam The receiver of methods specifying the foreign key
24
- #
25
- # The key can be identified by table/name (not invertible):
26
- #
27
- # drop_foreign_key "users", name: "user_roles_fk"
28
- #
29
- # To make it invertible use the same options like
30
- # in the `add_foreign_key` operation.
31
- #
32
- # drop_foreign_key do |c|
33
- # c.table "users"
34
- # c.reference "roles"
35
- # c.column "role_id"
36
- # c.primary_key "id"
37
- # c.on_update :cascade
38
- # c.on_delete :cascade
39
- # c.comment "Phone is 10+ chars long"
3
+ # @!parse
4
+ # class ActiveRecord::Migration
5
+ # # Drops a foreign key constraint
6
+ # #
7
+ # # @param [#to_s] table (nil) The qualified name of the table
8
+ # # @param [#to_s] reference (nil) The qualified name of the reference table
9
+ # # @option options [#to_s] :name (nil) The current name of the foreign key
10
+ # # @option options [Boolean] :if_exists (false) Suppress the error when the constraint is absent
11
+ # # @option options [#to_s] :to (nil) The new name for the foreign key
12
+ # # @option options [Array<#to_s>] :columns ([]) The list of columns of the table
13
+ # # @option options [#to_s] :column (nil) An alias for :columns for the case of single-column keys
14
+ # # @option options [Array<#to_s>] :primary_key ([]) The list of columns of the reference table
15
+ # # @option options [Symbol] :match (:full) Define how to match rows
16
+ # # Supported values: :full (default), :partial, :simple
17
+ # # @option options [Symbol] :on_delete (:restrict)
18
+ # # Define how to handle the deletion of the referred row.
19
+ # # Supported values: :restrict (default), :cascade, :nullify, :reset
20
+ # # @option options [Symbol] :on_update (:restrict)
21
+ # # Define how to handle the update of the referred row.
22
+ # # Supported values: :restrict (default), :cascade, :nullify, :reset
23
+ # # @yield [k] the block with the key's definition
24
+ # # @yieldparam Object receiver of methods specifying the foreign key
25
+ # # @return [void]
26
+ # #
27
+ # # The key can be identified by table/name (not invertible):
28
+ # #
29
+ # # ```ruby
30
+ # # drop_foreign_key "users", name: "user_roles_fk"
31
+ # # ```
32
+ # #
33
+ # # To make it invertible use the same options like
34
+ # # in the `add_foreign_key` operation.
35
+ # #
36
+ # # ```ruby
37
+ # # drop_foreign_key do |k|
38
+ # # k.table "users"
39
+ # # k.reference "roles"
40
+ # # k.column "role_id"
41
+ # # k.primary_key "id"
42
+ # # k.on_update :cascade
43
+ # # k.on_delete :cascade
44
+ # # k.comment "Phone is 10+ chars long"
45
+ # # end
46
+ # # ```
47
+ # #
48
+ # # Notice that the name can be skipped, in this case we would
49
+ # # find it in the database.
50
+ # #
51
+ # # The operation can be called with `if_exists` option.
52
+ # #
53
+ # # ```ruby
54
+ # # drop_foreign_key "users", name: "user_roles_fk", if_exists: true
55
+ # # ```
56
+ # #
57
+ # # In this case the operation is always irreversible due to
58
+ # # uncertainty of the previous state of the database.
59
+ # def drop_foreign_key(table, reference, **options, &block); end
40
60
  # end
41
- #
42
- # Notice that the name can be skipped, in this case we would
43
- # find it in the database.
44
- #
45
- # The operation can be called with `if_exists` option.
46
- #
47
- # drop_foreign_key "users", name: "user_roles_fk", if_exists: true
48
- #
49
- # In this case the operation is always irreversible due to
50
- # uncertainty of the previous state of the database.
51
-
52
61
  module PGTrunk::Operations::ForeignKeys
53
62
  # @private
54
63
  class DropForeignKey < Base
@@ -1,34 +1,43 @@
1
1
  # frozen_string_literal: false
2
2
 
3
- # @!method ActiveRecord::Migration#rename_foreign_key(table, reference, **options, &block)
4
- # Rename a foreign key
5
- #
6
- # @param [#to_s] table (nil) The qualified name of the table
7
- # @param [#to_s] reference (nil) The qualified name of the reference table
8
- # @option [#to_s] :name (nil) The current name of the foreign key
9
- # @option [#to_s] :to (nil) The new name for the foreign key
10
- # @option [Array<#to_s>] :columns ([]) The list of columns of the table
11
- # @option [#to_s] :column (nil) An alias for :columns for the case of single-column keys
12
- # @option [Array<#to_s>] :primary_key ([]) The list of columns of the reference table
13
- # @yield [Proc] the block with the key's definition
14
- # @yieldparam The receiver of methods specifying the foreign key
15
- #
16
- # You can rename the foreign key constraint identified by its explicit name:
17
- #
18
- # rename_foreign_key :users,
19
- # name: "user_roles_fk",
20
- # to: "constraints.users_by_roles_fk"
21
- #
22
- # The key can also be found in the database by table/reference/columns/pk
23
- #
24
- # rename_foreign_key :users, :roles, primary_key: "name", to: "user_roles"
25
- #
26
- # If a new name is missed, then the name will be reset to the auto-generated one:
27
- #
28
- # rename_foreign_key :users, "user_roles_fk"
29
- #
30
- # The operation is always reversible.
31
-
3
+ # @!parse
4
+ # class ActiveRecord::Migration
5
+ # # Rename a foreign key
6
+ # #
7
+ # # @param [#to_s] table (nil) The qualified name of the table
8
+ # # @param [#to_s] reference (nil) The qualified name of the reference table
9
+ # # @option options [#to_s] :name (nil) The current name of the foreign key
10
+ # # @option options [#to_s] :to (nil) The new name for the foreign key
11
+ # # @option options [Array<#to_s>] :columns ([]) The list of columns of the table
12
+ # # @option options [#to_s] :column (nil) An alias for :columns for the case of single-column keys
13
+ # # @option options [Array<#to_s>] :primary_key ([]) The list of columns of the reference table
14
+ # # @yield [k] the block with the key's definition
15
+ # # @yieldparam Object receiver of methods specifying the foreign key
16
+ # # @return [void]
17
+ # #
18
+ # # You can rename the foreign key constraint identified by its explicit name:
19
+ # #
20
+ # # ```ruby
21
+ # # rename_foreign_key :users,
22
+ # # name: "user_roles_fk",
23
+ # # to: "constraints.users_by_roles_fk"
24
+ # # ```
25
+ # #
26
+ # # The key can also be found in the database by table/reference/columns/pk
27
+ # #
28
+ # # ```ruby
29
+ # # rename_foreign_key :users, :roles, primary_key: "name", to: "user_roles"
30
+ # # ```
31
+ # #
32
+ # # If a new name is missed, then the name will be reset to the auto-generated one:
33
+ # #
34
+ # # ```ruby
35
+ # # rename_foreign_key :users, "user_roles_fk"
36
+ # # ```
37
+ # #
38
+ # # The operation is always reversible.
39
+ # def rename_foreign_key(table, reference, **options, &block); end
40
+ # end
32
41
  module PGTrunk::Operations::ForeignKeys
33
42
  #
34
43
  # Definition for the `rename_foreign_key` operation
@@ -1,52 +1,58 @@
1
1
  # frozen_string_literal: false
2
2
 
3
- # @!method ActiveRecord::Migration#change_function(name, **options, &block)
4
- # Modify a function
5
- #
6
- # @param [#to_s] name (nil) The qualified name of the function
7
- # @option [Boolean] :if_exists (false) Suppress the error when the function is absent
8
- # @yield [Proc] the block with the function's definition
9
- # @yieldparam The receiver of methods specifying the function
10
- #
11
- # The operation changes the function without dropping it
12
- # (which can be necessary when there are other objects
13
- # using the function and you don't want to change them all).
14
- #
15
- # You can change any property except for the name
16
- # (use `rename_function` instead) and `language`.
17
- #
18
- # change_function "math.mult(int, int)" do |f|
19
- # f.volatility :immutable, from: :stable
20
- # f.parallel :safe, from: :restricted
21
- # f.security :invoker
22
- # f.leakproof true
23
- # f.strict true
24
- # f.cost 5.0
25
- # # f.rows 1 (supported for functions returning sets of rows)
26
- # SQL
27
- #
28
- # The example above is not invertible because of uncertainty
29
- # about the previous volatility, parallelism, and cost.
30
- # To define them, use a from options (available in a block syntax only):
31
- #
32
- # change_function "math.mult(a int, b int)" do |f|
33
- # f.body <<~SQL, from: <<~SQL
34
- # SELECT a * b;
35
- # SQL
36
- # SELECT min(a * b, 1);
37
- # SQL
38
- # f.volatility :immutable, from: :volatile
39
- # f.parallel :safe, from: :unsafe
40
- # f.leakproof true
41
- # f.strict true
42
- # f.cost 5.0, from: 100.0
43
- # # f.rows 1, from: 0
44
- # SQL
45
- #
46
- # Like in the other operations, the function can be
47
- # identified by a qualified name (with types of arguments).
48
- # If it has no overloaded implementations, the plain name is supported as well.
49
-
3
+ # @!parse
4
+ # class ActiveRecord::Migration
5
+ # # Modify a function
6
+ # #
7
+ # # @param [#to_s] name (nil) The qualified name of the function
8
+ # # @option options [Boolean] :if_exists (false) Suppress the error when the function is absent
9
+ # # @yield [f] the block with the function's definition
10
+ # # @yieldparam Object receiver of methods specifying the function
11
+ # # @return [void]
12
+ # #
13
+ # # The operation changes the function without dropping it
14
+ # # (which can be necessary when there are other objects
15
+ # # using the function and you don't want to change them all).
16
+ # #
17
+ # # You can change any property except for the name
18
+ # # (use `rename_function` instead) and `language`.
19
+ # #
20
+ # # ```ruby
21
+ # # change_function "math.mult(int, int)" do |f|
22
+ # # f.volatility :immutable, from: :stable
23
+ # # f.parallel :safe, from: :restricted
24
+ # # f.security :invoker
25
+ # # f.leakproof true
26
+ # # f.strict true
27
+ # # f.cost 5.0
28
+ # # # f.rows 1 (supported for functions returning sets of rows)
29
+ # # SQL
30
+ # # ```
31
+ # #
32
+ # # The example above is not invertible because of uncertainty
33
+ # # about the previous volatility, parallelism, and cost.
34
+ # # To define them, use a from options (available in a block syntax only):
35
+ # #
36
+ # # ```ruby
37
+ # # change_function "math.mult(a int, b int)" do |f|
38
+ # # f.body <<~SQL, from: <<~SQL
39
+ # # SELECT a * b;
40
+ # # SQL
41
+ # # SELECT min(a * b, 1);
42
+ # # SQL
43
+ # # f.volatility :immutable, from: :volatile
44
+ # # f.parallel :safe, from: :unsafe
45
+ # # f.leakproof true
46
+ # # f.strict true
47
+ # # f.cost 5.0, from: 100.0
48
+ # # SQL
49
+ # # ```
50
+ # #
51
+ # # Like in the other operations, the function can be
52
+ # # identified by a qualified name (with types of arguments).
53
+ # # If it has no overloaded implementations, the plain name is supported as well.
54
+ # def change_function(name, **options, &block); end
55
+ # end
50
56
  module PGTrunk::Operations::Functions
51
57
  # @private
52
58
  class ChangeFunction < Base