Module: DynamicMigrations::Postgres::Generator::UniqueConstraint
- Included in:
- DynamicMigrations::Postgres::Generator
- Defined in:
- lib/dynamic_migrations/postgres/generator/unique_constraint.rb
Instance Method Summary collapse
- #add_unique_constraint(unique_constraint, code_comment = nil) ⇒ Object
- #recreate_unique_constraint(original_unique_constraint, updated_unique_constraint) ⇒ Object
- #remove_unique_constraint(unique_constraint, code_comment = nil) ⇒ Object
-
#remove_unique_constraint_comment(unique_constraint, code_comment = nil) ⇒ Object
remove the comment from a unique_constraint.
-
#set_unique_constraint_comment(unique_constraint, code_comment = nil) ⇒ Object
add a comment to a unique_constraint.
Instance Method Details
#add_unique_constraint(unique_constraint, code_comment = nil) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/dynamic_migrations/postgres/generator/unique_constraint.rb', line 5 def add_unique_constraint unique_constraint, code_comment = nil # the migration accepts either a single column name or an array of column names # we use the appropriate syntax just to make the migration prettier and easier # to understand column_names = (unique_constraint.column_names.count == 1) ? ":#{unique_constraint.column_names.first}" : "[:#{unique_constraint.column_names.join(", :")}]" = { name: ":#{unique_constraint.name}", deferrable: unique_constraint.deferrable, initially_deferred: unique_constraint.initially_deferred } unless unique_constraint.description.nil? [:comment] = <<~RUBY <<~COMMENT #{indent unique_constraint.description} COMMENT RUBY end = .map { |k, v| "#{k}: #{v}" }.join(", ") add_fragment schema: unique_constraint.table.schema, table: unique_constraint.table, migration_method: :add_unique_constraint, object: unique_constraint, code_comment: code_comment, migration: <<~RUBY add_unique_constraint :#{unique_constraint.table.name}, #{column_names}, #{} RUBY end |
#recreate_unique_constraint(original_unique_constraint, updated_unique_constraint) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/dynamic_migrations/postgres/generator/unique_constraint.rb', line 48 def recreate_unique_constraint original_unique_constraint, updated_unique_constraint # remove the original unique_constraint removal_fragment = remove_unique_constraint original_unique_constraint, <<~CODE_COMMENT Removing original unique constraint because it has changed (it is recreated below) Changes: #{indent original_unique_constraint.differences_descriptions(updated_unique_constraint).join("\n")} CODE_COMMENT # recrete the unique_constraint with the new options recreation_fragment = add_unique_constraint updated_unique_constraint, <<~CODE_COMMENT Recreating this unique constraint CODE_COMMENT # return the new fragments (the main reason to return them here is for the specs) [removal_fragment, recreation_fragment] end |
#remove_unique_constraint(unique_constraint, code_comment = nil) ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/dynamic_migrations/postgres/generator/unique_constraint.rb', line 37 def remove_unique_constraint unique_constraint, code_comment = nil add_fragment schema: unique_constraint.table.schema, table: unique_constraint.table, migration_method: :remove_unique_constraint, object: unique_constraint, code_comment: code_comment, migration: <<~RUBY remove_unique_constraint :#{unique_constraint.table.name}, :#{unique_constraint.name} RUBY end |
#remove_unique_constraint_comment(unique_constraint, code_comment = nil) ⇒ Object
remove the comment from a unique_constraint
86 87 88 89 90 91 92 93 94 95 |
# File 'lib/dynamic_migrations/postgres/generator/unique_constraint.rb', line 86 def remove_unique_constraint_comment unique_constraint, code_comment = nil add_fragment schema: unique_constraint.table.schema, table: unique_constraint.table, migration_method: :remove_unique_constraint_comment, object: unique_constraint, code_comment: code_comment, migration: <<~RUBY remove_unique_constraint_comment :#{unique_constraint.table.name}, :#{unique_constraint.name} RUBY end |
#set_unique_constraint_comment(unique_constraint, code_comment = nil) ⇒ Object
add a comment to a unique_constraint
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/dynamic_migrations/postgres/generator/unique_constraint.rb', line 66 def set_unique_constraint_comment unique_constraint, code_comment = nil description = unique_constraint.description if description.nil? raise MissingDescriptionError, "Missing required description for unique_constraint `#{unique_constraint.name}` in table `#{unique_constraint.table.schema.name}.#{unique_constraint.table.name}`" end add_fragment schema: unique_constraint.table.schema, table: unique_constraint.table, migration_method: :set_unique_constraint_comment, object: unique_constraint, code_comment: code_comment, migration: <<~RUBY set_unique_constraint_comment :#{unique_constraint.table.name}, :#{unique_constraint.name}, <<~COMMENT #{indent description} COMMENT RUBY end |